blob: a247658953e4aaf03018079fb737f31a1a25bed1 [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 Yang60b411d2018-11-29 00:26:45 -080031#include "Validation.h"
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070032#include "VulkanStream.h"
33
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080034#include "android/base/AlignedBuf.h"
Lingfeng Yang71b596b2018-11-07 18:03:25 -080035#include "android/base/Pool.h"
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080036
Lingfeng Yange71c6422018-11-01 19:29:49 -070037#include "goldfish_vk_marshaling_guest.h"
Lingfeng Yang71b596b2018-11-07 18:03:25 -080038#include "goldfish_vk_deepcopy_guest.h"
39#include "goldfish_vk_handlemap_guest.h"
Lingfeng Yange71c6422018-11-01 19:29:49 -070040
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070041
42
43
44
45
Lingfeng Yang71b596b2018-11-07 18:03:25 -080046using namespace goldfish_vk;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070047
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080048using android::aligned_buf_alloc;
49using android::aligned_buf_free;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080050using android::base::Pool;
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080051
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070052class VkEncoder::Impl {
53public:
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070054 Impl(IOStream* stream) : m_stream(stream) { }
55 VulkanCountingStream* countingStream() { return &m_countingStream; }
56 VulkanStream* stream() { return &m_stream; }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080057 Pool* pool() { return &m_pool; }
58 ResourceTracker* resources() { return ResourceTracker::get(); }
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070059private:
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070060 VulkanCountingStream m_countingStream;
61 VulkanStream m_stream;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080062 Pool m_pool { 8, 4096, 64 };
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070063};
64
65VkEncoder::VkEncoder(IOStream *stream) :
66 mImpl(new VkEncoder::Impl(stream)) { }
Lingfeng Yang60b411d2018-11-29 00:26:45 -080067
68#define VALIDATE_RET(retType, success, validate) \
69 retType goldfish_vk_validateResult = validate; \
70 if (goldfish_vk_validateResult != success) return goldfish_vk_validateResult; \
71
72#define VALIDATE_VOID(validate) \
73 VkResult goldfish_vk_validateResult = validate; \
74 if (goldfish_vk_validateResult != VK_SUCCESS) return; \
75
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070076#ifdef VK_VERSION_1_0
77VkResult VkEncoder::vkCreateInstance(
78 const VkInstanceCreateInfo* pCreateInfo,
79 const VkAllocationCallbacks* pAllocator,
80 VkInstance* pInstance)
81{
82 auto stream = mImpl->stream();
83 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080084 auto resources = mImpl->resources();
85 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080086 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080087 VkInstanceCreateInfo* local_pCreateInfo;
88 local_pCreateInfo = nullptr;
89 if (pCreateInfo)
90 {
91 local_pCreateInfo = (VkInstanceCreateInfo*)pool->alloc(sizeof(const VkInstanceCreateInfo));
92 deepcopy_VkInstanceCreateInfo(pool, pCreateInfo, (VkInstanceCreateInfo*)(local_pCreateInfo));
93 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080094 VkAllocationCallbacks* local_pAllocator;
95 local_pAllocator = nullptr;
96 if (pAllocator)
97 {
98 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
99 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
100 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800101 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700102 countingStream->rewind();
103 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800104 marshal_VkInstanceCreateInfo(countingStream, (VkInstanceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800105 // WARNING PTR CHECK
106 uint64_t cgen_var_0 = (uint64_t)(uintptr_t)local_pAllocator;
107 countingStream->putBe64(cgen_var_0);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800108 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700109 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800110 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700111 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800112 uint64_t cgen_var_1;
113 countingStream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_1, 1);
114 countingStream->write((uint64_t*)&cgen_var_1, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700115 }
116 uint32_t packetSize_vkCreateInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
117 countingStream->rewind();
118 uint32_t opcode_vkCreateInstance = OP_vkCreateInstance;
119 stream->write(&opcode_vkCreateInstance, sizeof(uint32_t));
120 stream->write(&packetSize_vkCreateInstance, sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800121 marshal_VkInstanceCreateInfo(stream, (VkInstanceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800122 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800123 uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator;
124 stream->putBe64(cgen_var_2);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800125 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700126 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800127 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700128 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800129 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -0800130 uint64_t cgen_var_3;
131 stream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_3, 1);
132 stream->write((uint64_t*)&cgen_var_3, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800133 stream->setHandleMapping(resources->unwrapMapping());
134 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -0800135 uint64_t cgen_var_4;
136 stream->read((uint64_t*)&cgen_var_4, 8);
137 stream->handleMapping()->mapHandles_u64_VkInstance(&cgen_var_4, (VkInstance*)pInstance, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800138 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700139 VkResult vkCreateInstance_VkResult_return = (VkResult)0;
140 stream->read(&vkCreateInstance_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800141 countingStream->clearPool();
142 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800143 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700144 return vkCreateInstance_VkResult_return;
145}
146
147void VkEncoder::vkDestroyInstance(
148 VkInstance instance,
149 const VkAllocationCallbacks* pAllocator)
150{
151 auto stream = mImpl->stream();
152 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800153 auto resources = mImpl->resources();
154 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800155 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800156 VkInstance local_instance;
157 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800158 VkAllocationCallbacks* local_pAllocator;
159 local_pAllocator = nullptr;
160 if (pAllocator)
161 {
162 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
163 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
164 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800165 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700166 countingStream->rewind();
167 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800168 uint64_t cgen_var_5;
169 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_5, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800170 countingStream->write((uint64_t*)&cgen_var_5, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800171 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800172 uint64_t cgen_var_6 = (uint64_t)(uintptr_t)local_pAllocator;
173 countingStream->putBe64(cgen_var_6);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800174 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700175 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800176 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700177 }
178 }
179 uint32_t packetSize_vkDestroyInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
180 countingStream->rewind();
181 uint32_t opcode_vkDestroyInstance = OP_vkDestroyInstance;
182 stream->write(&opcode_vkDestroyInstance, sizeof(uint32_t));
183 stream->write(&packetSize_vkDestroyInstance, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800184 uint64_t cgen_var_7;
185 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_7, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800186 stream->write((uint64_t*)&cgen_var_7, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800187 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800188 uint64_t cgen_var_8 = (uint64_t)(uintptr_t)local_pAllocator;
189 stream->putBe64(cgen_var_8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800190 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700191 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800192 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700193 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800194 resources->destroyMapping()->mapHandles_VkInstance((VkInstance*)&instance);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700195}
196
197VkResult VkEncoder::vkEnumeratePhysicalDevices(
198 VkInstance instance,
199 uint32_t* pPhysicalDeviceCount,
200 VkPhysicalDevice* pPhysicalDevices)
201{
202 auto stream = mImpl->stream();
203 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800204 auto resources = mImpl->resources();
205 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800206 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800207 VkInstance local_instance;
208 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700209 countingStream->rewind();
210 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800211 uint64_t cgen_var_9;
212 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_9, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800213 countingStream->write((uint64_t*)&cgen_var_9, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800214 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800215 uint64_t cgen_var_10 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
216 countingStream->putBe64(cgen_var_10);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700217 if (pPhysicalDeviceCount)
218 {
219 countingStream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
220 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800221 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800222 uint64_t cgen_var_11 = (uint64_t)(uintptr_t)pPhysicalDevices;
223 countingStream->putBe64(cgen_var_11);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700224 if (pPhysicalDevices)
225 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800226 if ((*(pPhysicalDeviceCount)))
227 {
228 uint64_t* cgen_var_12;
229 countingStream->alloc((void**)&cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
230 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_12, (*(pPhysicalDeviceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -0800231 countingStream->write((uint64_t*)cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800232 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700233 }
234 }
235 uint32_t packetSize_vkEnumeratePhysicalDevices = 4 + 4 + (uint32_t)countingStream->bytesWritten();
236 countingStream->rewind();
237 uint32_t opcode_vkEnumeratePhysicalDevices = OP_vkEnumeratePhysicalDevices;
238 stream->write(&opcode_vkEnumeratePhysicalDevices, sizeof(uint32_t));
239 stream->write(&packetSize_vkEnumeratePhysicalDevices, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800240 uint64_t cgen_var_13;
241 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_13, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800242 stream->write((uint64_t*)&cgen_var_13, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800243 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800244 uint64_t cgen_var_14 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
245 stream->putBe64(cgen_var_14);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700246 if (pPhysicalDeviceCount)
247 {
248 stream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
249 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800250 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800251 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800252 uint64_t cgen_var_15 = (uint64_t)(uintptr_t)pPhysicalDevices;
253 stream->putBe64(cgen_var_15);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700254 if (pPhysicalDevices)
255 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800256 if ((*(pPhysicalDeviceCount)))
257 {
258 uint64_t* cgen_var_16;
259 stream->alloc((void**)&cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
260 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_16, (*(pPhysicalDeviceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -0800261 stream->write((uint64_t*)cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800262 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700263 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800264 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800265 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700266 uint32_t* check_pPhysicalDeviceCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800267 check_pPhysicalDeviceCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700268 if (pPhysicalDeviceCount)
269 {
270 if (!(check_pPhysicalDeviceCount))
271 {
272 fprintf(stderr, "fatal: pPhysicalDeviceCount inconsistent between guest and host\n");
273 }
274 stream->read((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
275 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800276 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800277 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700278 VkPhysicalDevice* check_pPhysicalDevices;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800279 check_pPhysicalDevices = (VkPhysicalDevice*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700280 if (pPhysicalDevices)
281 {
282 if (!(check_pPhysicalDevices))
283 {
284 fprintf(stderr, "fatal: pPhysicalDevices inconsistent between guest and host\n");
285 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800286 if ((*(pPhysicalDeviceCount)))
287 {
288 uint64_t* cgen_var_19;
289 stream->alloc((void**)&cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800290 stream->read((uint64_t*)cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800291 stream->handleMapping()->mapHandles_u64_VkPhysicalDevice(cgen_var_19, (VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount)));
292 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700293 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800294 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700295 VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
296 stream->read(&vkEnumeratePhysicalDevices_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800297 countingStream->clearPool();
298 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800299 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700300 return vkEnumeratePhysicalDevices_VkResult_return;
301}
302
303void VkEncoder::vkGetPhysicalDeviceFeatures(
304 VkPhysicalDevice physicalDevice,
305 VkPhysicalDeviceFeatures* pFeatures)
306{
307 auto stream = mImpl->stream();
308 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800309 auto resources = mImpl->resources();
310 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800311 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800312 VkPhysicalDevice local_physicalDevice;
313 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700314 countingStream->rewind();
315 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800316 uint64_t cgen_var_20;
317 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_20, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800318 countingStream->write((uint64_t*)&cgen_var_20, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700319 marshal_VkPhysicalDeviceFeatures(countingStream, (VkPhysicalDeviceFeatures*)(pFeatures));
320 }
321 uint32_t packetSize_vkGetPhysicalDeviceFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
322 countingStream->rewind();
323 uint32_t opcode_vkGetPhysicalDeviceFeatures = OP_vkGetPhysicalDeviceFeatures;
324 stream->write(&opcode_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
325 stream->write(&packetSize_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800326 uint64_t cgen_var_21;
327 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_21, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800328 stream->write((uint64_t*)&cgen_var_21, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700329 marshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
330 unmarshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
331}
332
333void VkEncoder::vkGetPhysicalDeviceFormatProperties(
334 VkPhysicalDevice physicalDevice,
335 VkFormat format,
336 VkFormatProperties* pFormatProperties)
337{
338 auto stream = mImpl->stream();
339 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800340 auto resources = mImpl->resources();
341 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800342 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800343 VkPhysicalDevice local_physicalDevice;
344 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800345 VkFormat local_format;
346 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700347 countingStream->rewind();
348 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800349 uint64_t cgen_var_22;
350 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_22, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800351 countingStream->write((uint64_t*)&cgen_var_22, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800352 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700353 marshal_VkFormatProperties(countingStream, (VkFormatProperties*)(pFormatProperties));
354 }
355 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
356 countingStream->rewind();
357 uint32_t opcode_vkGetPhysicalDeviceFormatProperties = OP_vkGetPhysicalDeviceFormatProperties;
358 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
359 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800360 uint64_t cgen_var_23;
361 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_23, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800362 stream->write((uint64_t*)&cgen_var_23, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800363 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700364 marshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
365 unmarshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
366}
367
368VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties(
369 VkPhysicalDevice physicalDevice,
370 VkFormat format,
371 VkImageType type,
372 VkImageTiling tiling,
373 VkImageUsageFlags usage,
374 VkImageCreateFlags flags,
375 VkImageFormatProperties* pImageFormatProperties)
376{
377 auto stream = mImpl->stream();
378 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800379 auto resources = mImpl->resources();
380 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800381 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800382 VkPhysicalDevice local_physicalDevice;
383 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800384 VkFormat local_format;
385 local_format = format;
386 VkImageType local_type;
387 local_type = type;
388 VkImageTiling local_tiling;
389 local_tiling = tiling;
390 VkImageUsageFlags local_usage;
391 local_usage = usage;
392 VkImageCreateFlags local_flags;
393 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700394 countingStream->rewind();
395 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800396 uint64_t cgen_var_24;
397 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_24, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800398 countingStream->write((uint64_t*)&cgen_var_24, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800399 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
400 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
401 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
402 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
403 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700404 marshal_VkImageFormatProperties(countingStream, (VkImageFormatProperties*)(pImageFormatProperties));
405 }
406 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
407 countingStream->rewind();
408 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties = OP_vkGetPhysicalDeviceImageFormatProperties;
409 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
410 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800411 uint64_t cgen_var_25;
412 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_25, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800413 stream->write((uint64_t*)&cgen_var_25, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800414 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
415 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
416 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
417 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
418 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700419 marshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
420 unmarshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
421 VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
422 stream->read(&vkGetPhysicalDeviceImageFormatProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800423 countingStream->clearPool();
424 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800425 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700426 return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
427}
428
429void VkEncoder::vkGetPhysicalDeviceProperties(
430 VkPhysicalDevice physicalDevice,
431 VkPhysicalDeviceProperties* pProperties)
432{
433 auto stream = mImpl->stream();
434 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800435 auto resources = mImpl->resources();
436 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800437 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800438 VkPhysicalDevice local_physicalDevice;
439 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700440 countingStream->rewind();
441 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800442 uint64_t cgen_var_26;
443 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_26, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800444 countingStream->write((uint64_t*)&cgen_var_26, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700445 marshal_VkPhysicalDeviceProperties(countingStream, (VkPhysicalDeviceProperties*)(pProperties));
446 }
447 uint32_t packetSize_vkGetPhysicalDeviceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
448 countingStream->rewind();
449 uint32_t opcode_vkGetPhysicalDeviceProperties = OP_vkGetPhysicalDeviceProperties;
450 stream->write(&opcode_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
451 stream->write(&packetSize_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800452 uint64_t cgen_var_27;
453 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_27, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800454 stream->write((uint64_t*)&cgen_var_27, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700455 marshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
456 unmarshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
457}
458
459void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties(
460 VkPhysicalDevice physicalDevice,
461 uint32_t* pQueueFamilyPropertyCount,
462 VkQueueFamilyProperties* pQueueFamilyProperties)
463{
464 auto stream = mImpl->stream();
465 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800466 auto resources = mImpl->resources();
467 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800468 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800469 VkPhysicalDevice local_physicalDevice;
470 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700471 countingStream->rewind();
472 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800473 uint64_t cgen_var_28;
474 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_28, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800475 countingStream->write((uint64_t*)&cgen_var_28, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800476 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800477 uint64_t cgen_var_29 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
478 countingStream->putBe64(cgen_var_29);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700479 if (pQueueFamilyPropertyCount)
480 {
481 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
482 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800483 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800484 uint64_t cgen_var_30 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
485 countingStream->putBe64(cgen_var_30);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700486 if (pQueueFamilyProperties)
487 {
488 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
489 {
490 marshal_VkQueueFamilyProperties(countingStream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
491 }
492 }
493 }
494 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
495 countingStream->rewind();
496 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties = OP_vkGetPhysicalDeviceQueueFamilyProperties;
497 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
498 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800499 uint64_t cgen_var_31;
500 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_31, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800501 stream->write((uint64_t*)&cgen_var_31, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800502 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800503 uint64_t cgen_var_32 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
504 stream->putBe64(cgen_var_32);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700505 if (pQueueFamilyPropertyCount)
506 {
507 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
508 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800509 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800510 uint64_t cgen_var_33 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
511 stream->putBe64(cgen_var_33);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700512 if (pQueueFamilyProperties)
513 {
514 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
515 {
516 marshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
517 }
518 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800519 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700520 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800521 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700522 if (pQueueFamilyPropertyCount)
523 {
524 if (!(check_pQueueFamilyPropertyCount))
525 {
526 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
527 }
528 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
529 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800530 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700531 VkQueueFamilyProperties* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800532 check_pQueueFamilyProperties = (VkQueueFamilyProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700533 if (pQueueFamilyProperties)
534 {
535 if (!(check_pQueueFamilyProperties))
536 {
537 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
538 }
539 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
540 {
541 unmarshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
542 }
543 }
544}
545
546void VkEncoder::vkGetPhysicalDeviceMemoryProperties(
547 VkPhysicalDevice physicalDevice,
548 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
549{
550 auto stream = mImpl->stream();
551 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800552 auto resources = mImpl->resources();
553 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800554 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800555 VkPhysicalDevice local_physicalDevice;
556 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700557 countingStream->rewind();
558 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800559 uint64_t cgen_var_36;
560 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_36, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800561 countingStream->write((uint64_t*)&cgen_var_36, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700562 marshal_VkPhysicalDeviceMemoryProperties(countingStream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
563 }
564 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
565 countingStream->rewind();
566 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties = OP_vkGetPhysicalDeviceMemoryProperties;
567 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
568 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800569 uint64_t cgen_var_37;
570 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_37, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800571 stream->write((uint64_t*)&cgen_var_37, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700572 marshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
573 unmarshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
574}
575
576PFN_vkVoidFunction VkEncoder::vkGetInstanceProcAddr(
577 VkInstance instance,
578 const char* pName)
579{
580 auto stream = mImpl->stream();
581 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800582 auto resources = mImpl->resources();
583 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800584 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800585 VkInstance local_instance;
586 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800587 char* local_pName;
588 local_pName = nullptr;
589 if (pName)
590 {
591 local_pName = pool->strDup(pName);
592 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700593 countingStream->rewind();
594 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800595 uint64_t cgen_var_38;
596 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_38, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800597 countingStream->write((uint64_t*)&cgen_var_38, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800598 countingStream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700599 }
600 uint32_t packetSize_vkGetInstanceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
601 countingStream->rewind();
602 uint32_t opcode_vkGetInstanceProcAddr = OP_vkGetInstanceProcAddr;
603 stream->write(&opcode_vkGetInstanceProcAddr, sizeof(uint32_t));
604 stream->write(&packetSize_vkGetInstanceProcAddr, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800605 uint64_t cgen_var_39;
606 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_39, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800607 stream->write((uint64_t*)&cgen_var_39, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800608 stream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700609 PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
610 stream->read(&vkGetInstanceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800611 countingStream->clearPool();
612 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800613 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700614 return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
615}
616
617PFN_vkVoidFunction VkEncoder::vkGetDeviceProcAddr(
618 VkDevice device,
619 const char* pName)
620{
621 auto stream = mImpl->stream();
622 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800623 auto resources = mImpl->resources();
624 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800625 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800626 VkDevice local_device;
627 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800628 char* local_pName;
629 local_pName = nullptr;
630 if (pName)
631 {
632 local_pName = pool->strDup(pName);
633 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700634 countingStream->rewind();
635 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800636 uint64_t cgen_var_40;
637 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_40, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800638 countingStream->write((uint64_t*)&cgen_var_40, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800639 countingStream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700640 }
641 uint32_t packetSize_vkGetDeviceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
642 countingStream->rewind();
643 uint32_t opcode_vkGetDeviceProcAddr = OP_vkGetDeviceProcAddr;
644 stream->write(&opcode_vkGetDeviceProcAddr, sizeof(uint32_t));
645 stream->write(&packetSize_vkGetDeviceProcAddr, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800646 uint64_t cgen_var_41;
647 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_41, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800648 stream->write((uint64_t*)&cgen_var_41, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800649 stream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700650 PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
651 stream->read(&vkGetDeviceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800652 countingStream->clearPool();
653 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800654 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700655 return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
656}
657
658VkResult VkEncoder::vkCreateDevice(
659 VkPhysicalDevice physicalDevice,
660 const VkDeviceCreateInfo* pCreateInfo,
661 const VkAllocationCallbacks* pAllocator,
662 VkDevice* pDevice)
663{
664 auto stream = mImpl->stream();
665 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800666 auto resources = mImpl->resources();
667 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800668 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800669 VkPhysicalDevice local_physicalDevice;
670 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800671 VkDeviceCreateInfo* local_pCreateInfo;
672 local_pCreateInfo = nullptr;
673 if (pCreateInfo)
674 {
675 local_pCreateInfo = (VkDeviceCreateInfo*)pool->alloc(sizeof(const VkDeviceCreateInfo));
676 deepcopy_VkDeviceCreateInfo(pool, pCreateInfo, (VkDeviceCreateInfo*)(local_pCreateInfo));
677 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800678 VkAllocationCallbacks* local_pAllocator;
679 local_pAllocator = nullptr;
680 if (pAllocator)
681 {
682 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
683 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
684 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800685 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700686 countingStream->rewind();
687 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800688 uint64_t cgen_var_42;
689 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_42, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800690 countingStream->write((uint64_t*)&cgen_var_42, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800691 marshal_VkDeviceCreateInfo(countingStream, (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800692 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800693 uint64_t cgen_var_43 = (uint64_t)(uintptr_t)local_pAllocator;
694 countingStream->putBe64(cgen_var_43);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800695 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700696 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800697 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700698 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800699 uint64_t cgen_var_44;
700 countingStream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_44, 1);
701 countingStream->write((uint64_t*)&cgen_var_44, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700702 }
703 uint32_t packetSize_vkCreateDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
704 countingStream->rewind();
705 uint32_t opcode_vkCreateDevice = OP_vkCreateDevice;
706 stream->write(&opcode_vkCreateDevice, sizeof(uint32_t));
707 stream->write(&packetSize_vkCreateDevice, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800708 uint64_t cgen_var_45;
709 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_45, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800710 stream->write((uint64_t*)&cgen_var_45, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800711 marshal_VkDeviceCreateInfo(stream, (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800712 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800713 uint64_t cgen_var_46 = (uint64_t)(uintptr_t)local_pAllocator;
714 stream->putBe64(cgen_var_46);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800715 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700716 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800717 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700718 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800719 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -0800720 uint64_t cgen_var_47;
721 stream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_47, 1);
722 stream->write((uint64_t*)&cgen_var_47, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800723 stream->setHandleMapping(resources->unwrapMapping());
724 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -0800725 uint64_t cgen_var_48;
726 stream->read((uint64_t*)&cgen_var_48, 8);
727 stream->handleMapping()->mapHandles_u64_VkDevice(&cgen_var_48, (VkDevice*)pDevice, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800728 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700729 VkResult vkCreateDevice_VkResult_return = (VkResult)0;
730 stream->read(&vkCreateDevice_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800731 countingStream->clearPool();
732 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800733 pool->freeAll();
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -0800734 goldfish_vkCreateDevice(this, vkCreateDevice_VkResult_return, physicalDevice, pCreateInfo, pAllocator, pDevice);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700735 return vkCreateDevice_VkResult_return;
736}
737
738void VkEncoder::vkDestroyDevice(
739 VkDevice device,
740 const VkAllocationCallbacks* pAllocator)
741{
742 auto stream = mImpl->stream();
743 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800744 auto resources = mImpl->resources();
745 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800746 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800747 VkDevice local_device;
748 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800749 VkAllocationCallbacks* local_pAllocator;
750 local_pAllocator = nullptr;
751 if (pAllocator)
752 {
753 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
754 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
755 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800756 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700757 countingStream->rewind();
758 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800759 uint64_t cgen_var_49;
760 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_49, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800761 countingStream->write((uint64_t*)&cgen_var_49, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800762 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800763 uint64_t cgen_var_50 = (uint64_t)(uintptr_t)local_pAllocator;
764 countingStream->putBe64(cgen_var_50);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800765 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700766 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800767 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700768 }
769 }
770 uint32_t packetSize_vkDestroyDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
771 countingStream->rewind();
772 uint32_t opcode_vkDestroyDevice = OP_vkDestroyDevice;
773 stream->write(&opcode_vkDestroyDevice, sizeof(uint32_t));
774 stream->write(&packetSize_vkDestroyDevice, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800775 uint64_t cgen_var_51;
776 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_51, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800777 stream->write((uint64_t*)&cgen_var_51, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800778 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800779 uint64_t cgen_var_52 = (uint64_t)(uintptr_t)local_pAllocator;
780 stream->putBe64(cgen_var_52);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800781 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700782 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800783 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700784 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800785 resources->destroyMapping()->mapHandles_VkDevice((VkDevice*)&device);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700786}
787
788VkResult VkEncoder::vkEnumerateInstanceExtensionProperties(
789 const char* pLayerName,
790 uint32_t* pPropertyCount,
791 VkExtensionProperties* pProperties)
792{
793 auto stream = mImpl->stream();
794 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800795 auto resources = mImpl->resources();
796 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800797 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800798 char* local_pLayerName;
799 local_pLayerName = nullptr;
800 if (pLayerName)
801 {
802 local_pLayerName = pool->strDup(pLayerName);
803 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700804 countingStream->rewind();
805 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800806 countingStream->putString(local_pLayerName);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800807 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800808 uint64_t cgen_var_53 = (uint64_t)(uintptr_t)pPropertyCount;
809 countingStream->putBe64(cgen_var_53);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700810 if (pPropertyCount)
811 {
812 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
813 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800814 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800815 uint64_t cgen_var_54 = (uint64_t)(uintptr_t)pProperties;
816 countingStream->putBe64(cgen_var_54);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700817 if (pProperties)
818 {
819 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
820 {
821 marshal_VkExtensionProperties(countingStream, (VkExtensionProperties*)(pProperties + i));
822 }
823 }
824 }
825 uint32_t packetSize_vkEnumerateInstanceExtensionProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
826 countingStream->rewind();
827 uint32_t opcode_vkEnumerateInstanceExtensionProperties = OP_vkEnumerateInstanceExtensionProperties;
828 stream->write(&opcode_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
829 stream->write(&packetSize_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800830 stream->putString(local_pLayerName);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800831 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800832 uint64_t cgen_var_55 = (uint64_t)(uintptr_t)pPropertyCount;
833 stream->putBe64(cgen_var_55);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700834 if (pPropertyCount)
835 {
836 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
837 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800838 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800839 uint64_t cgen_var_56 = (uint64_t)(uintptr_t)pProperties;
840 stream->putBe64(cgen_var_56);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700841 if (pProperties)
842 {
843 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
844 {
845 marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
846 }
847 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800848 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700849 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800850 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700851 if (pPropertyCount)
852 {
853 if (!(check_pPropertyCount))
854 {
855 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
856 }
857 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
858 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800859 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700860 VkExtensionProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800861 check_pProperties = (VkExtensionProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700862 if (pProperties)
863 {
864 if (!(check_pProperties))
865 {
866 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
867 }
868 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
869 {
870 unmarshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
871 }
872 }
873 VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
874 stream->read(&vkEnumerateInstanceExtensionProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800875 countingStream->clearPool();
876 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800877 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700878 return vkEnumerateInstanceExtensionProperties_VkResult_return;
879}
880
881VkResult VkEncoder::vkEnumerateDeviceExtensionProperties(
882 VkPhysicalDevice physicalDevice,
883 const char* pLayerName,
884 uint32_t* pPropertyCount,
885 VkExtensionProperties* pProperties)
886{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700887 VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -0800888 vkEnumerateDeviceExtensionProperties_VkResult_return = goldfish_vkEnumerateDeviceExtensionProperties(this, vkEnumerateDeviceExtensionProperties_VkResult_return, physicalDevice, pLayerName, pPropertyCount, pProperties);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700889 return vkEnumerateDeviceExtensionProperties_VkResult_return;
890}
891
892VkResult VkEncoder::vkEnumerateInstanceLayerProperties(
893 uint32_t* pPropertyCount,
894 VkLayerProperties* pProperties)
895{
896 auto stream = mImpl->stream();
897 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800898 auto resources = mImpl->resources();
899 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800900 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700901 countingStream->rewind();
902 {
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800903 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800904 uint64_t cgen_var_59 = (uint64_t)(uintptr_t)pPropertyCount;
905 countingStream->putBe64(cgen_var_59);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700906 if (pPropertyCount)
907 {
908 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
909 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800910 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800911 uint64_t cgen_var_60 = (uint64_t)(uintptr_t)pProperties;
912 countingStream->putBe64(cgen_var_60);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700913 if (pProperties)
914 {
915 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
916 {
917 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
918 }
919 }
920 }
921 uint32_t packetSize_vkEnumerateInstanceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
922 countingStream->rewind();
923 uint32_t opcode_vkEnumerateInstanceLayerProperties = OP_vkEnumerateInstanceLayerProperties;
924 stream->write(&opcode_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
925 stream->write(&packetSize_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800926 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800927 uint64_t cgen_var_61 = (uint64_t)(uintptr_t)pPropertyCount;
928 stream->putBe64(cgen_var_61);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700929 if (pPropertyCount)
930 {
931 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
932 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800933 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800934 uint64_t cgen_var_62 = (uint64_t)(uintptr_t)pProperties;
935 stream->putBe64(cgen_var_62);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700936 if (pProperties)
937 {
938 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
939 {
940 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
941 }
942 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800943 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700944 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800945 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700946 if (pPropertyCount)
947 {
948 if (!(check_pPropertyCount))
949 {
950 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
951 }
952 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
953 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800954 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700955 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800956 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700957 if (pProperties)
958 {
959 if (!(check_pProperties))
960 {
961 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
962 }
963 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
964 {
965 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
966 }
967 }
968 VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
969 stream->read(&vkEnumerateInstanceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800970 countingStream->clearPool();
971 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800972 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700973 return vkEnumerateInstanceLayerProperties_VkResult_return;
974}
975
976VkResult VkEncoder::vkEnumerateDeviceLayerProperties(
977 VkPhysicalDevice physicalDevice,
978 uint32_t* pPropertyCount,
979 VkLayerProperties* pProperties)
980{
981 auto stream = mImpl->stream();
982 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800983 auto resources = mImpl->resources();
984 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800985 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800986 VkPhysicalDevice local_physicalDevice;
987 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700988 countingStream->rewind();
989 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800990 uint64_t cgen_var_65;
991 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_65, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800992 countingStream->write((uint64_t*)&cgen_var_65, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800993 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800994 uint64_t cgen_var_66 = (uint64_t)(uintptr_t)pPropertyCount;
995 countingStream->putBe64(cgen_var_66);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700996 if (pPropertyCount)
997 {
998 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
999 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001000 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001001 uint64_t cgen_var_67 = (uint64_t)(uintptr_t)pProperties;
1002 countingStream->putBe64(cgen_var_67);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001003 if (pProperties)
1004 {
1005 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1006 {
1007 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
1008 }
1009 }
1010 }
1011 uint32_t packetSize_vkEnumerateDeviceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1012 countingStream->rewind();
1013 uint32_t opcode_vkEnumerateDeviceLayerProperties = OP_vkEnumerateDeviceLayerProperties;
1014 stream->write(&opcode_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
1015 stream->write(&packetSize_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001016 uint64_t cgen_var_68;
1017 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_68, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001018 stream->write((uint64_t*)&cgen_var_68, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001019 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001020 uint64_t cgen_var_69 = (uint64_t)(uintptr_t)pPropertyCount;
1021 stream->putBe64(cgen_var_69);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001022 if (pPropertyCount)
1023 {
1024 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1025 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001026 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001027 uint64_t cgen_var_70 = (uint64_t)(uintptr_t)pProperties;
1028 stream->putBe64(cgen_var_70);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001029 if (pProperties)
1030 {
1031 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1032 {
1033 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1034 }
1035 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001036 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001037 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001038 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001039 if (pPropertyCount)
1040 {
1041 if (!(check_pPropertyCount))
1042 {
1043 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1044 }
1045 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1046 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001047 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001048 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001049 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001050 if (pProperties)
1051 {
1052 if (!(check_pProperties))
1053 {
1054 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1055 }
1056 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1057 {
1058 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1059 }
1060 }
1061 VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
1062 stream->read(&vkEnumerateDeviceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001063 countingStream->clearPool();
1064 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001065 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001066 return vkEnumerateDeviceLayerProperties_VkResult_return;
1067}
1068
1069void VkEncoder::vkGetDeviceQueue(
1070 VkDevice device,
1071 uint32_t queueFamilyIndex,
1072 uint32_t queueIndex,
1073 VkQueue* pQueue)
1074{
1075 auto stream = mImpl->stream();
1076 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001077 auto resources = mImpl->resources();
1078 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001079 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001080 VkDevice local_device;
1081 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001082 uint32_t local_queueFamilyIndex;
1083 local_queueFamilyIndex = queueFamilyIndex;
1084 uint32_t local_queueIndex;
1085 local_queueIndex = queueIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001086 countingStream->rewind();
1087 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001088 uint64_t cgen_var_73;
1089 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_73, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001090 countingStream->write((uint64_t*)&cgen_var_73, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001091 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1092 countingStream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001093 uint64_t cgen_var_74;
1094 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_74, 1);
1095 countingStream->write((uint64_t*)&cgen_var_74, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001096 }
1097 uint32_t packetSize_vkGetDeviceQueue = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1098 countingStream->rewind();
1099 uint32_t opcode_vkGetDeviceQueue = OP_vkGetDeviceQueue;
1100 stream->write(&opcode_vkGetDeviceQueue, sizeof(uint32_t));
1101 stream->write(&packetSize_vkGetDeviceQueue, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001102 uint64_t cgen_var_75;
1103 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_75, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001104 stream->write((uint64_t*)&cgen_var_75, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001105 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1106 stream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yange4008a02018-11-18 12:22:48 -08001107 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08001108 uint64_t cgen_var_76;
1109 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_76, 1);
1110 stream->write((uint64_t*)&cgen_var_76, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001111 stream->setHandleMapping(resources->unwrapMapping());
1112 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08001113 uint64_t cgen_var_77;
1114 stream->read((uint64_t*)&cgen_var_77, 8);
1115 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_77, (VkQueue*)pQueue, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001116 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001117}
1118
1119VkResult VkEncoder::vkQueueSubmit(
1120 VkQueue queue,
1121 uint32_t submitCount,
1122 const VkSubmitInfo* pSubmits,
1123 VkFence fence)
1124{
1125 auto stream = mImpl->stream();
1126 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001127 auto resources = mImpl->resources();
1128 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001129 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001130 VkQueue local_queue;
1131 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001132 uint32_t local_submitCount;
1133 local_submitCount = submitCount;
1134 VkSubmitInfo* local_pSubmits;
1135 local_pSubmits = nullptr;
1136 if (pSubmits)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001137 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001138 local_pSubmits = (VkSubmitInfo*)pool->alloc(((submitCount)) * sizeof(const VkSubmitInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001139 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1140 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001141 deepcopy_VkSubmitInfo(pool, pSubmits + i, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001142 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001143 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001144 VkFence local_fence;
1145 local_fence = fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001146 countingStream->rewind();
1147 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001148 uint64_t cgen_var_78;
1149 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_78, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001150 countingStream->write((uint64_t*)&cgen_var_78, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001151 countingStream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
1152 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1153 {
1154 marshal_VkSubmitInfo(countingStream, (VkSubmitInfo*)(local_pSubmits + i));
1155 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001156 uint64_t cgen_var_79;
1157 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_79, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001158 countingStream->write((uint64_t*)&cgen_var_79, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001159 }
1160 uint32_t packetSize_vkQueueSubmit = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1161 countingStream->rewind();
1162 uint32_t opcode_vkQueueSubmit = OP_vkQueueSubmit;
1163 stream->write(&opcode_vkQueueSubmit, sizeof(uint32_t));
1164 stream->write(&packetSize_vkQueueSubmit, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001165 uint64_t cgen_var_80;
1166 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_80, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001167 stream->write((uint64_t*)&cgen_var_80, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001168 stream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001169 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1170 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001171 marshal_VkSubmitInfo(stream, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001172 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001173 uint64_t cgen_var_81;
1174 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_81, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001175 stream->write((uint64_t*)&cgen_var_81, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001176 VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
1177 stream->read(&vkQueueSubmit_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001178 countingStream->clearPool();
1179 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001180 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001181 return vkQueueSubmit_VkResult_return;
1182}
1183
1184VkResult VkEncoder::vkQueueWaitIdle(
1185 VkQueue queue)
1186{
1187 auto stream = mImpl->stream();
1188 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001189 auto resources = mImpl->resources();
1190 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001191 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001192 VkQueue local_queue;
1193 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001194 countingStream->rewind();
1195 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001196 uint64_t cgen_var_82;
1197 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_82, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001198 countingStream->write((uint64_t*)&cgen_var_82, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001199 }
1200 uint32_t packetSize_vkQueueWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1201 countingStream->rewind();
1202 uint32_t opcode_vkQueueWaitIdle = OP_vkQueueWaitIdle;
1203 stream->write(&opcode_vkQueueWaitIdle, sizeof(uint32_t));
1204 stream->write(&packetSize_vkQueueWaitIdle, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001205 uint64_t cgen_var_83;
1206 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_83, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001207 stream->write((uint64_t*)&cgen_var_83, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001208 VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
1209 stream->read(&vkQueueWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001210 countingStream->clearPool();
1211 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001212 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001213 return vkQueueWaitIdle_VkResult_return;
1214}
1215
1216VkResult VkEncoder::vkDeviceWaitIdle(
1217 VkDevice device)
1218{
1219 auto stream = mImpl->stream();
1220 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001221 auto resources = mImpl->resources();
1222 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001223 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001224 VkDevice local_device;
1225 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001226 countingStream->rewind();
1227 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001228 uint64_t cgen_var_84;
1229 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_84, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001230 countingStream->write((uint64_t*)&cgen_var_84, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001231 }
1232 uint32_t packetSize_vkDeviceWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1233 countingStream->rewind();
1234 uint32_t opcode_vkDeviceWaitIdle = OP_vkDeviceWaitIdle;
1235 stream->write(&opcode_vkDeviceWaitIdle, sizeof(uint32_t));
1236 stream->write(&packetSize_vkDeviceWaitIdle, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001237 uint64_t cgen_var_85;
1238 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_85, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001239 stream->write((uint64_t*)&cgen_var_85, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001240 VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
1241 stream->read(&vkDeviceWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001242 countingStream->clearPool();
1243 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001244 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001245 return vkDeviceWaitIdle_VkResult_return;
1246}
1247
1248VkResult VkEncoder::vkAllocateMemory(
1249 VkDevice device,
1250 const VkMemoryAllocateInfo* pAllocateInfo,
1251 const VkAllocationCallbacks* pAllocator,
1252 VkDeviceMemory* pMemory)
1253{
1254 auto stream = mImpl->stream();
1255 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001256 auto resources = mImpl->resources();
1257 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001258 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001259 VkDevice local_device;
1260 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001261 VkMemoryAllocateInfo* local_pAllocateInfo;
1262 local_pAllocateInfo = nullptr;
1263 if (pAllocateInfo)
1264 {
1265 local_pAllocateInfo = (VkMemoryAllocateInfo*)pool->alloc(sizeof(const VkMemoryAllocateInfo));
1266 deepcopy_VkMemoryAllocateInfo(pool, pAllocateInfo, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
1267 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001268 VkAllocationCallbacks* local_pAllocator;
1269 local_pAllocator = nullptr;
1270 if (pAllocator)
1271 {
1272 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1273 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1274 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001275 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001276 countingStream->rewind();
1277 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001278 uint64_t cgen_var_86;
1279 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_86, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001280 countingStream->write((uint64_t*)&cgen_var_86, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001281 marshal_VkMemoryAllocateInfo(countingStream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001282 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001283 uint64_t cgen_var_87 = (uint64_t)(uintptr_t)local_pAllocator;
1284 countingStream->putBe64(cgen_var_87);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001285 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001286 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001287 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001288 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001289 uint64_t cgen_var_88;
1290 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_88, 1);
1291 countingStream->write((uint64_t*)&cgen_var_88, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001292 }
1293 uint32_t packetSize_vkAllocateMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1294 countingStream->rewind();
1295 uint32_t opcode_vkAllocateMemory = OP_vkAllocateMemory;
1296 stream->write(&opcode_vkAllocateMemory, sizeof(uint32_t));
1297 stream->write(&packetSize_vkAllocateMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001298 uint64_t cgen_var_89;
1299 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_89, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001300 stream->write((uint64_t*)&cgen_var_89, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001301 marshal_VkMemoryAllocateInfo(stream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001302 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001303 uint64_t cgen_var_90 = (uint64_t)(uintptr_t)local_pAllocator;
1304 stream->putBe64(cgen_var_90);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001305 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001306 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001307 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001308 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08001309 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08001310 uint64_t cgen_var_91;
1311 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_91, 1);
1312 stream->write((uint64_t*)&cgen_var_91, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001313 stream->setHandleMapping(resources->unwrapMapping());
1314 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08001315 uint64_t cgen_var_92;
1316 stream->read((uint64_t*)&cgen_var_92, 8);
1317 stream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_92, (VkDeviceMemory*)pMemory, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001318 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001319 VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
1320 stream->read(&vkAllocateMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001321 countingStream->clearPool();
1322 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001323 pool->freeAll();
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08001324 goldfish_vkAllocateMemory(this, vkAllocateMemory_VkResult_return, device, pAllocateInfo, pAllocator, pMemory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001325 return vkAllocateMemory_VkResult_return;
1326}
1327
1328void VkEncoder::vkFreeMemory(
1329 VkDevice device,
1330 VkDeviceMemory memory,
1331 const VkAllocationCallbacks* pAllocator)
1332{
1333 auto stream = mImpl->stream();
1334 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001335 auto resources = mImpl->resources();
1336 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001337 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001338 VkDevice local_device;
1339 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001340 VkDeviceMemory local_memory;
1341 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001342 VkAllocationCallbacks* local_pAllocator;
1343 local_pAllocator = nullptr;
1344 if (pAllocator)
1345 {
1346 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1347 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1348 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001349 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001350 countingStream->rewind();
1351 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001352 uint64_t cgen_var_93;
1353 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_93, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001354 countingStream->write((uint64_t*)&cgen_var_93, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001355 uint64_t cgen_var_94;
1356 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_94, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001357 countingStream->write((uint64_t*)&cgen_var_94, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001358 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001359 uint64_t cgen_var_95 = (uint64_t)(uintptr_t)local_pAllocator;
1360 countingStream->putBe64(cgen_var_95);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001361 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001362 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001363 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001364 }
1365 }
1366 uint32_t packetSize_vkFreeMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1367 countingStream->rewind();
1368 uint32_t opcode_vkFreeMemory = OP_vkFreeMemory;
1369 stream->write(&opcode_vkFreeMemory, sizeof(uint32_t));
1370 stream->write(&packetSize_vkFreeMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001371 uint64_t cgen_var_96;
1372 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_96, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001373 stream->write((uint64_t*)&cgen_var_96, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001374 uint64_t cgen_var_97;
1375 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_97, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001376 stream->write((uint64_t*)&cgen_var_97, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001377 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001378 uint64_t cgen_var_98 = (uint64_t)(uintptr_t)local_pAllocator;
1379 stream->putBe64(cgen_var_98);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001380 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001381 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001382 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001383 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001384 resources->destroyMapping()->mapHandles_VkDeviceMemory((VkDeviceMemory*)&memory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001385}
1386
1387VkResult VkEncoder::vkMapMemory(
1388 VkDevice device,
1389 VkDeviceMemory memory,
1390 VkDeviceSize offset,
1391 VkDeviceSize size,
1392 VkMemoryMapFlags flags,
1393 void** ppData)
1394{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001395 VkResult vkMapMemory_VkResult_return = (VkResult)0;
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08001396 vkMapMemory_VkResult_return = goldfish_vkMapMemory(this, vkMapMemory_VkResult_return, device, memory, offset, size, flags, ppData);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001397 return vkMapMemory_VkResult_return;
1398}
1399
1400void VkEncoder::vkUnmapMemory(
1401 VkDevice device,
1402 VkDeviceMemory memory)
1403{
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08001404 goldfish_vkUnmapMemory(this, device, memory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001405}
1406
1407VkResult VkEncoder::vkFlushMappedMemoryRanges(
1408 VkDevice device,
1409 uint32_t memoryRangeCount,
1410 const VkMappedMemoryRange* pMemoryRanges)
1411{
Lingfeng Yang60b411d2018-11-29 00:26:45 -08001412 VALIDATE_RET(VkResult, VK_SUCCESS, validate_vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001413 auto stream = mImpl->stream();
1414 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001415 auto resources = mImpl->resources();
1416 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001417 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001418 VkDevice local_device;
1419 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001420 uint32_t local_memoryRangeCount;
1421 local_memoryRangeCount = memoryRangeCount;
1422 VkMappedMemoryRange* local_pMemoryRanges;
1423 local_pMemoryRanges = nullptr;
1424 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001425 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001426 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001427 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1428 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001429 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1430 }
1431 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001432 countingStream->rewind();
1433 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001434 uint64_t cgen_var_99;
1435 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_99, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001436 countingStream->write((uint64_t*)&cgen_var_99, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001437 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1438 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1439 {
1440 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001441 }
1442 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001443 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1444 {
1445 auto range = pMemoryRanges[i];
1446 auto memory = pMemoryRanges[i].memory;
1447 auto size = pMemoryRanges[i].size;
1448 auto offset = pMemoryRanges[i].offset;
1449 auto goldfishMem = as_goldfish_VkDeviceMemory(memory);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001450 uint64_t streamSize = 0;
1451 if (!goldfishMem) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yange30d3382018-11-09 08:24:37 -08001452 auto hostPtr = goldfishMem->ptr;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001453 auto actualSize = size == VK_WHOLE_SIZE ? goldfishMem->size : size;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001454 if (!hostPtr) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001455 streamSize = actualSize;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001456 countingStream->write(&streamSize, sizeof(uint64_t));
Lingfeng Yange30d3382018-11-09 08:24:37 -08001457 uint8_t* targetRange = hostPtr + offset;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001458 countingStream->write(targetRange, actualSize);
Lingfeng Yange30d3382018-11-09 08:24:37 -08001459 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001460 uint32_t packetSize_vkFlushMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1461 countingStream->rewind();
1462 uint32_t opcode_vkFlushMappedMemoryRanges = OP_vkFlushMappedMemoryRanges;
1463 stream->write(&opcode_vkFlushMappedMemoryRanges, sizeof(uint32_t));
1464 stream->write(&packetSize_vkFlushMappedMemoryRanges, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001465 uint64_t cgen_var_100;
1466 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_100, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001467 stream->write((uint64_t*)&cgen_var_100, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001468 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001469 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1470 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001471 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001472 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001473 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1474 {
1475 auto range = pMemoryRanges[i];
1476 auto memory = pMemoryRanges[i].memory;
1477 auto size = pMemoryRanges[i].size;
1478 auto offset = pMemoryRanges[i].offset;
1479 auto goldfishMem = as_goldfish_VkDeviceMemory(memory);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001480 uint64_t streamSize = 0;
1481 if (!goldfishMem) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yange30d3382018-11-09 08:24:37 -08001482 auto hostPtr = goldfishMem->ptr;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001483 auto actualSize = size == VK_WHOLE_SIZE ? goldfishMem->size : size;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001484 if (!hostPtr) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001485 streamSize = actualSize;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001486 stream->write(&streamSize, sizeof(uint64_t));
Lingfeng Yange30d3382018-11-09 08:24:37 -08001487 uint8_t* targetRange = hostPtr + offset;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001488 stream->write(targetRange, actualSize);
Lingfeng Yange30d3382018-11-09 08:24:37 -08001489 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001490 VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
1491 stream->read(&vkFlushMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001492 countingStream->clearPool();
1493 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001494 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001495 return vkFlushMappedMemoryRanges_VkResult_return;
1496}
1497
1498VkResult VkEncoder::vkInvalidateMappedMemoryRanges(
1499 VkDevice device,
1500 uint32_t memoryRangeCount,
1501 const VkMappedMemoryRange* pMemoryRanges)
1502{
Lingfeng Yang60b411d2018-11-29 00:26:45 -08001503 VALIDATE_RET(VkResult, VK_SUCCESS, validate_vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001504 auto stream = mImpl->stream();
1505 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001506 auto resources = mImpl->resources();
1507 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001508 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001509 VkDevice local_device;
1510 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001511 uint32_t local_memoryRangeCount;
1512 local_memoryRangeCount = memoryRangeCount;
1513 VkMappedMemoryRange* local_pMemoryRanges;
1514 local_pMemoryRanges = nullptr;
1515 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001516 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001517 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001518 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1519 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001520 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1521 }
1522 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001523 countingStream->rewind();
1524 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001525 uint64_t cgen_var_101;
1526 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_101, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001527 countingStream->write((uint64_t*)&cgen_var_101, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001528 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1529 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1530 {
1531 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001532 }
1533 }
1534 uint32_t packetSize_vkInvalidateMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1535 countingStream->rewind();
1536 uint32_t opcode_vkInvalidateMappedMemoryRanges = OP_vkInvalidateMappedMemoryRanges;
1537 stream->write(&opcode_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
1538 stream->write(&packetSize_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001539 uint64_t cgen_var_102;
1540 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_102, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001541 stream->write((uint64_t*)&cgen_var_102, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001542 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001543 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1544 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001545 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001546 }
1547 VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
1548 stream->read(&vkInvalidateMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001549 countingStream->clearPool();
1550 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001551 pool->freeAll();
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001552 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1553 {
1554 auto range = pMemoryRanges[i];
1555 auto memory = pMemoryRanges[i].memory;
1556 auto size = pMemoryRanges[i].size;
1557 auto offset = pMemoryRanges[i].offset;
1558 auto goldfishMem = as_goldfish_VkDeviceMemory(memory);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001559 uint64_t streamSize = 0;
1560 if (!goldfishMem) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001561 auto hostPtr = goldfishMem->ptr;
1562 auto actualSize = size == VK_WHOLE_SIZE ? goldfishMem->size : size;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001563 if (!hostPtr) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001564 streamSize = actualSize;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001565 stream->read(&streamSize, sizeof(uint64_t));
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001566 uint8_t* targetRange = hostPtr + offset;
1567 stream->read(targetRange, actualSize);
1568 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001569 return vkInvalidateMappedMemoryRanges_VkResult_return;
1570}
1571
1572void VkEncoder::vkGetDeviceMemoryCommitment(
1573 VkDevice device,
1574 VkDeviceMemory memory,
1575 VkDeviceSize* pCommittedMemoryInBytes)
1576{
1577 auto stream = mImpl->stream();
1578 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001579 auto resources = mImpl->resources();
1580 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001581 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001582 VkDevice local_device;
1583 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001584 VkDeviceMemory local_memory;
1585 local_memory = memory;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001586 countingStream->rewind();
1587 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001588 uint64_t cgen_var_103;
1589 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_103, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001590 countingStream->write((uint64_t*)&cgen_var_103, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001591 uint64_t cgen_var_104;
1592 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_104, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001593 countingStream->write((uint64_t*)&cgen_var_104, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001594 countingStream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1595 }
1596 uint32_t packetSize_vkGetDeviceMemoryCommitment = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1597 countingStream->rewind();
1598 uint32_t opcode_vkGetDeviceMemoryCommitment = OP_vkGetDeviceMemoryCommitment;
1599 stream->write(&opcode_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
1600 stream->write(&packetSize_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001601 uint64_t cgen_var_105;
1602 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_105, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001603 stream->write((uint64_t*)&cgen_var_105, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001604 uint64_t cgen_var_106;
1605 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_106, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001606 stream->write((uint64_t*)&cgen_var_106, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001607 stream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1608 stream->read((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1609}
1610
1611VkResult VkEncoder::vkBindBufferMemory(
1612 VkDevice device,
1613 VkBuffer buffer,
1614 VkDeviceMemory memory,
1615 VkDeviceSize memoryOffset)
1616{
1617 auto stream = mImpl->stream();
1618 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001619 auto resources = mImpl->resources();
1620 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001621 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001622 VkDevice local_device;
1623 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001624 VkBuffer local_buffer;
1625 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001626 VkDeviceMemory local_memory;
1627 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001628 VkDeviceSize local_memoryOffset;
1629 local_memoryOffset = memoryOffset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001630 countingStream->rewind();
1631 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001632 uint64_t cgen_var_107;
1633 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_107, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001634 countingStream->write((uint64_t*)&cgen_var_107, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001635 uint64_t cgen_var_108;
1636 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_108, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001637 countingStream->write((uint64_t*)&cgen_var_108, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001638 uint64_t cgen_var_109;
1639 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_109, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001640 countingStream->write((uint64_t*)&cgen_var_109, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001641 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001642 }
1643 uint32_t packetSize_vkBindBufferMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1644 countingStream->rewind();
1645 uint32_t opcode_vkBindBufferMemory = OP_vkBindBufferMemory;
1646 stream->write(&opcode_vkBindBufferMemory, sizeof(uint32_t));
1647 stream->write(&packetSize_vkBindBufferMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001648 uint64_t cgen_var_110;
1649 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_110, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001650 stream->write((uint64_t*)&cgen_var_110, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001651 uint64_t cgen_var_111;
1652 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_111, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001653 stream->write((uint64_t*)&cgen_var_111, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001654 uint64_t cgen_var_112;
1655 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_112, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001656 stream->write((uint64_t*)&cgen_var_112, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001657 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001658 VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
1659 stream->read(&vkBindBufferMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001660 countingStream->clearPool();
1661 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001662 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001663 return vkBindBufferMemory_VkResult_return;
1664}
1665
1666VkResult VkEncoder::vkBindImageMemory(
1667 VkDevice device,
1668 VkImage image,
1669 VkDeviceMemory memory,
1670 VkDeviceSize memoryOffset)
1671{
1672 auto stream = mImpl->stream();
1673 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001674 auto resources = mImpl->resources();
1675 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001676 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001677 VkDevice local_device;
1678 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001679 VkImage local_image;
1680 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001681 VkDeviceMemory local_memory;
1682 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001683 VkDeviceSize local_memoryOffset;
1684 local_memoryOffset = memoryOffset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001685 countingStream->rewind();
1686 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001687 uint64_t cgen_var_113;
1688 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_113, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001689 countingStream->write((uint64_t*)&cgen_var_113, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001690 uint64_t cgen_var_114;
1691 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_114, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001692 countingStream->write((uint64_t*)&cgen_var_114, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001693 uint64_t cgen_var_115;
1694 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_115, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001695 countingStream->write((uint64_t*)&cgen_var_115, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001696 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001697 }
1698 uint32_t packetSize_vkBindImageMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1699 countingStream->rewind();
1700 uint32_t opcode_vkBindImageMemory = OP_vkBindImageMemory;
1701 stream->write(&opcode_vkBindImageMemory, sizeof(uint32_t));
1702 stream->write(&packetSize_vkBindImageMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001703 uint64_t cgen_var_116;
1704 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_116, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001705 stream->write((uint64_t*)&cgen_var_116, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001706 uint64_t cgen_var_117;
1707 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_117, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001708 stream->write((uint64_t*)&cgen_var_117, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001709 uint64_t cgen_var_118;
1710 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_118, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001711 stream->write((uint64_t*)&cgen_var_118, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001712 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001713 VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
1714 stream->read(&vkBindImageMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001715 countingStream->clearPool();
1716 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001717 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001718 return vkBindImageMemory_VkResult_return;
1719}
1720
1721void VkEncoder::vkGetBufferMemoryRequirements(
1722 VkDevice device,
1723 VkBuffer buffer,
1724 VkMemoryRequirements* pMemoryRequirements)
1725{
1726 auto stream = mImpl->stream();
1727 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001728 auto resources = mImpl->resources();
1729 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001730 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001731 VkDevice local_device;
1732 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001733 VkBuffer local_buffer;
1734 local_buffer = buffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001735 countingStream->rewind();
1736 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001737 uint64_t cgen_var_119;
1738 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_119, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001739 countingStream->write((uint64_t*)&cgen_var_119, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001740 uint64_t cgen_var_120;
1741 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_120, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001742 countingStream->write((uint64_t*)&cgen_var_120, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001743 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
1744 }
1745 uint32_t packetSize_vkGetBufferMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1746 countingStream->rewind();
1747 uint32_t opcode_vkGetBufferMemoryRequirements = OP_vkGetBufferMemoryRequirements;
1748 stream->write(&opcode_vkGetBufferMemoryRequirements, sizeof(uint32_t));
1749 stream->write(&packetSize_vkGetBufferMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001750 uint64_t cgen_var_121;
1751 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_121, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001752 stream->write((uint64_t*)&cgen_var_121, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001753 uint64_t cgen_var_122;
1754 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_122, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001755 stream->write((uint64_t*)&cgen_var_122, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001756 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1757 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1758}
1759
1760void VkEncoder::vkGetImageMemoryRequirements(
1761 VkDevice device,
1762 VkImage image,
1763 VkMemoryRequirements* pMemoryRequirements)
1764{
1765 auto stream = mImpl->stream();
1766 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001767 auto resources = mImpl->resources();
1768 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001769 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001770 VkDevice local_device;
1771 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001772 VkImage local_image;
1773 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001774 countingStream->rewind();
1775 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001776 uint64_t cgen_var_123;
1777 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_123, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001778 countingStream->write((uint64_t*)&cgen_var_123, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001779 uint64_t cgen_var_124;
1780 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_124, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001781 countingStream->write((uint64_t*)&cgen_var_124, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001782 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
1783 }
1784 uint32_t packetSize_vkGetImageMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1785 countingStream->rewind();
1786 uint32_t opcode_vkGetImageMemoryRequirements = OP_vkGetImageMemoryRequirements;
1787 stream->write(&opcode_vkGetImageMemoryRequirements, sizeof(uint32_t));
1788 stream->write(&packetSize_vkGetImageMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001789 uint64_t cgen_var_125;
1790 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_125, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001791 stream->write((uint64_t*)&cgen_var_125, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001792 uint64_t cgen_var_126;
1793 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_126, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001794 stream->write((uint64_t*)&cgen_var_126, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001795 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1796 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1797}
1798
1799void VkEncoder::vkGetImageSparseMemoryRequirements(
1800 VkDevice device,
1801 VkImage image,
1802 uint32_t* pSparseMemoryRequirementCount,
1803 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
1804{
1805 auto stream = mImpl->stream();
1806 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001807 auto resources = mImpl->resources();
1808 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001809 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001810 VkDevice local_device;
1811 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001812 VkImage local_image;
1813 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001814 countingStream->rewind();
1815 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001816 uint64_t cgen_var_127;
1817 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_127, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001818 countingStream->write((uint64_t*)&cgen_var_127, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001819 uint64_t cgen_var_128;
1820 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_128, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001821 countingStream->write((uint64_t*)&cgen_var_128, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001822 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001823 uint64_t cgen_var_129 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
1824 countingStream->putBe64(cgen_var_129);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001825 if (pSparseMemoryRequirementCount)
1826 {
1827 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
1828 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001829 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001830 uint64_t cgen_var_130 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
1831 countingStream->putBe64(cgen_var_130);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001832 if (pSparseMemoryRequirements)
1833 {
1834 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
1835 {
1836 marshal_VkSparseImageMemoryRequirements(countingStream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
1837 }
1838 }
1839 }
1840 uint32_t packetSize_vkGetImageSparseMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1841 countingStream->rewind();
1842 uint32_t opcode_vkGetImageSparseMemoryRequirements = OP_vkGetImageSparseMemoryRequirements;
1843 stream->write(&opcode_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
1844 stream->write(&packetSize_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001845 uint64_t cgen_var_131;
1846 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_131, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001847 stream->write((uint64_t*)&cgen_var_131, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001848 uint64_t cgen_var_132;
1849 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_132, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001850 stream->write((uint64_t*)&cgen_var_132, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001851 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001852 uint64_t cgen_var_133 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
1853 stream->putBe64(cgen_var_133);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001854 if (pSparseMemoryRequirementCount)
1855 {
1856 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
1857 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001858 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001859 uint64_t cgen_var_134 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
1860 stream->putBe64(cgen_var_134);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001861 if (pSparseMemoryRequirements)
1862 {
1863 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
1864 {
1865 marshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
1866 }
1867 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001868 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001869 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001870 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001871 if (pSparseMemoryRequirementCount)
1872 {
1873 if (!(check_pSparseMemoryRequirementCount))
1874 {
1875 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
1876 }
1877 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
1878 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001879 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001880 VkSparseImageMemoryRequirements* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001881 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001882 if (pSparseMemoryRequirements)
1883 {
1884 if (!(check_pSparseMemoryRequirements))
1885 {
1886 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
1887 }
1888 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
1889 {
1890 unmarshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
1891 }
1892 }
1893}
1894
1895void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties(
1896 VkPhysicalDevice physicalDevice,
1897 VkFormat format,
1898 VkImageType type,
1899 VkSampleCountFlagBits samples,
1900 VkImageUsageFlags usage,
1901 VkImageTiling tiling,
1902 uint32_t* pPropertyCount,
1903 VkSparseImageFormatProperties* pProperties)
1904{
1905 auto stream = mImpl->stream();
1906 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001907 auto resources = mImpl->resources();
1908 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001909 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001910 VkPhysicalDevice local_physicalDevice;
1911 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001912 VkFormat local_format;
1913 local_format = format;
1914 VkImageType local_type;
1915 local_type = type;
1916 VkSampleCountFlagBits local_samples;
1917 local_samples = samples;
1918 VkImageUsageFlags local_usage;
1919 local_usage = usage;
1920 VkImageTiling local_tiling;
1921 local_tiling = tiling;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001922 countingStream->rewind();
1923 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001924 uint64_t cgen_var_137;
1925 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_137, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001926 countingStream->write((uint64_t*)&cgen_var_137, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001927 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
1928 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
1929 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
1930 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
1931 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001932 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001933 uint64_t cgen_var_138 = (uint64_t)(uintptr_t)pPropertyCount;
1934 countingStream->putBe64(cgen_var_138);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001935 if (pPropertyCount)
1936 {
1937 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1938 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001939 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001940 uint64_t cgen_var_139 = (uint64_t)(uintptr_t)pProperties;
1941 countingStream->putBe64(cgen_var_139);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001942 if (pProperties)
1943 {
1944 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1945 {
1946 marshal_VkSparseImageFormatProperties(countingStream, (VkSparseImageFormatProperties*)(pProperties + i));
1947 }
1948 }
1949 }
1950 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1951 countingStream->rewind();
1952 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties = OP_vkGetPhysicalDeviceSparseImageFormatProperties;
1953 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
1954 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001955 uint64_t cgen_var_140;
1956 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_140, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001957 stream->write((uint64_t*)&cgen_var_140, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001958 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
1959 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
1960 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
1961 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
1962 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001963 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001964 uint64_t cgen_var_141 = (uint64_t)(uintptr_t)pPropertyCount;
1965 stream->putBe64(cgen_var_141);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001966 if (pPropertyCount)
1967 {
1968 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1969 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001970 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001971 uint64_t cgen_var_142 = (uint64_t)(uintptr_t)pProperties;
1972 stream->putBe64(cgen_var_142);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001973 if (pProperties)
1974 {
1975 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1976 {
1977 marshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
1978 }
1979 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001980 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001981 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001982 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001983 if (pPropertyCount)
1984 {
1985 if (!(check_pPropertyCount))
1986 {
1987 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1988 }
1989 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1990 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001991 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001992 VkSparseImageFormatProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001993 check_pProperties = (VkSparseImageFormatProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001994 if (pProperties)
1995 {
1996 if (!(check_pProperties))
1997 {
1998 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1999 }
2000 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2001 {
2002 unmarshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
2003 }
2004 }
2005}
2006
2007VkResult VkEncoder::vkQueueBindSparse(
2008 VkQueue queue,
2009 uint32_t bindInfoCount,
2010 const VkBindSparseInfo* pBindInfo,
2011 VkFence fence)
2012{
2013 auto stream = mImpl->stream();
2014 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002015 auto resources = mImpl->resources();
2016 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002017 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002018 VkQueue local_queue;
2019 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002020 uint32_t local_bindInfoCount;
2021 local_bindInfoCount = bindInfoCount;
2022 VkBindSparseInfo* local_pBindInfo;
2023 local_pBindInfo = nullptr;
2024 if (pBindInfo)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002025 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002026 local_pBindInfo = (VkBindSparseInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindSparseInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002027 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2028 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002029 deepcopy_VkBindSparseInfo(pool, pBindInfo + i, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002030 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002031 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002032 VkFence local_fence;
2033 local_fence = fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002034 countingStream->rewind();
2035 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002036 uint64_t cgen_var_145;
2037 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_145, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002038 countingStream->write((uint64_t*)&cgen_var_145, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002039 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
2040 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2041 {
2042 marshal_VkBindSparseInfo(countingStream, (VkBindSparseInfo*)(local_pBindInfo + i));
2043 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002044 uint64_t cgen_var_146;
2045 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_146, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002046 countingStream->write((uint64_t*)&cgen_var_146, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002047 }
2048 uint32_t packetSize_vkQueueBindSparse = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2049 countingStream->rewind();
2050 uint32_t opcode_vkQueueBindSparse = OP_vkQueueBindSparse;
2051 stream->write(&opcode_vkQueueBindSparse, sizeof(uint32_t));
2052 stream->write(&packetSize_vkQueueBindSparse, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002053 uint64_t cgen_var_147;
2054 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_147, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002055 stream->write((uint64_t*)&cgen_var_147, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002056 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002057 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2058 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002059 marshal_VkBindSparseInfo(stream, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002060 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002061 uint64_t cgen_var_148;
2062 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_148, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002063 stream->write((uint64_t*)&cgen_var_148, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002064 VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
2065 stream->read(&vkQueueBindSparse_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002066 countingStream->clearPool();
2067 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002068 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002069 return vkQueueBindSparse_VkResult_return;
2070}
2071
2072VkResult VkEncoder::vkCreateFence(
2073 VkDevice device,
2074 const VkFenceCreateInfo* pCreateInfo,
2075 const VkAllocationCallbacks* pAllocator,
2076 VkFence* pFence)
2077{
2078 auto stream = mImpl->stream();
2079 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002080 auto resources = mImpl->resources();
2081 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002082 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002083 VkDevice local_device;
2084 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002085 VkFenceCreateInfo* local_pCreateInfo;
2086 local_pCreateInfo = nullptr;
2087 if (pCreateInfo)
2088 {
2089 local_pCreateInfo = (VkFenceCreateInfo*)pool->alloc(sizeof(const VkFenceCreateInfo));
2090 deepcopy_VkFenceCreateInfo(pool, pCreateInfo, (VkFenceCreateInfo*)(local_pCreateInfo));
2091 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002092 VkAllocationCallbacks* local_pAllocator;
2093 local_pAllocator = nullptr;
2094 if (pAllocator)
2095 {
2096 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2097 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2098 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002099 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002100 countingStream->rewind();
2101 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002102 uint64_t cgen_var_149;
2103 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_149, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002104 countingStream->write((uint64_t*)&cgen_var_149, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002105 marshal_VkFenceCreateInfo(countingStream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002106 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002107 uint64_t cgen_var_150 = (uint64_t)(uintptr_t)local_pAllocator;
2108 countingStream->putBe64(cgen_var_150);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002109 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002110 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002111 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002112 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002113 uint64_t cgen_var_151;
2114 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_151, 1);
2115 countingStream->write((uint64_t*)&cgen_var_151, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002116 }
2117 uint32_t packetSize_vkCreateFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2118 countingStream->rewind();
2119 uint32_t opcode_vkCreateFence = OP_vkCreateFence;
2120 stream->write(&opcode_vkCreateFence, sizeof(uint32_t));
2121 stream->write(&packetSize_vkCreateFence, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002122 uint64_t cgen_var_152;
2123 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_152, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002124 stream->write((uint64_t*)&cgen_var_152, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002125 marshal_VkFenceCreateInfo(stream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002126 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002127 uint64_t cgen_var_153 = (uint64_t)(uintptr_t)local_pAllocator;
2128 stream->putBe64(cgen_var_153);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002129 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002130 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002131 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002132 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002133 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002134 uint64_t cgen_var_154;
2135 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_154, 1);
2136 stream->write((uint64_t*)&cgen_var_154, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002137 stream->setHandleMapping(resources->unwrapMapping());
2138 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002139 uint64_t cgen_var_155;
2140 stream->read((uint64_t*)&cgen_var_155, 8);
2141 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_155, (VkFence*)pFence, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002142 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002143 VkResult vkCreateFence_VkResult_return = (VkResult)0;
2144 stream->read(&vkCreateFence_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002145 countingStream->clearPool();
2146 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002147 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002148 return vkCreateFence_VkResult_return;
2149}
2150
2151void VkEncoder::vkDestroyFence(
2152 VkDevice device,
2153 VkFence fence,
2154 const VkAllocationCallbacks* pAllocator)
2155{
2156 auto stream = mImpl->stream();
2157 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002158 auto resources = mImpl->resources();
2159 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002160 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002161 VkDevice local_device;
2162 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002163 VkFence local_fence;
2164 local_fence = fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002165 VkAllocationCallbacks* local_pAllocator;
2166 local_pAllocator = nullptr;
2167 if (pAllocator)
2168 {
2169 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2170 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2171 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002172 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002173 countingStream->rewind();
2174 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002175 uint64_t cgen_var_156;
2176 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_156, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002177 countingStream->write((uint64_t*)&cgen_var_156, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002178 uint64_t cgen_var_157;
2179 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_157, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002180 countingStream->write((uint64_t*)&cgen_var_157, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002181 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002182 uint64_t cgen_var_158 = (uint64_t)(uintptr_t)local_pAllocator;
2183 countingStream->putBe64(cgen_var_158);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002184 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002185 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002186 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002187 }
2188 }
2189 uint32_t packetSize_vkDestroyFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2190 countingStream->rewind();
2191 uint32_t opcode_vkDestroyFence = OP_vkDestroyFence;
2192 stream->write(&opcode_vkDestroyFence, sizeof(uint32_t));
2193 stream->write(&packetSize_vkDestroyFence, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002194 uint64_t cgen_var_159;
2195 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_159, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002196 stream->write((uint64_t*)&cgen_var_159, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002197 uint64_t cgen_var_160;
2198 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_160, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002199 stream->write((uint64_t*)&cgen_var_160, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002200 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002201 uint64_t cgen_var_161 = (uint64_t)(uintptr_t)local_pAllocator;
2202 stream->putBe64(cgen_var_161);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002203 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002204 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002205 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002206 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002207 resources->destroyMapping()->mapHandles_VkFence((VkFence*)&fence);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002208}
2209
2210VkResult VkEncoder::vkResetFences(
2211 VkDevice device,
2212 uint32_t fenceCount,
2213 const VkFence* pFences)
2214{
2215 auto stream = mImpl->stream();
2216 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002217 auto resources = mImpl->resources();
2218 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002219 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002220 VkDevice local_device;
2221 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002222 uint32_t local_fenceCount;
2223 local_fenceCount = fenceCount;
2224 VkFence* local_pFences;
2225 local_pFences = nullptr;
2226 if (pFences)
2227 {
2228 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2229 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002230 countingStream->rewind();
2231 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002232 uint64_t cgen_var_162;
2233 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_162, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002234 countingStream->write((uint64_t*)&cgen_var_162, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002235 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002236 if (((fenceCount)))
2237 {
2238 uint64_t* cgen_var_163;
2239 countingStream->alloc((void**)&cgen_var_163, ((fenceCount)) * 8);
2240 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_163, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002241 countingStream->write((uint64_t*)cgen_var_163, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002242 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002243 }
2244 uint32_t packetSize_vkResetFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2245 countingStream->rewind();
2246 uint32_t opcode_vkResetFences = OP_vkResetFences;
2247 stream->write(&opcode_vkResetFences, sizeof(uint32_t));
2248 stream->write(&packetSize_vkResetFences, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002249 uint64_t cgen_var_164;
2250 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_164, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002251 stream->write((uint64_t*)&cgen_var_164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002252 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002253 if (((fenceCount)))
2254 {
2255 uint64_t* cgen_var_165;
2256 stream->alloc((void**)&cgen_var_165, ((fenceCount)) * 8);
2257 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_165, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002258 stream->write((uint64_t*)cgen_var_165, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002259 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002260 VkResult vkResetFences_VkResult_return = (VkResult)0;
2261 stream->read(&vkResetFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002262 countingStream->clearPool();
2263 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002264 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002265 return vkResetFences_VkResult_return;
2266}
2267
2268VkResult VkEncoder::vkGetFenceStatus(
2269 VkDevice device,
2270 VkFence fence)
2271{
2272 auto stream = mImpl->stream();
2273 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002274 auto resources = mImpl->resources();
2275 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002276 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002277 VkDevice local_device;
2278 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002279 VkFence local_fence;
2280 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002281 countingStream->rewind();
2282 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002283 uint64_t cgen_var_166;
2284 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_166, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002285 countingStream->write((uint64_t*)&cgen_var_166, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002286 uint64_t cgen_var_167;
2287 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_167, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002288 countingStream->write((uint64_t*)&cgen_var_167, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002289 }
2290 uint32_t packetSize_vkGetFenceStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2291 countingStream->rewind();
2292 uint32_t opcode_vkGetFenceStatus = OP_vkGetFenceStatus;
2293 stream->write(&opcode_vkGetFenceStatus, sizeof(uint32_t));
2294 stream->write(&packetSize_vkGetFenceStatus, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002295 uint64_t cgen_var_168;
2296 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_168, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002297 stream->write((uint64_t*)&cgen_var_168, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002298 uint64_t cgen_var_169;
2299 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_169, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002300 stream->write((uint64_t*)&cgen_var_169, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002301 VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
2302 stream->read(&vkGetFenceStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002303 countingStream->clearPool();
2304 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002305 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002306 return vkGetFenceStatus_VkResult_return;
2307}
2308
2309VkResult VkEncoder::vkWaitForFences(
2310 VkDevice device,
2311 uint32_t fenceCount,
2312 const VkFence* pFences,
2313 VkBool32 waitAll,
2314 uint64_t timeout)
2315{
2316 auto stream = mImpl->stream();
2317 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002318 auto resources = mImpl->resources();
2319 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002320 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002321 VkDevice local_device;
2322 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002323 uint32_t local_fenceCount;
2324 local_fenceCount = fenceCount;
2325 VkFence* local_pFences;
2326 local_pFences = nullptr;
2327 if (pFences)
2328 {
2329 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2330 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002331 VkBool32 local_waitAll;
2332 local_waitAll = waitAll;
2333 uint64_t local_timeout;
2334 local_timeout = timeout;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002335 countingStream->rewind();
2336 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002337 uint64_t cgen_var_170;
2338 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_170, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002339 countingStream->write((uint64_t*)&cgen_var_170, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002340 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002341 if (((fenceCount)))
2342 {
2343 uint64_t* cgen_var_171;
2344 countingStream->alloc((void**)&cgen_var_171, ((fenceCount)) * 8);
2345 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_171, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002346 countingStream->write((uint64_t*)cgen_var_171, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002347 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002348 countingStream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2349 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002350 }
2351 uint32_t packetSize_vkWaitForFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2352 countingStream->rewind();
2353 uint32_t opcode_vkWaitForFences = OP_vkWaitForFences;
2354 stream->write(&opcode_vkWaitForFences, sizeof(uint32_t));
2355 stream->write(&packetSize_vkWaitForFences, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002356 uint64_t cgen_var_172;
2357 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_172, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002358 stream->write((uint64_t*)&cgen_var_172, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002359 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002360 if (((fenceCount)))
2361 {
2362 uint64_t* cgen_var_173;
2363 stream->alloc((void**)&cgen_var_173, ((fenceCount)) * 8);
2364 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_173, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002365 stream->write((uint64_t*)cgen_var_173, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002366 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002367 stream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2368 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002369 VkResult vkWaitForFences_VkResult_return = (VkResult)0;
2370 stream->read(&vkWaitForFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002371 countingStream->clearPool();
2372 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002373 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002374 return vkWaitForFences_VkResult_return;
2375}
2376
2377VkResult VkEncoder::vkCreateSemaphore(
2378 VkDevice device,
2379 const VkSemaphoreCreateInfo* pCreateInfo,
2380 const VkAllocationCallbacks* pAllocator,
2381 VkSemaphore* pSemaphore)
2382{
2383 auto stream = mImpl->stream();
2384 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002385 auto resources = mImpl->resources();
2386 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002387 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002388 VkDevice local_device;
2389 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002390 VkSemaphoreCreateInfo* local_pCreateInfo;
2391 local_pCreateInfo = nullptr;
2392 if (pCreateInfo)
2393 {
2394 local_pCreateInfo = (VkSemaphoreCreateInfo*)pool->alloc(sizeof(const VkSemaphoreCreateInfo));
2395 deepcopy_VkSemaphoreCreateInfo(pool, pCreateInfo, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
2396 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002397 VkAllocationCallbacks* local_pAllocator;
2398 local_pAllocator = nullptr;
2399 if (pAllocator)
2400 {
2401 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2402 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2403 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002404 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002405 countingStream->rewind();
2406 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002407 uint64_t cgen_var_174;
2408 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_174, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002409 countingStream->write((uint64_t*)&cgen_var_174, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002410 marshal_VkSemaphoreCreateInfo(countingStream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002411 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002412 uint64_t cgen_var_175 = (uint64_t)(uintptr_t)local_pAllocator;
2413 countingStream->putBe64(cgen_var_175);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002414 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002415 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002416 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002417 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002418 uint64_t cgen_var_176;
2419 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_176, 1);
2420 countingStream->write((uint64_t*)&cgen_var_176, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002421 }
2422 uint32_t packetSize_vkCreateSemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2423 countingStream->rewind();
2424 uint32_t opcode_vkCreateSemaphore = OP_vkCreateSemaphore;
2425 stream->write(&opcode_vkCreateSemaphore, sizeof(uint32_t));
2426 stream->write(&packetSize_vkCreateSemaphore, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002427 uint64_t cgen_var_177;
2428 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_177, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002429 stream->write((uint64_t*)&cgen_var_177, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002430 marshal_VkSemaphoreCreateInfo(stream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002431 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002432 uint64_t cgen_var_178 = (uint64_t)(uintptr_t)local_pAllocator;
2433 stream->putBe64(cgen_var_178);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002434 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002435 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002436 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002437 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002438 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002439 uint64_t cgen_var_179;
2440 stream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_179, 1);
2441 stream->write((uint64_t*)&cgen_var_179, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002442 stream->setHandleMapping(resources->unwrapMapping());
2443 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002444 uint64_t cgen_var_180;
2445 stream->read((uint64_t*)&cgen_var_180, 8);
2446 stream->handleMapping()->mapHandles_u64_VkSemaphore(&cgen_var_180, (VkSemaphore*)pSemaphore, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002447 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002448 VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
2449 stream->read(&vkCreateSemaphore_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002450 countingStream->clearPool();
2451 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002452 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002453 return vkCreateSemaphore_VkResult_return;
2454}
2455
2456void VkEncoder::vkDestroySemaphore(
2457 VkDevice device,
2458 VkSemaphore semaphore,
2459 const VkAllocationCallbacks* pAllocator)
2460{
2461 auto stream = mImpl->stream();
2462 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002463 auto resources = mImpl->resources();
2464 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002465 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002466 VkDevice local_device;
2467 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002468 VkSemaphore local_semaphore;
2469 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002470 VkAllocationCallbacks* local_pAllocator;
2471 local_pAllocator = nullptr;
2472 if (pAllocator)
2473 {
2474 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2475 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2476 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002477 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002478 countingStream->rewind();
2479 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002480 uint64_t cgen_var_181;
2481 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_181, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002482 countingStream->write((uint64_t*)&cgen_var_181, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002483 uint64_t cgen_var_182;
2484 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_182, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002485 countingStream->write((uint64_t*)&cgen_var_182, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002486 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002487 uint64_t cgen_var_183 = (uint64_t)(uintptr_t)local_pAllocator;
2488 countingStream->putBe64(cgen_var_183);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002489 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002490 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002491 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002492 }
2493 }
2494 uint32_t packetSize_vkDestroySemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2495 countingStream->rewind();
2496 uint32_t opcode_vkDestroySemaphore = OP_vkDestroySemaphore;
2497 stream->write(&opcode_vkDestroySemaphore, sizeof(uint32_t));
2498 stream->write(&packetSize_vkDestroySemaphore, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002499 uint64_t cgen_var_184;
2500 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_184, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002501 stream->write((uint64_t*)&cgen_var_184, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002502 uint64_t cgen_var_185;
2503 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_185, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002504 stream->write((uint64_t*)&cgen_var_185, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002505 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002506 uint64_t cgen_var_186 = (uint64_t)(uintptr_t)local_pAllocator;
2507 stream->putBe64(cgen_var_186);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002508 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002509 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002510 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002511 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002512 resources->destroyMapping()->mapHandles_VkSemaphore((VkSemaphore*)&semaphore);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002513}
2514
2515VkResult VkEncoder::vkCreateEvent(
2516 VkDevice device,
2517 const VkEventCreateInfo* pCreateInfo,
2518 const VkAllocationCallbacks* pAllocator,
2519 VkEvent* pEvent)
2520{
2521 auto stream = mImpl->stream();
2522 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002523 auto resources = mImpl->resources();
2524 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002525 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002526 VkDevice local_device;
2527 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002528 VkEventCreateInfo* local_pCreateInfo;
2529 local_pCreateInfo = nullptr;
2530 if (pCreateInfo)
2531 {
2532 local_pCreateInfo = (VkEventCreateInfo*)pool->alloc(sizeof(const VkEventCreateInfo));
2533 deepcopy_VkEventCreateInfo(pool, pCreateInfo, (VkEventCreateInfo*)(local_pCreateInfo));
2534 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002535 VkAllocationCallbacks* local_pAllocator;
2536 local_pAllocator = nullptr;
2537 if (pAllocator)
2538 {
2539 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2540 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2541 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002542 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002543 countingStream->rewind();
2544 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002545 uint64_t cgen_var_187;
2546 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_187, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002547 countingStream->write((uint64_t*)&cgen_var_187, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002548 marshal_VkEventCreateInfo(countingStream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002549 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002550 uint64_t cgen_var_188 = (uint64_t)(uintptr_t)local_pAllocator;
2551 countingStream->putBe64(cgen_var_188);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002552 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002553 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002554 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002555 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002556 uint64_t cgen_var_189;
2557 countingStream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_189, 1);
2558 countingStream->write((uint64_t*)&cgen_var_189, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002559 }
2560 uint32_t packetSize_vkCreateEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2561 countingStream->rewind();
2562 uint32_t opcode_vkCreateEvent = OP_vkCreateEvent;
2563 stream->write(&opcode_vkCreateEvent, sizeof(uint32_t));
2564 stream->write(&packetSize_vkCreateEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002565 uint64_t cgen_var_190;
2566 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_190, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002567 stream->write((uint64_t*)&cgen_var_190, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002568 marshal_VkEventCreateInfo(stream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002569 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002570 uint64_t cgen_var_191 = (uint64_t)(uintptr_t)local_pAllocator;
2571 stream->putBe64(cgen_var_191);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002572 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002573 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002574 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002575 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002576 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002577 uint64_t cgen_var_192;
2578 stream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_192, 1);
2579 stream->write((uint64_t*)&cgen_var_192, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002580 stream->setHandleMapping(resources->unwrapMapping());
2581 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002582 uint64_t cgen_var_193;
2583 stream->read((uint64_t*)&cgen_var_193, 8);
2584 stream->handleMapping()->mapHandles_u64_VkEvent(&cgen_var_193, (VkEvent*)pEvent, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002585 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002586 VkResult vkCreateEvent_VkResult_return = (VkResult)0;
2587 stream->read(&vkCreateEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002588 countingStream->clearPool();
2589 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002590 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002591 return vkCreateEvent_VkResult_return;
2592}
2593
2594void VkEncoder::vkDestroyEvent(
2595 VkDevice device,
2596 VkEvent event,
2597 const VkAllocationCallbacks* pAllocator)
2598{
2599 auto stream = mImpl->stream();
2600 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002601 auto resources = mImpl->resources();
2602 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002603 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002604 VkDevice local_device;
2605 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002606 VkEvent local_event;
2607 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002608 VkAllocationCallbacks* local_pAllocator;
2609 local_pAllocator = nullptr;
2610 if (pAllocator)
2611 {
2612 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2613 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2614 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002615 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002616 countingStream->rewind();
2617 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002618 uint64_t cgen_var_194;
2619 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_194, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002620 countingStream->write((uint64_t*)&cgen_var_194, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002621 uint64_t cgen_var_195;
2622 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_195, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002623 countingStream->write((uint64_t*)&cgen_var_195, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002624 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002625 uint64_t cgen_var_196 = (uint64_t)(uintptr_t)local_pAllocator;
2626 countingStream->putBe64(cgen_var_196);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002627 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002628 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002629 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002630 }
2631 }
2632 uint32_t packetSize_vkDestroyEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2633 countingStream->rewind();
2634 uint32_t opcode_vkDestroyEvent = OP_vkDestroyEvent;
2635 stream->write(&opcode_vkDestroyEvent, sizeof(uint32_t));
2636 stream->write(&packetSize_vkDestroyEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002637 uint64_t cgen_var_197;
2638 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_197, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002639 stream->write((uint64_t*)&cgen_var_197, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002640 uint64_t cgen_var_198;
2641 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_198, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002642 stream->write((uint64_t*)&cgen_var_198, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002643 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002644 uint64_t cgen_var_199 = (uint64_t)(uintptr_t)local_pAllocator;
2645 stream->putBe64(cgen_var_199);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002646 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002647 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002648 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002649 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002650 resources->destroyMapping()->mapHandles_VkEvent((VkEvent*)&event);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002651}
2652
2653VkResult VkEncoder::vkGetEventStatus(
2654 VkDevice device,
2655 VkEvent event)
2656{
2657 auto stream = mImpl->stream();
2658 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002659 auto resources = mImpl->resources();
2660 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002661 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002662 VkDevice local_device;
2663 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002664 VkEvent local_event;
2665 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002666 countingStream->rewind();
2667 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002668 uint64_t cgen_var_200;
2669 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_200, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002670 countingStream->write((uint64_t*)&cgen_var_200, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002671 uint64_t cgen_var_201;
2672 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_201, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002673 countingStream->write((uint64_t*)&cgen_var_201, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002674 }
2675 uint32_t packetSize_vkGetEventStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2676 countingStream->rewind();
2677 uint32_t opcode_vkGetEventStatus = OP_vkGetEventStatus;
2678 stream->write(&opcode_vkGetEventStatus, sizeof(uint32_t));
2679 stream->write(&packetSize_vkGetEventStatus, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002680 uint64_t cgen_var_202;
2681 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_202, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002682 stream->write((uint64_t*)&cgen_var_202, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002683 uint64_t cgen_var_203;
2684 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_203, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002685 stream->write((uint64_t*)&cgen_var_203, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002686 VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
2687 stream->read(&vkGetEventStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002688 countingStream->clearPool();
2689 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002690 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002691 return vkGetEventStatus_VkResult_return;
2692}
2693
2694VkResult VkEncoder::vkSetEvent(
2695 VkDevice device,
2696 VkEvent event)
2697{
2698 auto stream = mImpl->stream();
2699 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002700 auto resources = mImpl->resources();
2701 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002702 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002703 VkDevice local_device;
2704 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002705 VkEvent local_event;
2706 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002707 countingStream->rewind();
2708 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002709 uint64_t cgen_var_204;
2710 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_204, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002711 countingStream->write((uint64_t*)&cgen_var_204, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002712 uint64_t cgen_var_205;
2713 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_205, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002714 countingStream->write((uint64_t*)&cgen_var_205, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002715 }
2716 uint32_t packetSize_vkSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2717 countingStream->rewind();
2718 uint32_t opcode_vkSetEvent = OP_vkSetEvent;
2719 stream->write(&opcode_vkSetEvent, sizeof(uint32_t));
2720 stream->write(&packetSize_vkSetEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002721 uint64_t cgen_var_206;
2722 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_206, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002723 stream->write((uint64_t*)&cgen_var_206, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002724 uint64_t cgen_var_207;
2725 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_207, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002726 stream->write((uint64_t*)&cgen_var_207, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002727 VkResult vkSetEvent_VkResult_return = (VkResult)0;
2728 stream->read(&vkSetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002729 countingStream->clearPool();
2730 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002731 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002732 return vkSetEvent_VkResult_return;
2733}
2734
2735VkResult VkEncoder::vkResetEvent(
2736 VkDevice device,
2737 VkEvent event)
2738{
2739 auto stream = mImpl->stream();
2740 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002741 auto resources = mImpl->resources();
2742 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002743 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002744 VkDevice local_device;
2745 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002746 VkEvent local_event;
2747 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002748 countingStream->rewind();
2749 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002750 uint64_t cgen_var_208;
2751 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_208, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002752 countingStream->write((uint64_t*)&cgen_var_208, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002753 uint64_t cgen_var_209;
2754 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_209, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002755 countingStream->write((uint64_t*)&cgen_var_209, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002756 }
2757 uint32_t packetSize_vkResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2758 countingStream->rewind();
2759 uint32_t opcode_vkResetEvent = OP_vkResetEvent;
2760 stream->write(&opcode_vkResetEvent, sizeof(uint32_t));
2761 stream->write(&packetSize_vkResetEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002762 uint64_t cgen_var_210;
2763 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_210, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002764 stream->write((uint64_t*)&cgen_var_210, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002765 uint64_t cgen_var_211;
2766 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_211, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002767 stream->write((uint64_t*)&cgen_var_211, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002768 VkResult vkResetEvent_VkResult_return = (VkResult)0;
2769 stream->read(&vkResetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002770 countingStream->clearPool();
2771 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002772 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002773 return vkResetEvent_VkResult_return;
2774}
2775
2776VkResult VkEncoder::vkCreateQueryPool(
2777 VkDevice device,
2778 const VkQueryPoolCreateInfo* pCreateInfo,
2779 const VkAllocationCallbacks* pAllocator,
2780 VkQueryPool* pQueryPool)
2781{
2782 auto stream = mImpl->stream();
2783 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002784 auto resources = mImpl->resources();
2785 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002786 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002787 VkDevice local_device;
2788 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002789 VkQueryPoolCreateInfo* local_pCreateInfo;
2790 local_pCreateInfo = nullptr;
2791 if (pCreateInfo)
2792 {
2793 local_pCreateInfo = (VkQueryPoolCreateInfo*)pool->alloc(sizeof(const VkQueryPoolCreateInfo));
2794 deepcopy_VkQueryPoolCreateInfo(pool, pCreateInfo, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
2795 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002796 VkAllocationCallbacks* local_pAllocator;
2797 local_pAllocator = nullptr;
2798 if (pAllocator)
2799 {
2800 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2801 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2802 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002803 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002804 countingStream->rewind();
2805 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002806 uint64_t cgen_var_212;
2807 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_212, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002808 countingStream->write((uint64_t*)&cgen_var_212, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002809 marshal_VkQueryPoolCreateInfo(countingStream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002810 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002811 uint64_t cgen_var_213 = (uint64_t)(uintptr_t)local_pAllocator;
2812 countingStream->putBe64(cgen_var_213);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002813 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002814 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002815 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002816 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002817 uint64_t cgen_var_214;
2818 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_214, 1);
2819 countingStream->write((uint64_t*)&cgen_var_214, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002820 }
2821 uint32_t packetSize_vkCreateQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2822 countingStream->rewind();
2823 uint32_t opcode_vkCreateQueryPool = OP_vkCreateQueryPool;
2824 stream->write(&opcode_vkCreateQueryPool, sizeof(uint32_t));
2825 stream->write(&packetSize_vkCreateQueryPool, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002826 uint64_t cgen_var_215;
2827 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_215, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002828 stream->write((uint64_t*)&cgen_var_215, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002829 marshal_VkQueryPoolCreateInfo(stream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002830 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002831 uint64_t cgen_var_216 = (uint64_t)(uintptr_t)local_pAllocator;
2832 stream->putBe64(cgen_var_216);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002833 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002834 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002835 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002836 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002837 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002838 uint64_t cgen_var_217;
2839 stream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_217, 1);
2840 stream->write((uint64_t*)&cgen_var_217, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002841 stream->setHandleMapping(resources->unwrapMapping());
2842 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002843 uint64_t cgen_var_218;
2844 stream->read((uint64_t*)&cgen_var_218, 8);
2845 stream->handleMapping()->mapHandles_u64_VkQueryPool(&cgen_var_218, (VkQueryPool*)pQueryPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002846 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002847 VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
2848 stream->read(&vkCreateQueryPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002849 countingStream->clearPool();
2850 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002851 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002852 return vkCreateQueryPool_VkResult_return;
2853}
2854
2855void VkEncoder::vkDestroyQueryPool(
2856 VkDevice device,
2857 VkQueryPool queryPool,
2858 const VkAllocationCallbacks* pAllocator)
2859{
2860 auto stream = mImpl->stream();
2861 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002862 auto resources = mImpl->resources();
2863 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002864 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002865 VkDevice local_device;
2866 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002867 VkQueryPool local_queryPool;
2868 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002869 VkAllocationCallbacks* local_pAllocator;
2870 local_pAllocator = nullptr;
2871 if (pAllocator)
2872 {
2873 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2874 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2875 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002876 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002877 countingStream->rewind();
2878 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002879 uint64_t cgen_var_219;
2880 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_219, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002881 countingStream->write((uint64_t*)&cgen_var_219, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002882 uint64_t cgen_var_220;
2883 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_220, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002884 countingStream->write((uint64_t*)&cgen_var_220, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002885 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002886 uint64_t cgen_var_221 = (uint64_t)(uintptr_t)local_pAllocator;
2887 countingStream->putBe64(cgen_var_221);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002888 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002889 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002890 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002891 }
2892 }
2893 uint32_t packetSize_vkDestroyQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2894 countingStream->rewind();
2895 uint32_t opcode_vkDestroyQueryPool = OP_vkDestroyQueryPool;
2896 stream->write(&opcode_vkDestroyQueryPool, sizeof(uint32_t));
2897 stream->write(&packetSize_vkDestroyQueryPool, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002898 uint64_t cgen_var_222;
2899 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_222, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002900 stream->write((uint64_t*)&cgen_var_222, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002901 uint64_t cgen_var_223;
2902 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_223, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002903 stream->write((uint64_t*)&cgen_var_223, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002904 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002905 uint64_t cgen_var_224 = (uint64_t)(uintptr_t)local_pAllocator;
2906 stream->putBe64(cgen_var_224);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002907 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002908 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002909 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002910 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002911 resources->destroyMapping()->mapHandles_VkQueryPool((VkQueryPool*)&queryPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002912}
2913
2914VkResult VkEncoder::vkGetQueryPoolResults(
2915 VkDevice device,
2916 VkQueryPool queryPool,
2917 uint32_t firstQuery,
2918 uint32_t queryCount,
2919 size_t dataSize,
2920 void* pData,
2921 VkDeviceSize stride,
2922 VkQueryResultFlags flags)
2923{
2924 auto stream = mImpl->stream();
2925 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002926 auto resources = mImpl->resources();
2927 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002928 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002929 VkDevice local_device;
2930 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002931 VkQueryPool local_queryPool;
2932 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002933 uint32_t local_firstQuery;
2934 local_firstQuery = firstQuery;
2935 uint32_t local_queryCount;
2936 local_queryCount = queryCount;
2937 size_t local_dataSize;
2938 local_dataSize = dataSize;
2939 VkDeviceSize local_stride;
2940 local_stride = stride;
2941 VkQueryResultFlags local_flags;
2942 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002943 countingStream->rewind();
2944 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002945 uint64_t cgen_var_225;
2946 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_225, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002947 countingStream->write((uint64_t*)&cgen_var_225, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002948 uint64_t cgen_var_226;
2949 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_226, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002950 countingStream->write((uint64_t*)&cgen_var_226, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002951 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
2952 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08002953 uint64_t cgen_var_227 = (uint64_t)local_dataSize;
2954 countingStream->putBe64(cgen_var_227);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002955 countingStream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002956 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
2957 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002958 }
2959 uint32_t packetSize_vkGetQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2960 countingStream->rewind();
2961 uint32_t opcode_vkGetQueryPoolResults = OP_vkGetQueryPoolResults;
2962 stream->write(&opcode_vkGetQueryPoolResults, sizeof(uint32_t));
2963 stream->write(&packetSize_vkGetQueryPoolResults, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002964 uint64_t cgen_var_228;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08002965 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_228, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002966 stream->write((uint64_t*)&cgen_var_228, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08002967 uint64_t cgen_var_229;
2968 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_229, 1);
2969 stream->write((uint64_t*)&cgen_var_229, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002970 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
2971 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08002972 uint64_t cgen_var_230 = (uint64_t)local_dataSize;
2973 stream->putBe64(cgen_var_230);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002974 stream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002975 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
2976 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002977 stream->read((void*)pData, ((dataSize)) * sizeof(uint8_t));
2978 VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
2979 stream->read(&vkGetQueryPoolResults_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002980 countingStream->clearPool();
2981 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002982 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002983 return vkGetQueryPoolResults_VkResult_return;
2984}
2985
2986VkResult VkEncoder::vkCreateBuffer(
2987 VkDevice device,
2988 const VkBufferCreateInfo* pCreateInfo,
2989 const VkAllocationCallbacks* pAllocator,
2990 VkBuffer* pBuffer)
2991{
2992 auto stream = mImpl->stream();
2993 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002994 auto resources = mImpl->resources();
2995 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002996 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002997 VkDevice local_device;
2998 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002999 VkBufferCreateInfo* local_pCreateInfo;
3000 local_pCreateInfo = nullptr;
3001 if (pCreateInfo)
3002 {
3003 local_pCreateInfo = (VkBufferCreateInfo*)pool->alloc(sizeof(const VkBufferCreateInfo));
3004 deepcopy_VkBufferCreateInfo(pool, pCreateInfo, (VkBufferCreateInfo*)(local_pCreateInfo));
3005 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003006 VkAllocationCallbacks* local_pAllocator;
3007 local_pAllocator = nullptr;
3008 if (pAllocator)
3009 {
3010 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3011 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3012 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003013 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003014 countingStream->rewind();
3015 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003016 uint64_t cgen_var_231;
3017 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_231, 1);
3018 countingStream->write((uint64_t*)&cgen_var_231, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003019 marshal_VkBufferCreateInfo(countingStream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003020 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003021 uint64_t cgen_var_232 = (uint64_t)(uintptr_t)local_pAllocator;
3022 countingStream->putBe64(cgen_var_232);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003023 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003024 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003025 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003026 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003027 uint64_t cgen_var_233;
3028 countingStream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_233, 1);
3029 countingStream->write((uint64_t*)&cgen_var_233, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003030 }
3031 uint32_t packetSize_vkCreateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3032 countingStream->rewind();
3033 uint32_t opcode_vkCreateBuffer = OP_vkCreateBuffer;
3034 stream->write(&opcode_vkCreateBuffer, sizeof(uint32_t));
3035 stream->write(&packetSize_vkCreateBuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003036 uint64_t cgen_var_234;
3037 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_234, 1);
3038 stream->write((uint64_t*)&cgen_var_234, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003039 marshal_VkBufferCreateInfo(stream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003040 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003041 uint64_t cgen_var_235 = (uint64_t)(uintptr_t)local_pAllocator;
3042 stream->putBe64(cgen_var_235);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003043 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003044 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003045 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003046 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003047 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003048 uint64_t cgen_var_236;
3049 stream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_236, 1);
3050 stream->write((uint64_t*)&cgen_var_236, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003051 stream->setHandleMapping(resources->unwrapMapping());
3052 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003053 uint64_t cgen_var_237;
3054 stream->read((uint64_t*)&cgen_var_237, 8);
3055 stream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_237, (VkBuffer*)pBuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003056 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003057 VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
3058 stream->read(&vkCreateBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003059 countingStream->clearPool();
3060 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003061 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003062 return vkCreateBuffer_VkResult_return;
3063}
3064
3065void VkEncoder::vkDestroyBuffer(
3066 VkDevice device,
3067 VkBuffer buffer,
3068 const VkAllocationCallbacks* pAllocator)
3069{
3070 auto stream = mImpl->stream();
3071 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003072 auto resources = mImpl->resources();
3073 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003074 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003075 VkDevice local_device;
3076 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003077 VkBuffer local_buffer;
3078 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003079 VkAllocationCallbacks* local_pAllocator;
3080 local_pAllocator = nullptr;
3081 if (pAllocator)
3082 {
3083 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3084 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3085 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003086 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003087 countingStream->rewind();
3088 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003089 uint64_t cgen_var_238;
3090 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_238, 1);
3091 countingStream->write((uint64_t*)&cgen_var_238, 1 * 8);
3092 uint64_t cgen_var_239;
3093 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_239, 1);
3094 countingStream->write((uint64_t*)&cgen_var_239, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003095 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003096 uint64_t cgen_var_240 = (uint64_t)(uintptr_t)local_pAllocator;
3097 countingStream->putBe64(cgen_var_240);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003098 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003099 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003100 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003101 }
3102 }
3103 uint32_t packetSize_vkDestroyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3104 countingStream->rewind();
3105 uint32_t opcode_vkDestroyBuffer = OP_vkDestroyBuffer;
3106 stream->write(&opcode_vkDestroyBuffer, sizeof(uint32_t));
3107 stream->write(&packetSize_vkDestroyBuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003108 uint64_t cgen_var_241;
3109 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_241, 1);
3110 stream->write((uint64_t*)&cgen_var_241, 1 * 8);
3111 uint64_t cgen_var_242;
3112 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_242, 1);
3113 stream->write((uint64_t*)&cgen_var_242, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003114 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003115 uint64_t cgen_var_243 = (uint64_t)(uintptr_t)local_pAllocator;
3116 stream->putBe64(cgen_var_243);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003117 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003118 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003119 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003120 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003121 resources->destroyMapping()->mapHandles_VkBuffer((VkBuffer*)&buffer);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003122}
3123
3124VkResult VkEncoder::vkCreateBufferView(
3125 VkDevice device,
3126 const VkBufferViewCreateInfo* pCreateInfo,
3127 const VkAllocationCallbacks* pAllocator,
3128 VkBufferView* pView)
3129{
3130 auto stream = mImpl->stream();
3131 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003132 auto resources = mImpl->resources();
3133 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003134 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003135 VkDevice local_device;
3136 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003137 VkBufferViewCreateInfo* local_pCreateInfo;
3138 local_pCreateInfo = nullptr;
3139 if (pCreateInfo)
3140 {
3141 local_pCreateInfo = (VkBufferViewCreateInfo*)pool->alloc(sizeof(const VkBufferViewCreateInfo));
3142 deepcopy_VkBufferViewCreateInfo(pool, pCreateInfo, (VkBufferViewCreateInfo*)(local_pCreateInfo));
3143 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003144 VkAllocationCallbacks* local_pAllocator;
3145 local_pAllocator = nullptr;
3146 if (pAllocator)
3147 {
3148 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3149 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3150 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003151 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003152 countingStream->rewind();
3153 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003154 uint64_t cgen_var_244;
3155 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_244, 1);
3156 countingStream->write((uint64_t*)&cgen_var_244, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003157 marshal_VkBufferViewCreateInfo(countingStream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003158 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003159 uint64_t cgen_var_245 = (uint64_t)(uintptr_t)local_pAllocator;
3160 countingStream->putBe64(cgen_var_245);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003161 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003162 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003163 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003164 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003165 uint64_t cgen_var_246;
3166 countingStream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_246, 1);
3167 countingStream->write((uint64_t*)&cgen_var_246, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003168 }
3169 uint32_t packetSize_vkCreateBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3170 countingStream->rewind();
3171 uint32_t opcode_vkCreateBufferView = OP_vkCreateBufferView;
3172 stream->write(&opcode_vkCreateBufferView, sizeof(uint32_t));
3173 stream->write(&packetSize_vkCreateBufferView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003174 uint64_t cgen_var_247;
3175 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_247, 1);
3176 stream->write((uint64_t*)&cgen_var_247, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003177 marshal_VkBufferViewCreateInfo(stream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003178 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003179 uint64_t cgen_var_248 = (uint64_t)(uintptr_t)local_pAllocator;
3180 stream->putBe64(cgen_var_248);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003181 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003182 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003183 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003184 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003185 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003186 uint64_t cgen_var_249;
3187 stream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_249, 1);
3188 stream->write((uint64_t*)&cgen_var_249, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003189 stream->setHandleMapping(resources->unwrapMapping());
3190 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003191 uint64_t cgen_var_250;
3192 stream->read((uint64_t*)&cgen_var_250, 8);
3193 stream->handleMapping()->mapHandles_u64_VkBufferView(&cgen_var_250, (VkBufferView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003194 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003195 VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
3196 stream->read(&vkCreateBufferView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003197 countingStream->clearPool();
3198 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003199 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003200 return vkCreateBufferView_VkResult_return;
3201}
3202
3203void VkEncoder::vkDestroyBufferView(
3204 VkDevice device,
3205 VkBufferView bufferView,
3206 const VkAllocationCallbacks* pAllocator)
3207{
3208 auto stream = mImpl->stream();
3209 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003210 auto resources = mImpl->resources();
3211 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003212 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003213 VkDevice local_device;
3214 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003215 VkBufferView local_bufferView;
3216 local_bufferView = bufferView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003217 VkAllocationCallbacks* local_pAllocator;
3218 local_pAllocator = nullptr;
3219 if (pAllocator)
3220 {
3221 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3222 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3223 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003224 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003225 countingStream->rewind();
3226 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003227 uint64_t cgen_var_251;
3228 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_251, 1);
3229 countingStream->write((uint64_t*)&cgen_var_251, 1 * 8);
3230 uint64_t cgen_var_252;
3231 countingStream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_252, 1);
3232 countingStream->write((uint64_t*)&cgen_var_252, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003233 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003234 uint64_t cgen_var_253 = (uint64_t)(uintptr_t)local_pAllocator;
3235 countingStream->putBe64(cgen_var_253);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003236 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003237 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003238 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003239 }
3240 }
3241 uint32_t packetSize_vkDestroyBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3242 countingStream->rewind();
3243 uint32_t opcode_vkDestroyBufferView = OP_vkDestroyBufferView;
3244 stream->write(&opcode_vkDestroyBufferView, sizeof(uint32_t));
3245 stream->write(&packetSize_vkDestroyBufferView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003246 uint64_t cgen_var_254;
3247 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_254, 1);
3248 stream->write((uint64_t*)&cgen_var_254, 1 * 8);
3249 uint64_t cgen_var_255;
3250 stream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_255, 1);
3251 stream->write((uint64_t*)&cgen_var_255, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003252 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003253 uint64_t cgen_var_256 = (uint64_t)(uintptr_t)local_pAllocator;
3254 stream->putBe64(cgen_var_256);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003255 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003256 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003257 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003258 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003259 resources->destroyMapping()->mapHandles_VkBufferView((VkBufferView*)&bufferView);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003260}
3261
3262VkResult VkEncoder::vkCreateImage(
3263 VkDevice device,
3264 const VkImageCreateInfo* pCreateInfo,
3265 const VkAllocationCallbacks* pAllocator,
3266 VkImage* pImage)
3267{
3268 auto stream = mImpl->stream();
3269 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003270 auto resources = mImpl->resources();
3271 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003272 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003273 VkDevice local_device;
3274 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003275 VkImageCreateInfo* local_pCreateInfo;
3276 local_pCreateInfo = nullptr;
3277 if (pCreateInfo)
3278 {
3279 local_pCreateInfo = (VkImageCreateInfo*)pool->alloc(sizeof(const VkImageCreateInfo));
3280 deepcopy_VkImageCreateInfo(pool, pCreateInfo, (VkImageCreateInfo*)(local_pCreateInfo));
3281 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003282 VkAllocationCallbacks* local_pAllocator;
3283 local_pAllocator = nullptr;
3284 if (pAllocator)
3285 {
3286 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3287 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3288 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003289 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003290 countingStream->rewind();
3291 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003292 uint64_t cgen_var_257;
3293 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_257, 1);
3294 countingStream->write((uint64_t*)&cgen_var_257, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003295 marshal_VkImageCreateInfo(countingStream, (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003296 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003297 uint64_t cgen_var_258 = (uint64_t)(uintptr_t)local_pAllocator;
3298 countingStream->putBe64(cgen_var_258);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003299 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003300 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003301 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003302 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003303 uint64_t cgen_var_259;
3304 countingStream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_259, 1);
3305 countingStream->write((uint64_t*)&cgen_var_259, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003306 }
3307 uint32_t packetSize_vkCreateImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3308 countingStream->rewind();
3309 uint32_t opcode_vkCreateImage = OP_vkCreateImage;
3310 stream->write(&opcode_vkCreateImage, sizeof(uint32_t));
3311 stream->write(&packetSize_vkCreateImage, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003312 uint64_t cgen_var_260;
3313 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_260, 1);
3314 stream->write((uint64_t*)&cgen_var_260, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003315 marshal_VkImageCreateInfo(stream, (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003316 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003317 uint64_t cgen_var_261 = (uint64_t)(uintptr_t)local_pAllocator;
3318 stream->putBe64(cgen_var_261);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003319 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003320 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003321 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003322 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003323 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003324 uint64_t cgen_var_262;
3325 stream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_262, 1);
3326 stream->write((uint64_t*)&cgen_var_262, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003327 stream->setHandleMapping(resources->unwrapMapping());
3328 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003329 uint64_t cgen_var_263;
3330 stream->read((uint64_t*)&cgen_var_263, 8);
3331 stream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_263, (VkImage*)pImage, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003332 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003333 VkResult vkCreateImage_VkResult_return = (VkResult)0;
3334 stream->read(&vkCreateImage_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003335 countingStream->clearPool();
3336 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003337 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003338 return vkCreateImage_VkResult_return;
3339}
3340
3341void VkEncoder::vkDestroyImage(
3342 VkDevice device,
3343 VkImage image,
3344 const VkAllocationCallbacks* pAllocator)
3345{
3346 auto stream = mImpl->stream();
3347 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003348 auto resources = mImpl->resources();
3349 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003350 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003351 VkDevice local_device;
3352 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003353 VkImage local_image;
3354 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003355 VkAllocationCallbacks* local_pAllocator;
3356 local_pAllocator = nullptr;
3357 if (pAllocator)
3358 {
3359 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3360 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3361 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003362 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003363 countingStream->rewind();
3364 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003365 uint64_t cgen_var_264;
3366 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_264, 1);
3367 countingStream->write((uint64_t*)&cgen_var_264, 1 * 8);
3368 uint64_t cgen_var_265;
3369 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_265, 1);
3370 countingStream->write((uint64_t*)&cgen_var_265, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003371 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003372 uint64_t cgen_var_266 = (uint64_t)(uintptr_t)local_pAllocator;
3373 countingStream->putBe64(cgen_var_266);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003374 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003375 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003376 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003377 }
3378 }
3379 uint32_t packetSize_vkDestroyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3380 countingStream->rewind();
3381 uint32_t opcode_vkDestroyImage = OP_vkDestroyImage;
3382 stream->write(&opcode_vkDestroyImage, sizeof(uint32_t));
3383 stream->write(&packetSize_vkDestroyImage, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003384 uint64_t cgen_var_267;
3385 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_267, 1);
3386 stream->write((uint64_t*)&cgen_var_267, 1 * 8);
3387 uint64_t cgen_var_268;
3388 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_268, 1);
3389 stream->write((uint64_t*)&cgen_var_268, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003390 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003391 uint64_t cgen_var_269 = (uint64_t)(uintptr_t)local_pAllocator;
3392 stream->putBe64(cgen_var_269);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003393 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003394 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003395 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003396 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003397 resources->destroyMapping()->mapHandles_VkImage((VkImage*)&image);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003398}
3399
3400void VkEncoder::vkGetImageSubresourceLayout(
3401 VkDevice device,
3402 VkImage image,
3403 const VkImageSubresource* pSubresource,
3404 VkSubresourceLayout* pLayout)
3405{
3406 auto stream = mImpl->stream();
3407 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003408 auto resources = mImpl->resources();
3409 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003410 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003411 VkDevice local_device;
3412 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003413 VkImage local_image;
3414 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003415 VkImageSubresource* local_pSubresource;
3416 local_pSubresource = nullptr;
3417 if (pSubresource)
3418 {
3419 local_pSubresource = (VkImageSubresource*)pool->alloc(sizeof(const VkImageSubresource));
3420 deepcopy_VkImageSubresource(pool, pSubresource, (VkImageSubresource*)(local_pSubresource));
3421 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003422 countingStream->rewind();
3423 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003424 uint64_t cgen_var_270;
3425 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_270, 1);
3426 countingStream->write((uint64_t*)&cgen_var_270, 1 * 8);
3427 uint64_t cgen_var_271;
3428 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_271, 1);
3429 countingStream->write((uint64_t*)&cgen_var_271, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003430 marshal_VkImageSubresource(countingStream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003431 marshal_VkSubresourceLayout(countingStream, (VkSubresourceLayout*)(pLayout));
3432 }
3433 uint32_t packetSize_vkGetImageSubresourceLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3434 countingStream->rewind();
3435 uint32_t opcode_vkGetImageSubresourceLayout = OP_vkGetImageSubresourceLayout;
3436 stream->write(&opcode_vkGetImageSubresourceLayout, sizeof(uint32_t));
3437 stream->write(&packetSize_vkGetImageSubresourceLayout, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003438 uint64_t cgen_var_272;
3439 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_272, 1);
3440 stream->write((uint64_t*)&cgen_var_272, 1 * 8);
3441 uint64_t cgen_var_273;
3442 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_273, 1);
3443 stream->write((uint64_t*)&cgen_var_273, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003444 marshal_VkImageSubresource(stream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003445 marshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
3446 unmarshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
3447}
3448
3449VkResult VkEncoder::vkCreateImageView(
3450 VkDevice device,
3451 const VkImageViewCreateInfo* pCreateInfo,
3452 const VkAllocationCallbacks* pAllocator,
3453 VkImageView* pView)
3454{
3455 auto stream = mImpl->stream();
3456 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003457 auto resources = mImpl->resources();
3458 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003459 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003460 VkDevice local_device;
3461 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003462 VkImageViewCreateInfo* local_pCreateInfo;
3463 local_pCreateInfo = nullptr;
3464 if (pCreateInfo)
3465 {
3466 local_pCreateInfo = (VkImageViewCreateInfo*)pool->alloc(sizeof(const VkImageViewCreateInfo));
3467 deepcopy_VkImageViewCreateInfo(pool, pCreateInfo, (VkImageViewCreateInfo*)(local_pCreateInfo));
3468 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003469 VkAllocationCallbacks* local_pAllocator;
3470 local_pAllocator = nullptr;
3471 if (pAllocator)
3472 {
3473 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3474 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3475 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003476 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003477 countingStream->rewind();
3478 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003479 uint64_t cgen_var_274;
3480 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_274, 1);
3481 countingStream->write((uint64_t*)&cgen_var_274, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003482 marshal_VkImageViewCreateInfo(countingStream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003483 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003484 uint64_t cgen_var_275 = (uint64_t)(uintptr_t)local_pAllocator;
3485 countingStream->putBe64(cgen_var_275);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003486 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003487 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003488 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003489 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003490 uint64_t cgen_var_276;
3491 countingStream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_276, 1);
3492 countingStream->write((uint64_t*)&cgen_var_276, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003493 }
3494 uint32_t packetSize_vkCreateImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3495 countingStream->rewind();
3496 uint32_t opcode_vkCreateImageView = OP_vkCreateImageView;
3497 stream->write(&opcode_vkCreateImageView, sizeof(uint32_t));
3498 stream->write(&packetSize_vkCreateImageView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003499 uint64_t cgen_var_277;
3500 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_277, 1);
3501 stream->write((uint64_t*)&cgen_var_277, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003502 marshal_VkImageViewCreateInfo(stream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003503 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003504 uint64_t cgen_var_278 = (uint64_t)(uintptr_t)local_pAllocator;
3505 stream->putBe64(cgen_var_278);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003506 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003507 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003508 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003509 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003510 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003511 uint64_t cgen_var_279;
3512 stream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_279, 1);
3513 stream->write((uint64_t*)&cgen_var_279, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003514 stream->setHandleMapping(resources->unwrapMapping());
3515 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003516 uint64_t cgen_var_280;
3517 stream->read((uint64_t*)&cgen_var_280, 8);
3518 stream->handleMapping()->mapHandles_u64_VkImageView(&cgen_var_280, (VkImageView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003519 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003520 VkResult vkCreateImageView_VkResult_return = (VkResult)0;
3521 stream->read(&vkCreateImageView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003522 countingStream->clearPool();
3523 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003524 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003525 return vkCreateImageView_VkResult_return;
3526}
3527
3528void VkEncoder::vkDestroyImageView(
3529 VkDevice device,
3530 VkImageView imageView,
3531 const VkAllocationCallbacks* pAllocator)
3532{
3533 auto stream = mImpl->stream();
3534 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003535 auto resources = mImpl->resources();
3536 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003537 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003538 VkDevice local_device;
3539 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003540 VkImageView local_imageView;
3541 local_imageView = imageView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003542 VkAllocationCallbacks* local_pAllocator;
3543 local_pAllocator = nullptr;
3544 if (pAllocator)
3545 {
3546 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3547 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3548 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003549 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003550 countingStream->rewind();
3551 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003552 uint64_t cgen_var_281;
3553 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_281, 1);
3554 countingStream->write((uint64_t*)&cgen_var_281, 1 * 8);
3555 uint64_t cgen_var_282;
3556 countingStream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_282, 1);
3557 countingStream->write((uint64_t*)&cgen_var_282, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003558 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003559 uint64_t cgen_var_283 = (uint64_t)(uintptr_t)local_pAllocator;
3560 countingStream->putBe64(cgen_var_283);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003561 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003562 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003563 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003564 }
3565 }
3566 uint32_t packetSize_vkDestroyImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3567 countingStream->rewind();
3568 uint32_t opcode_vkDestroyImageView = OP_vkDestroyImageView;
3569 stream->write(&opcode_vkDestroyImageView, sizeof(uint32_t));
3570 stream->write(&packetSize_vkDestroyImageView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003571 uint64_t cgen_var_284;
3572 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_284, 1);
3573 stream->write((uint64_t*)&cgen_var_284, 1 * 8);
3574 uint64_t cgen_var_285;
3575 stream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_285, 1);
3576 stream->write((uint64_t*)&cgen_var_285, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003577 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003578 uint64_t cgen_var_286 = (uint64_t)(uintptr_t)local_pAllocator;
3579 stream->putBe64(cgen_var_286);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003580 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003581 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003582 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003583 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003584 resources->destroyMapping()->mapHandles_VkImageView((VkImageView*)&imageView);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003585}
3586
3587VkResult VkEncoder::vkCreateShaderModule(
3588 VkDevice device,
3589 const VkShaderModuleCreateInfo* pCreateInfo,
3590 const VkAllocationCallbacks* pAllocator,
3591 VkShaderModule* pShaderModule)
3592{
3593 auto stream = mImpl->stream();
3594 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003595 auto resources = mImpl->resources();
3596 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003597 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003598 VkDevice local_device;
3599 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003600 VkShaderModuleCreateInfo* local_pCreateInfo;
3601 local_pCreateInfo = nullptr;
3602 if (pCreateInfo)
3603 {
3604 local_pCreateInfo = (VkShaderModuleCreateInfo*)pool->alloc(sizeof(const VkShaderModuleCreateInfo));
3605 deepcopy_VkShaderModuleCreateInfo(pool, pCreateInfo, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
3606 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003607 VkAllocationCallbacks* local_pAllocator;
3608 local_pAllocator = nullptr;
3609 if (pAllocator)
3610 {
3611 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3612 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3613 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003614 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003615 countingStream->rewind();
3616 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003617 uint64_t cgen_var_287;
3618 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_287, 1);
3619 countingStream->write((uint64_t*)&cgen_var_287, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003620 marshal_VkShaderModuleCreateInfo(countingStream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003621 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003622 uint64_t cgen_var_288 = (uint64_t)(uintptr_t)local_pAllocator;
3623 countingStream->putBe64(cgen_var_288);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003624 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003625 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003626 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003627 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003628 uint64_t cgen_var_289;
3629 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_289, 1);
3630 countingStream->write((uint64_t*)&cgen_var_289, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003631 }
3632 uint32_t packetSize_vkCreateShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3633 countingStream->rewind();
3634 uint32_t opcode_vkCreateShaderModule = OP_vkCreateShaderModule;
3635 stream->write(&opcode_vkCreateShaderModule, sizeof(uint32_t));
3636 stream->write(&packetSize_vkCreateShaderModule, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003637 uint64_t cgen_var_290;
3638 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_290, 1);
3639 stream->write((uint64_t*)&cgen_var_290, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003640 marshal_VkShaderModuleCreateInfo(stream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003641 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003642 uint64_t cgen_var_291 = (uint64_t)(uintptr_t)local_pAllocator;
3643 stream->putBe64(cgen_var_291);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003644 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003645 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003646 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003647 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003648 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003649 uint64_t cgen_var_292;
3650 stream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_292, 1);
3651 stream->write((uint64_t*)&cgen_var_292, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003652 stream->setHandleMapping(resources->unwrapMapping());
3653 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003654 uint64_t cgen_var_293;
3655 stream->read((uint64_t*)&cgen_var_293, 8);
3656 stream->handleMapping()->mapHandles_u64_VkShaderModule(&cgen_var_293, (VkShaderModule*)pShaderModule, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003657 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003658 VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
3659 stream->read(&vkCreateShaderModule_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003660 countingStream->clearPool();
3661 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003662 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003663 return vkCreateShaderModule_VkResult_return;
3664}
3665
3666void VkEncoder::vkDestroyShaderModule(
3667 VkDevice device,
3668 VkShaderModule shaderModule,
3669 const VkAllocationCallbacks* pAllocator)
3670{
3671 auto stream = mImpl->stream();
3672 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003673 auto resources = mImpl->resources();
3674 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003675 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003676 VkDevice local_device;
3677 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003678 VkShaderModule local_shaderModule;
3679 local_shaderModule = shaderModule;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003680 VkAllocationCallbacks* local_pAllocator;
3681 local_pAllocator = nullptr;
3682 if (pAllocator)
3683 {
3684 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3685 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3686 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003687 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003688 countingStream->rewind();
3689 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003690 uint64_t cgen_var_294;
3691 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_294, 1);
3692 countingStream->write((uint64_t*)&cgen_var_294, 1 * 8);
3693 uint64_t cgen_var_295;
3694 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_295, 1);
3695 countingStream->write((uint64_t*)&cgen_var_295, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003696 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003697 uint64_t cgen_var_296 = (uint64_t)(uintptr_t)local_pAllocator;
3698 countingStream->putBe64(cgen_var_296);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003699 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003700 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003701 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003702 }
3703 }
3704 uint32_t packetSize_vkDestroyShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3705 countingStream->rewind();
3706 uint32_t opcode_vkDestroyShaderModule = OP_vkDestroyShaderModule;
3707 stream->write(&opcode_vkDestroyShaderModule, sizeof(uint32_t));
3708 stream->write(&packetSize_vkDestroyShaderModule, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003709 uint64_t cgen_var_297;
3710 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_297, 1);
3711 stream->write((uint64_t*)&cgen_var_297, 1 * 8);
3712 uint64_t cgen_var_298;
3713 stream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_298, 1);
3714 stream->write((uint64_t*)&cgen_var_298, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003715 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003716 uint64_t cgen_var_299 = (uint64_t)(uintptr_t)local_pAllocator;
3717 stream->putBe64(cgen_var_299);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003718 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003719 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003720 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003721 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003722 resources->destroyMapping()->mapHandles_VkShaderModule((VkShaderModule*)&shaderModule);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003723}
3724
3725VkResult VkEncoder::vkCreatePipelineCache(
3726 VkDevice device,
3727 const VkPipelineCacheCreateInfo* pCreateInfo,
3728 const VkAllocationCallbacks* pAllocator,
3729 VkPipelineCache* pPipelineCache)
3730{
3731 auto stream = mImpl->stream();
3732 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003733 auto resources = mImpl->resources();
3734 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003735 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003736 VkDevice local_device;
3737 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003738 VkPipelineCacheCreateInfo* local_pCreateInfo;
3739 local_pCreateInfo = nullptr;
3740 if (pCreateInfo)
3741 {
3742 local_pCreateInfo = (VkPipelineCacheCreateInfo*)pool->alloc(sizeof(const VkPipelineCacheCreateInfo));
3743 deepcopy_VkPipelineCacheCreateInfo(pool, pCreateInfo, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
3744 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003745 VkAllocationCallbacks* local_pAllocator;
3746 local_pAllocator = nullptr;
3747 if (pAllocator)
3748 {
3749 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3750 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3751 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003752 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003753 countingStream->rewind();
3754 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003755 uint64_t cgen_var_300;
3756 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_300, 1);
3757 countingStream->write((uint64_t*)&cgen_var_300, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003758 marshal_VkPipelineCacheCreateInfo(countingStream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003759 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003760 uint64_t cgen_var_301 = (uint64_t)(uintptr_t)local_pAllocator;
3761 countingStream->putBe64(cgen_var_301);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003762 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003763 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003764 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003765 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003766 uint64_t cgen_var_302;
3767 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_302, 1);
3768 countingStream->write((uint64_t*)&cgen_var_302, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003769 }
3770 uint32_t packetSize_vkCreatePipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3771 countingStream->rewind();
3772 uint32_t opcode_vkCreatePipelineCache = OP_vkCreatePipelineCache;
3773 stream->write(&opcode_vkCreatePipelineCache, sizeof(uint32_t));
3774 stream->write(&packetSize_vkCreatePipelineCache, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003775 uint64_t cgen_var_303;
3776 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_303, 1);
3777 stream->write((uint64_t*)&cgen_var_303, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003778 marshal_VkPipelineCacheCreateInfo(stream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003779 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003780 uint64_t cgen_var_304 = (uint64_t)(uintptr_t)local_pAllocator;
3781 stream->putBe64(cgen_var_304);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003782 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003783 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003784 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003785 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003786 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003787 uint64_t cgen_var_305;
3788 stream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_305, 1);
3789 stream->write((uint64_t*)&cgen_var_305, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003790 stream->setHandleMapping(resources->unwrapMapping());
3791 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003792 uint64_t cgen_var_306;
3793 stream->read((uint64_t*)&cgen_var_306, 8);
3794 stream->handleMapping()->mapHandles_u64_VkPipelineCache(&cgen_var_306, (VkPipelineCache*)pPipelineCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003795 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003796 VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
3797 stream->read(&vkCreatePipelineCache_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003798 countingStream->clearPool();
3799 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003800 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003801 return vkCreatePipelineCache_VkResult_return;
3802}
3803
3804void VkEncoder::vkDestroyPipelineCache(
3805 VkDevice device,
3806 VkPipelineCache pipelineCache,
3807 const VkAllocationCallbacks* pAllocator)
3808{
3809 auto stream = mImpl->stream();
3810 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003811 auto resources = mImpl->resources();
3812 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003813 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003814 VkDevice local_device;
3815 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003816 VkPipelineCache local_pipelineCache;
3817 local_pipelineCache = pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003818 VkAllocationCallbacks* local_pAllocator;
3819 local_pAllocator = nullptr;
3820 if (pAllocator)
3821 {
3822 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3823 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3824 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003825 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003826 countingStream->rewind();
3827 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003828 uint64_t cgen_var_307;
3829 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_307, 1);
3830 countingStream->write((uint64_t*)&cgen_var_307, 1 * 8);
3831 uint64_t cgen_var_308;
3832 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_308, 1);
3833 countingStream->write((uint64_t*)&cgen_var_308, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003834 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003835 uint64_t cgen_var_309 = (uint64_t)(uintptr_t)local_pAllocator;
3836 countingStream->putBe64(cgen_var_309);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003837 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003838 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003839 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003840 }
3841 }
3842 uint32_t packetSize_vkDestroyPipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3843 countingStream->rewind();
3844 uint32_t opcode_vkDestroyPipelineCache = OP_vkDestroyPipelineCache;
3845 stream->write(&opcode_vkDestroyPipelineCache, sizeof(uint32_t));
3846 stream->write(&packetSize_vkDestroyPipelineCache, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003847 uint64_t cgen_var_310;
3848 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_310, 1);
3849 stream->write((uint64_t*)&cgen_var_310, 1 * 8);
3850 uint64_t cgen_var_311;
3851 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_311, 1);
3852 stream->write((uint64_t*)&cgen_var_311, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003853 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003854 uint64_t cgen_var_312 = (uint64_t)(uintptr_t)local_pAllocator;
3855 stream->putBe64(cgen_var_312);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003856 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003857 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003858 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003859 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003860 resources->destroyMapping()->mapHandles_VkPipelineCache((VkPipelineCache*)&pipelineCache);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003861}
3862
3863VkResult VkEncoder::vkGetPipelineCacheData(
3864 VkDevice device,
3865 VkPipelineCache pipelineCache,
3866 size_t* pDataSize,
3867 void* pData)
3868{
3869 auto stream = mImpl->stream();
3870 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003871 auto resources = mImpl->resources();
3872 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003873 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003874 VkDevice local_device;
3875 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003876 VkPipelineCache local_pipelineCache;
3877 local_pipelineCache = pipelineCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003878 countingStream->rewind();
3879 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003880 uint64_t cgen_var_313;
3881 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_313, 1);
3882 countingStream->write((uint64_t*)&cgen_var_313, 1 * 8);
3883 uint64_t cgen_var_314;
3884 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_314, 1);
3885 countingStream->write((uint64_t*)&cgen_var_314, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003886 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003887 uint64_t cgen_var_315 = (uint64_t)(uintptr_t)pDataSize;
3888 countingStream->putBe64(cgen_var_315);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003889 if (pDataSize)
3890 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003891 uint64_t cgen_var_316 = (uint64_t)(*pDataSize);
3892 countingStream->putBe64(cgen_var_316);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003893 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003894 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003895 uint64_t cgen_var_317 = (uint64_t)(uintptr_t)pData;
3896 countingStream->putBe64(cgen_var_317);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003897 if (pData)
3898 {
3899 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
3900 }
3901 }
3902 uint32_t packetSize_vkGetPipelineCacheData = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3903 countingStream->rewind();
3904 uint32_t opcode_vkGetPipelineCacheData = OP_vkGetPipelineCacheData;
3905 stream->write(&opcode_vkGetPipelineCacheData, sizeof(uint32_t));
3906 stream->write(&packetSize_vkGetPipelineCacheData, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003907 uint64_t cgen_var_318;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003908 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_318, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003909 stream->write((uint64_t*)&cgen_var_318, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003910 uint64_t cgen_var_319;
3911 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_319, 1);
3912 stream->write((uint64_t*)&cgen_var_319, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003913 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003914 uint64_t cgen_var_320 = (uint64_t)(uintptr_t)pDataSize;
3915 stream->putBe64(cgen_var_320);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003916 if (pDataSize)
3917 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003918 uint64_t cgen_var_321 = (uint64_t)(*pDataSize);
3919 stream->putBe64(cgen_var_321);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003920 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003921 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003922 uint64_t cgen_var_322 = (uint64_t)(uintptr_t)pData;
3923 stream->putBe64(cgen_var_322);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003924 if (pData)
3925 {
3926 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
3927 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003928 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003929 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003930 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003931 if (pDataSize)
3932 {
3933 if (!(check_pDataSize))
3934 {
3935 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
3936 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003937 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003938 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003939 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003940 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003941 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003942 if (pData)
3943 {
3944 if (!(check_pData))
3945 {
3946 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
3947 }
3948 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
3949 }
3950 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
3951 stream->read(&vkGetPipelineCacheData_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003952 countingStream->clearPool();
3953 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003954 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003955 return vkGetPipelineCacheData_VkResult_return;
3956}
3957
3958VkResult VkEncoder::vkMergePipelineCaches(
3959 VkDevice device,
3960 VkPipelineCache dstCache,
3961 uint32_t srcCacheCount,
3962 const VkPipelineCache* pSrcCaches)
3963{
3964 auto stream = mImpl->stream();
3965 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003966 auto resources = mImpl->resources();
3967 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003968 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003969 VkDevice local_device;
3970 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003971 VkPipelineCache local_dstCache;
3972 local_dstCache = dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003973 uint32_t local_srcCacheCount;
3974 local_srcCacheCount = srcCacheCount;
3975 VkPipelineCache* local_pSrcCaches;
3976 local_pSrcCaches = nullptr;
3977 if (pSrcCaches)
3978 {
3979 local_pSrcCaches = (VkPipelineCache*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache));
3980 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003981 countingStream->rewind();
3982 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003983 uint64_t cgen_var_326;
3984 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_326, 1);
3985 countingStream->write((uint64_t*)&cgen_var_326, 1 * 8);
3986 uint64_t cgen_var_327;
3987 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_327, 1);
3988 countingStream->write((uint64_t*)&cgen_var_327, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003989 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003990 if (((srcCacheCount)))
3991 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003992 uint64_t* cgen_var_328;
3993 countingStream->alloc((void**)&cgen_var_328, ((srcCacheCount)) * 8);
3994 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_328, ((srcCacheCount)));
3995 countingStream->write((uint64_t*)cgen_var_328, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08003996 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003997 }
3998 uint32_t packetSize_vkMergePipelineCaches = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3999 countingStream->rewind();
4000 uint32_t opcode_vkMergePipelineCaches = OP_vkMergePipelineCaches;
4001 stream->write(&opcode_vkMergePipelineCaches, sizeof(uint32_t));
4002 stream->write(&packetSize_vkMergePipelineCaches, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004003 uint64_t cgen_var_329;
4004 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_329, 1);
4005 stream->write((uint64_t*)&cgen_var_329, 1 * 8);
4006 uint64_t cgen_var_330;
4007 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_330, 1);
4008 stream->write((uint64_t*)&cgen_var_330, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004009 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004010 if (((srcCacheCount)))
4011 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004012 uint64_t* cgen_var_331;
4013 stream->alloc((void**)&cgen_var_331, ((srcCacheCount)) * 8);
4014 stream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_331, ((srcCacheCount)));
4015 stream->write((uint64_t*)cgen_var_331, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004016 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004017 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
4018 stream->read(&vkMergePipelineCaches_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004019 countingStream->clearPool();
4020 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004021 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004022 return vkMergePipelineCaches_VkResult_return;
4023}
4024
4025VkResult VkEncoder::vkCreateGraphicsPipelines(
4026 VkDevice device,
4027 VkPipelineCache pipelineCache,
4028 uint32_t createInfoCount,
4029 const VkGraphicsPipelineCreateInfo* pCreateInfos,
4030 const VkAllocationCallbacks* pAllocator,
4031 VkPipeline* pPipelines)
4032{
4033 auto stream = mImpl->stream();
4034 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004035 auto resources = mImpl->resources();
4036 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004037 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004038 VkDevice local_device;
4039 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004040 VkPipelineCache local_pipelineCache;
4041 local_pipelineCache = pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004042 uint32_t local_createInfoCount;
4043 local_createInfoCount = createInfoCount;
4044 VkGraphicsPipelineCreateInfo* local_pCreateInfos;
4045 local_pCreateInfos = nullptr;
4046 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004047 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004048 local_pCreateInfos = (VkGraphicsPipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkGraphicsPipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004049 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4050 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004051 deepcopy_VkGraphicsPipelineCreateInfo(pool, pCreateInfos + i, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004052 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004053 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004054 VkAllocationCallbacks* local_pAllocator;
4055 local_pAllocator = nullptr;
4056 if (pAllocator)
4057 {
4058 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4059 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4060 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004061 local_pAllocator = nullptr;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004062 countingStream->rewind();
4063 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004064 uint64_t cgen_var_332;
4065 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_332, 1);
4066 countingStream->write((uint64_t*)&cgen_var_332, 1 * 8);
4067 uint64_t cgen_var_333;
4068 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_333, 1);
4069 countingStream->write((uint64_t*)&cgen_var_333, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004070 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4071 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4072 {
4073 marshal_VkGraphicsPipelineCreateInfo(countingStream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
4074 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004075 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004076 uint64_t cgen_var_334 = (uint64_t)(uintptr_t)local_pAllocator;
4077 countingStream->putBe64(cgen_var_334);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004078 if (local_pAllocator)
4079 {
4080 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004081 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004082 if (((createInfoCount)))
4083 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004084 uint64_t* cgen_var_335;
4085 countingStream->alloc((void**)&cgen_var_335, ((createInfoCount)) * 8);
4086 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_335, ((createInfoCount)));
4087 countingStream->write((uint64_t*)cgen_var_335, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004088 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004089 }
4090 uint32_t packetSize_vkCreateGraphicsPipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4091 countingStream->rewind();
4092 uint32_t opcode_vkCreateGraphicsPipelines = OP_vkCreateGraphicsPipelines;
4093 stream->write(&opcode_vkCreateGraphicsPipelines, sizeof(uint32_t));
4094 stream->write(&packetSize_vkCreateGraphicsPipelines, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004095 uint64_t cgen_var_336;
4096 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_336, 1);
4097 stream->write((uint64_t*)&cgen_var_336, 1 * 8);
4098 uint64_t cgen_var_337;
4099 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_337, 1);
4100 stream->write((uint64_t*)&cgen_var_337, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004101 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004102 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4103 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004104 marshal_VkGraphicsPipelineCreateInfo(stream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004105 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004106 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004107 uint64_t cgen_var_338 = (uint64_t)(uintptr_t)local_pAllocator;
4108 stream->putBe64(cgen_var_338);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004109 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004110 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004111 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004112 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004113 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004114 if (((createInfoCount)))
4115 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004116 uint64_t* cgen_var_339;
4117 stream->alloc((void**)&cgen_var_339, ((createInfoCount)) * 8);
4118 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_339, ((createInfoCount)));
4119 stream->write((uint64_t*)cgen_var_339, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004120 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004121 stream->setHandleMapping(resources->unwrapMapping());
4122 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004123 if (((createInfoCount)))
4124 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004125 uint64_t* cgen_var_340;
4126 stream->alloc((void**)&cgen_var_340, ((createInfoCount)) * 8);
4127 stream->read((uint64_t*)cgen_var_340, ((createInfoCount)) * 8);
4128 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_340, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004129 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004130 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004131 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
4132 stream->read(&vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004133 countingStream->clearPool();
4134 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004135 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004136 return vkCreateGraphicsPipelines_VkResult_return;
4137}
4138
4139VkResult VkEncoder::vkCreateComputePipelines(
4140 VkDevice device,
4141 VkPipelineCache pipelineCache,
4142 uint32_t createInfoCount,
4143 const VkComputePipelineCreateInfo* pCreateInfos,
4144 const VkAllocationCallbacks* pAllocator,
4145 VkPipeline* pPipelines)
4146{
4147 auto stream = mImpl->stream();
4148 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004149 auto resources = mImpl->resources();
4150 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004151 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004152 VkDevice local_device;
4153 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004154 VkPipelineCache local_pipelineCache;
4155 local_pipelineCache = pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004156 uint32_t local_createInfoCount;
4157 local_createInfoCount = createInfoCount;
4158 VkComputePipelineCreateInfo* local_pCreateInfos;
4159 local_pCreateInfos = nullptr;
4160 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004161 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004162 local_pCreateInfos = (VkComputePipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkComputePipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004163 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4164 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004165 deepcopy_VkComputePipelineCreateInfo(pool, pCreateInfos + i, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004166 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004167 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004168 VkAllocationCallbacks* local_pAllocator;
4169 local_pAllocator = nullptr;
4170 if (pAllocator)
4171 {
4172 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4173 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4174 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004175 local_pAllocator = nullptr;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004176 countingStream->rewind();
4177 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004178 uint64_t cgen_var_341;
4179 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_341, 1);
4180 countingStream->write((uint64_t*)&cgen_var_341, 1 * 8);
4181 uint64_t cgen_var_342;
4182 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_342, 1);
4183 countingStream->write((uint64_t*)&cgen_var_342, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004184 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4185 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4186 {
4187 marshal_VkComputePipelineCreateInfo(countingStream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
4188 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004189 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004190 uint64_t cgen_var_343 = (uint64_t)(uintptr_t)local_pAllocator;
4191 countingStream->putBe64(cgen_var_343);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004192 if (local_pAllocator)
4193 {
4194 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004195 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004196 if (((createInfoCount)))
4197 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004198 uint64_t* cgen_var_344;
4199 countingStream->alloc((void**)&cgen_var_344, ((createInfoCount)) * 8);
4200 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_344, ((createInfoCount)));
4201 countingStream->write((uint64_t*)cgen_var_344, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004202 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004203 }
4204 uint32_t packetSize_vkCreateComputePipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4205 countingStream->rewind();
4206 uint32_t opcode_vkCreateComputePipelines = OP_vkCreateComputePipelines;
4207 stream->write(&opcode_vkCreateComputePipelines, sizeof(uint32_t));
4208 stream->write(&packetSize_vkCreateComputePipelines, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004209 uint64_t cgen_var_345;
4210 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_345, 1);
4211 stream->write((uint64_t*)&cgen_var_345, 1 * 8);
4212 uint64_t cgen_var_346;
4213 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_346, 1);
4214 stream->write((uint64_t*)&cgen_var_346, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004215 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004216 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4217 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004218 marshal_VkComputePipelineCreateInfo(stream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004219 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004220 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004221 uint64_t cgen_var_347 = (uint64_t)(uintptr_t)local_pAllocator;
4222 stream->putBe64(cgen_var_347);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004223 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004224 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004225 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004226 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004227 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004228 if (((createInfoCount)))
4229 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004230 uint64_t* cgen_var_348;
4231 stream->alloc((void**)&cgen_var_348, ((createInfoCount)) * 8);
4232 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_348, ((createInfoCount)));
4233 stream->write((uint64_t*)cgen_var_348, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004234 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004235 stream->setHandleMapping(resources->unwrapMapping());
4236 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004237 if (((createInfoCount)))
4238 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004239 uint64_t* cgen_var_349;
4240 stream->alloc((void**)&cgen_var_349, ((createInfoCount)) * 8);
4241 stream->read((uint64_t*)cgen_var_349, ((createInfoCount)) * 8);
4242 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_349, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004243 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004244 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004245 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
4246 stream->read(&vkCreateComputePipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004247 countingStream->clearPool();
4248 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004249 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004250 return vkCreateComputePipelines_VkResult_return;
4251}
4252
4253void VkEncoder::vkDestroyPipeline(
4254 VkDevice device,
4255 VkPipeline pipeline,
4256 const VkAllocationCallbacks* pAllocator)
4257{
4258 auto stream = mImpl->stream();
4259 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004260 auto resources = mImpl->resources();
4261 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004262 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004263 VkDevice local_device;
4264 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004265 VkPipeline local_pipeline;
4266 local_pipeline = pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004267 VkAllocationCallbacks* local_pAllocator;
4268 local_pAllocator = nullptr;
4269 if (pAllocator)
4270 {
4271 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4272 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4273 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004274 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004275 countingStream->rewind();
4276 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004277 uint64_t cgen_var_350;
4278 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_350, 1);
4279 countingStream->write((uint64_t*)&cgen_var_350, 1 * 8);
4280 uint64_t cgen_var_351;
4281 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_351, 1);
4282 countingStream->write((uint64_t*)&cgen_var_351, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004283 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004284 uint64_t cgen_var_352 = (uint64_t)(uintptr_t)local_pAllocator;
4285 countingStream->putBe64(cgen_var_352);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004286 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004287 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004288 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004289 }
4290 }
4291 uint32_t packetSize_vkDestroyPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4292 countingStream->rewind();
4293 uint32_t opcode_vkDestroyPipeline = OP_vkDestroyPipeline;
4294 stream->write(&opcode_vkDestroyPipeline, sizeof(uint32_t));
4295 stream->write(&packetSize_vkDestroyPipeline, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004296 uint64_t cgen_var_353;
4297 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_353, 1);
4298 stream->write((uint64_t*)&cgen_var_353, 1 * 8);
4299 uint64_t cgen_var_354;
4300 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_354, 1);
4301 stream->write((uint64_t*)&cgen_var_354, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004302 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004303 uint64_t cgen_var_355 = (uint64_t)(uintptr_t)local_pAllocator;
4304 stream->putBe64(cgen_var_355);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004305 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004306 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004307 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004308 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004309 resources->destroyMapping()->mapHandles_VkPipeline((VkPipeline*)&pipeline);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004310}
4311
4312VkResult VkEncoder::vkCreatePipelineLayout(
4313 VkDevice device,
4314 const VkPipelineLayoutCreateInfo* pCreateInfo,
4315 const VkAllocationCallbacks* pAllocator,
4316 VkPipelineLayout* pPipelineLayout)
4317{
4318 auto stream = mImpl->stream();
4319 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004320 auto resources = mImpl->resources();
4321 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004322 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004323 VkDevice local_device;
4324 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004325 VkPipelineLayoutCreateInfo* local_pCreateInfo;
4326 local_pCreateInfo = nullptr;
4327 if (pCreateInfo)
4328 {
4329 local_pCreateInfo = (VkPipelineLayoutCreateInfo*)pool->alloc(sizeof(const VkPipelineLayoutCreateInfo));
4330 deepcopy_VkPipelineLayoutCreateInfo(pool, pCreateInfo, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
4331 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004332 VkAllocationCallbacks* local_pAllocator;
4333 local_pAllocator = nullptr;
4334 if (pAllocator)
4335 {
4336 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4337 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4338 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004339 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004340 countingStream->rewind();
4341 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004342 uint64_t cgen_var_356;
4343 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_356, 1);
4344 countingStream->write((uint64_t*)&cgen_var_356, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004345 marshal_VkPipelineLayoutCreateInfo(countingStream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004346 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004347 uint64_t cgen_var_357 = (uint64_t)(uintptr_t)local_pAllocator;
4348 countingStream->putBe64(cgen_var_357);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004349 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004350 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004351 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004352 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004353 uint64_t cgen_var_358;
4354 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_358, 1);
4355 countingStream->write((uint64_t*)&cgen_var_358, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004356 }
4357 uint32_t packetSize_vkCreatePipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4358 countingStream->rewind();
4359 uint32_t opcode_vkCreatePipelineLayout = OP_vkCreatePipelineLayout;
4360 stream->write(&opcode_vkCreatePipelineLayout, sizeof(uint32_t));
4361 stream->write(&packetSize_vkCreatePipelineLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004362 uint64_t cgen_var_359;
4363 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_359, 1);
4364 stream->write((uint64_t*)&cgen_var_359, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004365 marshal_VkPipelineLayoutCreateInfo(stream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004366 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004367 uint64_t cgen_var_360 = (uint64_t)(uintptr_t)local_pAllocator;
4368 stream->putBe64(cgen_var_360);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004369 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004370 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004371 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004372 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004373 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004374 uint64_t cgen_var_361;
4375 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_361, 1);
4376 stream->write((uint64_t*)&cgen_var_361, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004377 stream->setHandleMapping(resources->unwrapMapping());
4378 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004379 uint64_t cgen_var_362;
4380 stream->read((uint64_t*)&cgen_var_362, 8);
4381 stream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_362, (VkPipelineLayout*)pPipelineLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004382 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004383 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
4384 stream->read(&vkCreatePipelineLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004385 countingStream->clearPool();
4386 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004387 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004388 return vkCreatePipelineLayout_VkResult_return;
4389}
4390
4391void VkEncoder::vkDestroyPipelineLayout(
4392 VkDevice device,
4393 VkPipelineLayout pipelineLayout,
4394 const VkAllocationCallbacks* pAllocator)
4395{
4396 auto stream = mImpl->stream();
4397 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004398 auto resources = mImpl->resources();
4399 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004400 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004401 VkDevice local_device;
4402 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004403 VkPipelineLayout local_pipelineLayout;
4404 local_pipelineLayout = pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004405 VkAllocationCallbacks* local_pAllocator;
4406 local_pAllocator = nullptr;
4407 if (pAllocator)
4408 {
4409 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4410 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4411 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004412 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004413 countingStream->rewind();
4414 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004415 uint64_t cgen_var_363;
4416 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_363, 1);
4417 countingStream->write((uint64_t*)&cgen_var_363, 1 * 8);
4418 uint64_t cgen_var_364;
4419 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_364, 1);
4420 countingStream->write((uint64_t*)&cgen_var_364, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004421 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004422 uint64_t cgen_var_365 = (uint64_t)(uintptr_t)local_pAllocator;
4423 countingStream->putBe64(cgen_var_365);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004424 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004425 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004426 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004427 }
4428 }
4429 uint32_t packetSize_vkDestroyPipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4430 countingStream->rewind();
4431 uint32_t opcode_vkDestroyPipelineLayout = OP_vkDestroyPipelineLayout;
4432 stream->write(&opcode_vkDestroyPipelineLayout, sizeof(uint32_t));
4433 stream->write(&packetSize_vkDestroyPipelineLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004434 uint64_t cgen_var_366;
4435 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_366, 1);
4436 stream->write((uint64_t*)&cgen_var_366, 1 * 8);
4437 uint64_t cgen_var_367;
4438 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_367, 1);
4439 stream->write((uint64_t*)&cgen_var_367, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004440 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004441 uint64_t cgen_var_368 = (uint64_t)(uintptr_t)local_pAllocator;
4442 stream->putBe64(cgen_var_368);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004443 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004444 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004445 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004446 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004447 resources->destroyMapping()->mapHandles_VkPipelineLayout((VkPipelineLayout*)&pipelineLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004448}
4449
4450VkResult VkEncoder::vkCreateSampler(
4451 VkDevice device,
4452 const VkSamplerCreateInfo* pCreateInfo,
4453 const VkAllocationCallbacks* pAllocator,
4454 VkSampler* pSampler)
4455{
4456 auto stream = mImpl->stream();
4457 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004458 auto resources = mImpl->resources();
4459 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004460 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004461 VkDevice local_device;
4462 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004463 VkSamplerCreateInfo* local_pCreateInfo;
4464 local_pCreateInfo = nullptr;
4465 if (pCreateInfo)
4466 {
4467 local_pCreateInfo = (VkSamplerCreateInfo*)pool->alloc(sizeof(const VkSamplerCreateInfo));
4468 deepcopy_VkSamplerCreateInfo(pool, pCreateInfo, (VkSamplerCreateInfo*)(local_pCreateInfo));
4469 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004470 VkAllocationCallbacks* local_pAllocator;
4471 local_pAllocator = nullptr;
4472 if (pAllocator)
4473 {
4474 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4475 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4476 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004477 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004478 countingStream->rewind();
4479 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004480 uint64_t cgen_var_369;
4481 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_369, 1);
4482 countingStream->write((uint64_t*)&cgen_var_369, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004483 marshal_VkSamplerCreateInfo(countingStream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004484 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004485 uint64_t cgen_var_370 = (uint64_t)(uintptr_t)local_pAllocator;
4486 countingStream->putBe64(cgen_var_370);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004487 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004488 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004489 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004490 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004491 uint64_t cgen_var_371;
4492 countingStream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_371, 1);
4493 countingStream->write((uint64_t*)&cgen_var_371, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004494 }
4495 uint32_t packetSize_vkCreateSampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4496 countingStream->rewind();
4497 uint32_t opcode_vkCreateSampler = OP_vkCreateSampler;
4498 stream->write(&opcode_vkCreateSampler, sizeof(uint32_t));
4499 stream->write(&packetSize_vkCreateSampler, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004500 uint64_t cgen_var_372;
4501 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_372, 1);
4502 stream->write((uint64_t*)&cgen_var_372, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004503 marshal_VkSamplerCreateInfo(stream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004504 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004505 uint64_t cgen_var_373 = (uint64_t)(uintptr_t)local_pAllocator;
4506 stream->putBe64(cgen_var_373);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004507 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004508 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004509 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004510 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004511 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004512 uint64_t cgen_var_374;
4513 stream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_374, 1);
4514 stream->write((uint64_t*)&cgen_var_374, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004515 stream->setHandleMapping(resources->unwrapMapping());
4516 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004517 uint64_t cgen_var_375;
4518 stream->read((uint64_t*)&cgen_var_375, 8);
4519 stream->handleMapping()->mapHandles_u64_VkSampler(&cgen_var_375, (VkSampler*)pSampler, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004520 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004521 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
4522 stream->read(&vkCreateSampler_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004523 countingStream->clearPool();
4524 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004525 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004526 return vkCreateSampler_VkResult_return;
4527}
4528
4529void VkEncoder::vkDestroySampler(
4530 VkDevice device,
4531 VkSampler sampler,
4532 const VkAllocationCallbacks* pAllocator)
4533{
4534 auto stream = mImpl->stream();
4535 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004536 auto resources = mImpl->resources();
4537 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004538 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004539 VkDevice local_device;
4540 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004541 VkSampler local_sampler;
4542 local_sampler = sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004543 VkAllocationCallbacks* local_pAllocator;
4544 local_pAllocator = nullptr;
4545 if (pAllocator)
4546 {
4547 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4548 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4549 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004550 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004551 countingStream->rewind();
4552 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004553 uint64_t cgen_var_376;
4554 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_376, 1);
4555 countingStream->write((uint64_t*)&cgen_var_376, 1 * 8);
4556 uint64_t cgen_var_377;
4557 countingStream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_377, 1);
4558 countingStream->write((uint64_t*)&cgen_var_377, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004559 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004560 uint64_t cgen_var_378 = (uint64_t)(uintptr_t)local_pAllocator;
4561 countingStream->putBe64(cgen_var_378);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004562 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004563 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004564 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004565 }
4566 }
4567 uint32_t packetSize_vkDestroySampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4568 countingStream->rewind();
4569 uint32_t opcode_vkDestroySampler = OP_vkDestroySampler;
4570 stream->write(&opcode_vkDestroySampler, sizeof(uint32_t));
4571 stream->write(&packetSize_vkDestroySampler, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004572 uint64_t cgen_var_379;
4573 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_379, 1);
4574 stream->write((uint64_t*)&cgen_var_379, 1 * 8);
4575 uint64_t cgen_var_380;
4576 stream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_380, 1);
4577 stream->write((uint64_t*)&cgen_var_380, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004578 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004579 uint64_t cgen_var_381 = (uint64_t)(uintptr_t)local_pAllocator;
4580 stream->putBe64(cgen_var_381);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004581 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004582 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004583 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004584 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004585 resources->destroyMapping()->mapHandles_VkSampler((VkSampler*)&sampler);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004586}
4587
4588VkResult VkEncoder::vkCreateDescriptorSetLayout(
4589 VkDevice device,
4590 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
4591 const VkAllocationCallbacks* pAllocator,
4592 VkDescriptorSetLayout* pSetLayout)
4593{
4594 auto stream = mImpl->stream();
4595 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004596 auto resources = mImpl->resources();
4597 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004598 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004599 VkDevice local_device;
4600 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004601 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
4602 local_pCreateInfo = nullptr;
4603 if (pCreateInfo)
4604 {
4605 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
4606 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
4607 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004608 VkAllocationCallbacks* local_pAllocator;
4609 local_pAllocator = nullptr;
4610 if (pAllocator)
4611 {
4612 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4613 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4614 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004615 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004616 countingStream->rewind();
4617 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004618 uint64_t cgen_var_382;
4619 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_382, 1);
4620 countingStream->write((uint64_t*)&cgen_var_382, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004621 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004622 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004623 uint64_t cgen_var_383 = (uint64_t)(uintptr_t)local_pAllocator;
4624 countingStream->putBe64(cgen_var_383);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004625 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004626 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004627 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004628 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004629 uint64_t cgen_var_384;
4630 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_384, 1);
4631 countingStream->write((uint64_t*)&cgen_var_384, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004632 }
4633 uint32_t packetSize_vkCreateDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4634 countingStream->rewind();
4635 uint32_t opcode_vkCreateDescriptorSetLayout = OP_vkCreateDescriptorSetLayout;
4636 stream->write(&opcode_vkCreateDescriptorSetLayout, sizeof(uint32_t));
4637 stream->write(&packetSize_vkCreateDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004638 uint64_t cgen_var_385;
4639 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_385, 1);
4640 stream->write((uint64_t*)&cgen_var_385, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004641 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004642 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004643 uint64_t cgen_var_386 = (uint64_t)(uintptr_t)local_pAllocator;
4644 stream->putBe64(cgen_var_386);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004645 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004646 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004647 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004648 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004649 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004650 uint64_t cgen_var_387;
4651 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_387, 1);
4652 stream->write((uint64_t*)&cgen_var_387, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004653 stream->setHandleMapping(resources->unwrapMapping());
4654 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004655 uint64_t cgen_var_388;
4656 stream->read((uint64_t*)&cgen_var_388, 8);
4657 stream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(&cgen_var_388, (VkDescriptorSetLayout*)pSetLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004658 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004659 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
4660 stream->read(&vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004661 countingStream->clearPool();
4662 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004663 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004664 return vkCreateDescriptorSetLayout_VkResult_return;
4665}
4666
4667void VkEncoder::vkDestroyDescriptorSetLayout(
4668 VkDevice device,
4669 VkDescriptorSetLayout descriptorSetLayout,
4670 const VkAllocationCallbacks* pAllocator)
4671{
4672 auto stream = mImpl->stream();
4673 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004674 auto resources = mImpl->resources();
4675 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004676 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004677 VkDevice local_device;
4678 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004679 VkDescriptorSetLayout local_descriptorSetLayout;
4680 local_descriptorSetLayout = descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004681 VkAllocationCallbacks* local_pAllocator;
4682 local_pAllocator = nullptr;
4683 if (pAllocator)
4684 {
4685 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4686 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4687 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004688 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004689 countingStream->rewind();
4690 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004691 uint64_t cgen_var_389;
4692 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_389, 1);
4693 countingStream->write((uint64_t*)&cgen_var_389, 1 * 8);
4694 uint64_t cgen_var_390;
4695 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_390, 1);
4696 countingStream->write((uint64_t*)&cgen_var_390, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004697 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004698 uint64_t cgen_var_391 = (uint64_t)(uintptr_t)local_pAllocator;
4699 countingStream->putBe64(cgen_var_391);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004700 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004701 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004702 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004703 }
4704 }
4705 uint32_t packetSize_vkDestroyDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4706 countingStream->rewind();
4707 uint32_t opcode_vkDestroyDescriptorSetLayout = OP_vkDestroyDescriptorSetLayout;
4708 stream->write(&opcode_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
4709 stream->write(&packetSize_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004710 uint64_t cgen_var_392;
4711 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_392, 1);
4712 stream->write((uint64_t*)&cgen_var_392, 1 * 8);
4713 uint64_t cgen_var_393;
4714 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_393, 1);
4715 stream->write((uint64_t*)&cgen_var_393, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004716 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004717 uint64_t cgen_var_394 = (uint64_t)(uintptr_t)local_pAllocator;
4718 stream->putBe64(cgen_var_394);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004719 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004720 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004721 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004722 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004723 resources->destroyMapping()->mapHandles_VkDescriptorSetLayout((VkDescriptorSetLayout*)&descriptorSetLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004724}
4725
4726VkResult VkEncoder::vkCreateDescriptorPool(
4727 VkDevice device,
4728 const VkDescriptorPoolCreateInfo* pCreateInfo,
4729 const VkAllocationCallbacks* pAllocator,
4730 VkDescriptorPool* pDescriptorPool)
4731{
4732 auto stream = mImpl->stream();
4733 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004734 auto resources = mImpl->resources();
4735 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004736 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004737 VkDevice local_device;
4738 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004739 VkDescriptorPoolCreateInfo* local_pCreateInfo;
4740 local_pCreateInfo = nullptr;
4741 if (pCreateInfo)
4742 {
4743 local_pCreateInfo = (VkDescriptorPoolCreateInfo*)pool->alloc(sizeof(const VkDescriptorPoolCreateInfo));
4744 deepcopy_VkDescriptorPoolCreateInfo(pool, pCreateInfo, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
4745 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004746 VkAllocationCallbacks* local_pAllocator;
4747 local_pAllocator = nullptr;
4748 if (pAllocator)
4749 {
4750 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4751 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4752 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004753 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004754 countingStream->rewind();
4755 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004756 uint64_t cgen_var_395;
4757 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_395, 1);
4758 countingStream->write((uint64_t*)&cgen_var_395, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004759 marshal_VkDescriptorPoolCreateInfo(countingStream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004760 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004761 uint64_t cgen_var_396 = (uint64_t)(uintptr_t)local_pAllocator;
4762 countingStream->putBe64(cgen_var_396);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004763 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004764 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004765 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004766 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004767 uint64_t cgen_var_397;
4768 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_397, 1);
4769 countingStream->write((uint64_t*)&cgen_var_397, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004770 }
4771 uint32_t packetSize_vkCreateDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4772 countingStream->rewind();
4773 uint32_t opcode_vkCreateDescriptorPool = OP_vkCreateDescriptorPool;
4774 stream->write(&opcode_vkCreateDescriptorPool, sizeof(uint32_t));
4775 stream->write(&packetSize_vkCreateDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004776 uint64_t cgen_var_398;
4777 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_398, 1);
4778 stream->write((uint64_t*)&cgen_var_398, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004779 marshal_VkDescriptorPoolCreateInfo(stream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004780 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004781 uint64_t cgen_var_399 = (uint64_t)(uintptr_t)local_pAllocator;
4782 stream->putBe64(cgen_var_399);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004783 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004784 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004785 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004786 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004787 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004788 uint64_t cgen_var_400;
4789 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_400, 1);
4790 stream->write((uint64_t*)&cgen_var_400, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004791 stream->setHandleMapping(resources->unwrapMapping());
4792 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004793 uint64_t cgen_var_401;
4794 stream->read((uint64_t*)&cgen_var_401, 8);
4795 stream->handleMapping()->mapHandles_u64_VkDescriptorPool(&cgen_var_401, (VkDescriptorPool*)pDescriptorPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004796 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004797 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
4798 stream->read(&vkCreateDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004799 countingStream->clearPool();
4800 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004801 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004802 return vkCreateDescriptorPool_VkResult_return;
4803}
4804
4805void VkEncoder::vkDestroyDescriptorPool(
4806 VkDevice device,
4807 VkDescriptorPool descriptorPool,
4808 const VkAllocationCallbacks* pAllocator)
4809{
4810 auto stream = mImpl->stream();
4811 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004812 auto resources = mImpl->resources();
4813 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004814 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004815 VkDevice local_device;
4816 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004817 VkDescriptorPool local_descriptorPool;
4818 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004819 VkAllocationCallbacks* local_pAllocator;
4820 local_pAllocator = nullptr;
4821 if (pAllocator)
4822 {
4823 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4824 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4825 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004826 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004827 countingStream->rewind();
4828 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004829 uint64_t cgen_var_402;
4830 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_402, 1);
4831 countingStream->write((uint64_t*)&cgen_var_402, 1 * 8);
4832 uint64_t cgen_var_403;
4833 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_403, 1);
4834 countingStream->write((uint64_t*)&cgen_var_403, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004835 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004836 uint64_t cgen_var_404 = (uint64_t)(uintptr_t)local_pAllocator;
4837 countingStream->putBe64(cgen_var_404);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004838 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004839 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004840 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004841 }
4842 }
4843 uint32_t packetSize_vkDestroyDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4844 countingStream->rewind();
4845 uint32_t opcode_vkDestroyDescriptorPool = OP_vkDestroyDescriptorPool;
4846 stream->write(&opcode_vkDestroyDescriptorPool, sizeof(uint32_t));
4847 stream->write(&packetSize_vkDestroyDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004848 uint64_t cgen_var_405;
4849 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_405, 1);
4850 stream->write((uint64_t*)&cgen_var_405, 1 * 8);
4851 uint64_t cgen_var_406;
4852 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_406, 1);
4853 stream->write((uint64_t*)&cgen_var_406, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004854 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004855 uint64_t cgen_var_407 = (uint64_t)(uintptr_t)local_pAllocator;
4856 stream->putBe64(cgen_var_407);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004857 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004858 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004859 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004860 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004861 resources->destroyMapping()->mapHandles_VkDescriptorPool((VkDescriptorPool*)&descriptorPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004862}
4863
4864VkResult VkEncoder::vkResetDescriptorPool(
4865 VkDevice device,
4866 VkDescriptorPool descriptorPool,
4867 VkDescriptorPoolResetFlags flags)
4868{
4869 auto stream = mImpl->stream();
4870 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004871 auto resources = mImpl->resources();
4872 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004873 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004874 VkDevice local_device;
4875 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004876 VkDescriptorPool local_descriptorPool;
4877 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004878 VkDescriptorPoolResetFlags local_flags;
4879 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004880 countingStream->rewind();
4881 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004882 uint64_t cgen_var_408;
4883 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_408, 1);
4884 countingStream->write((uint64_t*)&cgen_var_408, 1 * 8);
4885 uint64_t cgen_var_409;
4886 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_409, 1);
4887 countingStream->write((uint64_t*)&cgen_var_409, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004888 countingStream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004889 }
4890 uint32_t packetSize_vkResetDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4891 countingStream->rewind();
4892 uint32_t opcode_vkResetDescriptorPool = OP_vkResetDescriptorPool;
4893 stream->write(&opcode_vkResetDescriptorPool, sizeof(uint32_t));
4894 stream->write(&packetSize_vkResetDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004895 uint64_t cgen_var_410;
4896 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_410, 1);
4897 stream->write((uint64_t*)&cgen_var_410, 1 * 8);
4898 uint64_t cgen_var_411;
4899 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_411, 1);
4900 stream->write((uint64_t*)&cgen_var_411, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004901 stream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004902 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
4903 stream->read(&vkResetDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004904 countingStream->clearPool();
4905 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004906 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004907 return vkResetDescriptorPool_VkResult_return;
4908}
4909
4910VkResult VkEncoder::vkAllocateDescriptorSets(
4911 VkDevice device,
4912 const VkDescriptorSetAllocateInfo* pAllocateInfo,
4913 VkDescriptorSet* pDescriptorSets)
4914{
4915 auto stream = mImpl->stream();
4916 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004917 auto resources = mImpl->resources();
4918 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004919 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004920 VkDevice local_device;
4921 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004922 VkDescriptorSetAllocateInfo* local_pAllocateInfo;
4923 local_pAllocateInfo = nullptr;
4924 if (pAllocateInfo)
4925 {
4926 local_pAllocateInfo = (VkDescriptorSetAllocateInfo*)pool->alloc(sizeof(const VkDescriptorSetAllocateInfo));
4927 deepcopy_VkDescriptorSetAllocateInfo(pool, pAllocateInfo, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
4928 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004929 countingStream->rewind();
4930 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004931 uint64_t cgen_var_412;
4932 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_412, 1);
4933 countingStream->write((uint64_t*)&cgen_var_412, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004934 marshal_VkDescriptorSetAllocateInfo(countingStream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004935 if (pAllocateInfo->descriptorSetCount)
4936 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004937 uint64_t* cgen_var_413;
4938 countingStream->alloc((void**)&cgen_var_413, pAllocateInfo->descriptorSetCount * 8);
4939 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_413, pAllocateInfo->descriptorSetCount);
4940 countingStream->write((uint64_t*)cgen_var_413, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004941 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004942 }
4943 uint32_t packetSize_vkAllocateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4944 countingStream->rewind();
4945 uint32_t opcode_vkAllocateDescriptorSets = OP_vkAllocateDescriptorSets;
4946 stream->write(&opcode_vkAllocateDescriptorSets, sizeof(uint32_t));
4947 stream->write(&packetSize_vkAllocateDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004948 uint64_t cgen_var_414;
4949 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_414, 1);
4950 stream->write((uint64_t*)&cgen_var_414, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004951 marshal_VkDescriptorSetAllocateInfo(stream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08004952 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004953 if (pAllocateInfo->descriptorSetCount)
4954 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004955 uint64_t* cgen_var_415;
4956 stream->alloc((void**)&cgen_var_415, pAllocateInfo->descriptorSetCount * 8);
4957 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_415, pAllocateInfo->descriptorSetCount);
4958 stream->write((uint64_t*)cgen_var_415, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004959 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004960 stream->setHandleMapping(resources->unwrapMapping());
4961 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004962 if (pAllocateInfo->descriptorSetCount)
4963 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004964 uint64_t* cgen_var_416;
4965 stream->alloc((void**)&cgen_var_416, pAllocateInfo->descriptorSetCount * 8);
4966 stream->read((uint64_t*)cgen_var_416, pAllocateInfo->descriptorSetCount * 8);
4967 stream->handleMapping()->mapHandles_u64_VkDescriptorSet(cgen_var_416, (VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004968 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004969 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004970 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
4971 stream->read(&vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004972 countingStream->clearPool();
4973 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004974 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004975 return vkAllocateDescriptorSets_VkResult_return;
4976}
4977
4978VkResult VkEncoder::vkFreeDescriptorSets(
4979 VkDevice device,
4980 VkDescriptorPool descriptorPool,
4981 uint32_t descriptorSetCount,
4982 const VkDescriptorSet* pDescriptorSets)
4983{
4984 auto stream = mImpl->stream();
4985 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004986 auto resources = mImpl->resources();
4987 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004988 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004989 VkDevice local_device;
4990 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004991 VkDescriptorPool local_descriptorPool;
4992 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004993 uint32_t local_descriptorSetCount;
4994 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004995 VkDescriptorSet* local_pDescriptorSets;
4996 local_pDescriptorSets = nullptr;
4997 if (pDescriptorSets)
4998 {
4999 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
5000 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005001 countingStream->rewind();
5002 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005003 uint64_t cgen_var_417;
5004 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_417, 1);
5005 countingStream->write((uint64_t*)&cgen_var_417, 1 * 8);
5006 uint64_t cgen_var_418;
5007 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_418, 1);
5008 countingStream->write((uint64_t*)&cgen_var_418, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005009 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005010 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005011 uint64_t cgen_var_419 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5012 countingStream->putBe64(cgen_var_419);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005013 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005014 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005015 if (((descriptorSetCount)))
5016 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005017 uint64_t* cgen_var_420;
5018 countingStream->alloc((void**)&cgen_var_420, ((descriptorSetCount)) * 8);
5019 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_420, ((descriptorSetCount)));
5020 countingStream->write((uint64_t*)cgen_var_420, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005021 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005022 }
5023 }
5024 uint32_t packetSize_vkFreeDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5025 countingStream->rewind();
5026 uint32_t opcode_vkFreeDescriptorSets = OP_vkFreeDescriptorSets;
5027 stream->write(&opcode_vkFreeDescriptorSets, sizeof(uint32_t));
5028 stream->write(&packetSize_vkFreeDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005029 uint64_t cgen_var_421;
5030 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_421, 1);
5031 stream->write((uint64_t*)&cgen_var_421, 1 * 8);
5032 uint64_t cgen_var_422;
5033 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_422, 1);
5034 stream->write((uint64_t*)&cgen_var_422, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005035 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005036 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005037 uint64_t cgen_var_423 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5038 stream->putBe64(cgen_var_423);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005039 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005040 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005041 if (((descriptorSetCount)))
5042 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005043 uint64_t* cgen_var_424;
5044 stream->alloc((void**)&cgen_var_424, ((descriptorSetCount)) * 8);
5045 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_424, ((descriptorSetCount)));
5046 stream->write((uint64_t*)cgen_var_424, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005047 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005048 }
5049 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
5050 stream->read(&vkFreeDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005051 countingStream->clearPool();
5052 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005053 pool->freeAll();
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08005054 if (pDescriptorSets)
5055 {
5056 resources->destroyMapping()->mapHandles_VkDescriptorSet((VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)));
5057 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005058 return vkFreeDescriptorSets_VkResult_return;
5059}
5060
5061void VkEncoder::vkUpdateDescriptorSets(
5062 VkDevice device,
5063 uint32_t descriptorWriteCount,
5064 const VkWriteDescriptorSet* pDescriptorWrites,
5065 uint32_t descriptorCopyCount,
5066 const VkCopyDescriptorSet* pDescriptorCopies)
5067{
5068 auto stream = mImpl->stream();
5069 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005070 auto resources = mImpl->resources();
5071 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005072 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005073 VkDevice local_device;
5074 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005075 uint32_t local_descriptorWriteCount;
5076 local_descriptorWriteCount = descriptorWriteCount;
5077 VkWriteDescriptorSet* local_pDescriptorWrites;
5078 local_pDescriptorWrites = nullptr;
5079 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005080 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005081 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005082 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5083 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005084 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005085 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005086 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005087 uint32_t local_descriptorCopyCount;
5088 local_descriptorCopyCount = descriptorCopyCount;
5089 VkCopyDescriptorSet* local_pDescriptorCopies;
5090 local_pDescriptorCopies = nullptr;
5091 if (pDescriptorCopies)
5092 {
5093 local_pDescriptorCopies = (VkCopyDescriptorSet*)pool->alloc(((descriptorCopyCount)) * sizeof(const VkCopyDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005094 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5095 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005096 deepcopy_VkCopyDescriptorSet(pool, pDescriptorCopies + i, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
5097 }
5098 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005099 countingStream->rewind();
5100 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005101 uint64_t cgen_var_425;
5102 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_425, 1);
5103 countingStream->write((uint64_t*)&cgen_var_425, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005104 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
5105 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5106 {
5107 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
5108 }
5109 countingStream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
5110 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5111 {
5112 marshal_VkCopyDescriptorSet(countingStream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005113 }
5114 }
5115 uint32_t packetSize_vkUpdateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5116 countingStream->rewind();
5117 uint32_t opcode_vkUpdateDescriptorSets = OP_vkUpdateDescriptorSets;
5118 stream->write(&opcode_vkUpdateDescriptorSets, sizeof(uint32_t));
5119 stream->write(&packetSize_vkUpdateDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005120 uint64_t cgen_var_426;
5121 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_426, 1);
5122 stream->write((uint64_t*)&cgen_var_426, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005123 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005124 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5125 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005126 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005127 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005128 stream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005129 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5130 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005131 marshal_VkCopyDescriptorSet(stream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005132 }
5133}
5134
5135VkResult VkEncoder::vkCreateFramebuffer(
5136 VkDevice device,
5137 const VkFramebufferCreateInfo* pCreateInfo,
5138 const VkAllocationCallbacks* pAllocator,
5139 VkFramebuffer* pFramebuffer)
5140{
5141 auto stream = mImpl->stream();
5142 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005143 auto resources = mImpl->resources();
5144 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005145 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005146 VkDevice local_device;
5147 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005148 VkFramebufferCreateInfo* local_pCreateInfo;
5149 local_pCreateInfo = nullptr;
5150 if (pCreateInfo)
5151 {
5152 local_pCreateInfo = (VkFramebufferCreateInfo*)pool->alloc(sizeof(const VkFramebufferCreateInfo));
5153 deepcopy_VkFramebufferCreateInfo(pool, pCreateInfo, (VkFramebufferCreateInfo*)(local_pCreateInfo));
5154 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005155 VkAllocationCallbacks* local_pAllocator;
5156 local_pAllocator = nullptr;
5157 if (pAllocator)
5158 {
5159 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5160 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5161 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005162 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005163 countingStream->rewind();
5164 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005165 uint64_t cgen_var_427;
5166 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_427, 1);
5167 countingStream->write((uint64_t*)&cgen_var_427, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005168 marshal_VkFramebufferCreateInfo(countingStream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005169 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005170 uint64_t cgen_var_428 = (uint64_t)(uintptr_t)local_pAllocator;
5171 countingStream->putBe64(cgen_var_428);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005172 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005173 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005174 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005175 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005176 uint64_t cgen_var_429;
5177 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_429, 1);
5178 countingStream->write((uint64_t*)&cgen_var_429, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005179 }
5180 uint32_t packetSize_vkCreateFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5181 countingStream->rewind();
5182 uint32_t opcode_vkCreateFramebuffer = OP_vkCreateFramebuffer;
5183 stream->write(&opcode_vkCreateFramebuffer, sizeof(uint32_t));
5184 stream->write(&packetSize_vkCreateFramebuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005185 uint64_t cgen_var_430;
5186 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_430, 1);
5187 stream->write((uint64_t*)&cgen_var_430, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005188 marshal_VkFramebufferCreateInfo(stream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005189 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005190 uint64_t cgen_var_431 = (uint64_t)(uintptr_t)local_pAllocator;
5191 stream->putBe64(cgen_var_431);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005192 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005193 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005194 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005195 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005196 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005197 uint64_t cgen_var_432;
5198 stream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_432, 1);
5199 stream->write((uint64_t*)&cgen_var_432, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005200 stream->setHandleMapping(resources->unwrapMapping());
5201 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005202 uint64_t cgen_var_433;
5203 stream->read((uint64_t*)&cgen_var_433, 8);
5204 stream->handleMapping()->mapHandles_u64_VkFramebuffer(&cgen_var_433, (VkFramebuffer*)pFramebuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005205 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005206 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
5207 stream->read(&vkCreateFramebuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005208 countingStream->clearPool();
5209 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005210 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005211 return vkCreateFramebuffer_VkResult_return;
5212}
5213
5214void VkEncoder::vkDestroyFramebuffer(
5215 VkDevice device,
5216 VkFramebuffer framebuffer,
5217 const VkAllocationCallbacks* pAllocator)
5218{
5219 auto stream = mImpl->stream();
5220 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005221 auto resources = mImpl->resources();
5222 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005223 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005224 VkDevice local_device;
5225 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005226 VkFramebuffer local_framebuffer;
5227 local_framebuffer = framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005228 VkAllocationCallbacks* local_pAllocator;
5229 local_pAllocator = nullptr;
5230 if (pAllocator)
5231 {
5232 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5233 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5234 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005235 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005236 countingStream->rewind();
5237 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005238 uint64_t cgen_var_434;
5239 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_434, 1);
5240 countingStream->write((uint64_t*)&cgen_var_434, 1 * 8);
5241 uint64_t cgen_var_435;
5242 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_435, 1);
5243 countingStream->write((uint64_t*)&cgen_var_435, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005244 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005245 uint64_t cgen_var_436 = (uint64_t)(uintptr_t)local_pAllocator;
5246 countingStream->putBe64(cgen_var_436);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005247 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005248 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005249 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005250 }
5251 }
5252 uint32_t packetSize_vkDestroyFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5253 countingStream->rewind();
5254 uint32_t opcode_vkDestroyFramebuffer = OP_vkDestroyFramebuffer;
5255 stream->write(&opcode_vkDestroyFramebuffer, sizeof(uint32_t));
5256 stream->write(&packetSize_vkDestroyFramebuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005257 uint64_t cgen_var_437;
5258 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_437, 1);
5259 stream->write((uint64_t*)&cgen_var_437, 1 * 8);
5260 uint64_t cgen_var_438;
5261 stream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_438, 1);
5262 stream->write((uint64_t*)&cgen_var_438, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005263 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005264 uint64_t cgen_var_439 = (uint64_t)(uintptr_t)local_pAllocator;
5265 stream->putBe64(cgen_var_439);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005266 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005267 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005268 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005269 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005270 resources->destroyMapping()->mapHandles_VkFramebuffer((VkFramebuffer*)&framebuffer);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005271}
5272
5273VkResult VkEncoder::vkCreateRenderPass(
5274 VkDevice device,
5275 const VkRenderPassCreateInfo* pCreateInfo,
5276 const VkAllocationCallbacks* pAllocator,
5277 VkRenderPass* pRenderPass)
5278{
5279 auto stream = mImpl->stream();
5280 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005281 auto resources = mImpl->resources();
5282 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005283 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005284 VkDevice local_device;
5285 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005286 VkRenderPassCreateInfo* local_pCreateInfo;
5287 local_pCreateInfo = nullptr;
5288 if (pCreateInfo)
5289 {
5290 local_pCreateInfo = (VkRenderPassCreateInfo*)pool->alloc(sizeof(const VkRenderPassCreateInfo));
5291 deepcopy_VkRenderPassCreateInfo(pool, pCreateInfo, (VkRenderPassCreateInfo*)(local_pCreateInfo));
5292 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005293 VkAllocationCallbacks* local_pAllocator;
5294 local_pAllocator = nullptr;
5295 if (pAllocator)
5296 {
5297 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5298 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5299 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005300 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005301 countingStream->rewind();
5302 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005303 uint64_t cgen_var_440;
5304 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_440, 1);
5305 countingStream->write((uint64_t*)&cgen_var_440, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005306 marshal_VkRenderPassCreateInfo(countingStream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005307 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005308 uint64_t cgen_var_441 = (uint64_t)(uintptr_t)local_pAllocator;
5309 countingStream->putBe64(cgen_var_441);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005310 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005311 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005312 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005313 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005314 uint64_t cgen_var_442;
5315 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_442, 1);
5316 countingStream->write((uint64_t*)&cgen_var_442, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005317 }
5318 uint32_t packetSize_vkCreateRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5319 countingStream->rewind();
5320 uint32_t opcode_vkCreateRenderPass = OP_vkCreateRenderPass;
5321 stream->write(&opcode_vkCreateRenderPass, sizeof(uint32_t));
5322 stream->write(&packetSize_vkCreateRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005323 uint64_t cgen_var_443;
5324 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_443, 1);
5325 stream->write((uint64_t*)&cgen_var_443, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005326 marshal_VkRenderPassCreateInfo(stream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005327 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005328 uint64_t cgen_var_444 = (uint64_t)(uintptr_t)local_pAllocator;
5329 stream->putBe64(cgen_var_444);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005330 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005331 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005332 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005333 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005334 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005335 uint64_t cgen_var_445;
5336 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_445, 1);
5337 stream->write((uint64_t*)&cgen_var_445, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005338 stream->setHandleMapping(resources->unwrapMapping());
5339 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005340 uint64_t cgen_var_446;
5341 stream->read((uint64_t*)&cgen_var_446, 8);
5342 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_446, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005343 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005344 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
5345 stream->read(&vkCreateRenderPass_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005346 countingStream->clearPool();
5347 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005348 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005349 return vkCreateRenderPass_VkResult_return;
5350}
5351
5352void VkEncoder::vkDestroyRenderPass(
5353 VkDevice device,
5354 VkRenderPass renderPass,
5355 const VkAllocationCallbacks* pAllocator)
5356{
5357 auto stream = mImpl->stream();
5358 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005359 auto resources = mImpl->resources();
5360 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005361 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005362 VkDevice local_device;
5363 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005364 VkRenderPass local_renderPass;
5365 local_renderPass = renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005366 VkAllocationCallbacks* local_pAllocator;
5367 local_pAllocator = nullptr;
5368 if (pAllocator)
5369 {
5370 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5371 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5372 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005373 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005374 countingStream->rewind();
5375 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005376 uint64_t cgen_var_447;
5377 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_447, 1);
5378 countingStream->write((uint64_t*)&cgen_var_447, 1 * 8);
5379 uint64_t cgen_var_448;
5380 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_448, 1);
5381 countingStream->write((uint64_t*)&cgen_var_448, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005382 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005383 uint64_t cgen_var_449 = (uint64_t)(uintptr_t)local_pAllocator;
5384 countingStream->putBe64(cgen_var_449);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005385 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005386 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005387 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005388 }
5389 }
5390 uint32_t packetSize_vkDestroyRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5391 countingStream->rewind();
5392 uint32_t opcode_vkDestroyRenderPass = OP_vkDestroyRenderPass;
5393 stream->write(&opcode_vkDestroyRenderPass, sizeof(uint32_t));
5394 stream->write(&packetSize_vkDestroyRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005395 uint64_t cgen_var_450;
5396 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_450, 1);
5397 stream->write((uint64_t*)&cgen_var_450, 1 * 8);
5398 uint64_t cgen_var_451;
5399 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_451, 1);
5400 stream->write((uint64_t*)&cgen_var_451, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005401 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005402 uint64_t cgen_var_452 = (uint64_t)(uintptr_t)local_pAllocator;
5403 stream->putBe64(cgen_var_452);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005404 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005405 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005406 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005407 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005408 resources->destroyMapping()->mapHandles_VkRenderPass((VkRenderPass*)&renderPass);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005409}
5410
5411void VkEncoder::vkGetRenderAreaGranularity(
5412 VkDevice device,
5413 VkRenderPass renderPass,
5414 VkExtent2D* pGranularity)
5415{
5416 auto stream = mImpl->stream();
5417 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005418 auto resources = mImpl->resources();
5419 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005420 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005421 VkDevice local_device;
5422 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005423 VkRenderPass local_renderPass;
5424 local_renderPass = renderPass;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005425 countingStream->rewind();
5426 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005427 uint64_t cgen_var_453;
5428 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_453, 1);
5429 countingStream->write((uint64_t*)&cgen_var_453, 1 * 8);
5430 uint64_t cgen_var_454;
5431 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_454, 1);
5432 countingStream->write((uint64_t*)&cgen_var_454, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005433 marshal_VkExtent2D(countingStream, (VkExtent2D*)(pGranularity));
5434 }
5435 uint32_t packetSize_vkGetRenderAreaGranularity = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5436 countingStream->rewind();
5437 uint32_t opcode_vkGetRenderAreaGranularity = OP_vkGetRenderAreaGranularity;
5438 stream->write(&opcode_vkGetRenderAreaGranularity, sizeof(uint32_t));
5439 stream->write(&packetSize_vkGetRenderAreaGranularity, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005440 uint64_t cgen_var_455;
5441 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_455, 1);
5442 stream->write((uint64_t*)&cgen_var_455, 1 * 8);
5443 uint64_t cgen_var_456;
5444 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_456, 1);
5445 stream->write((uint64_t*)&cgen_var_456, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005446 marshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
5447 unmarshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
5448}
5449
5450VkResult VkEncoder::vkCreateCommandPool(
5451 VkDevice device,
5452 const VkCommandPoolCreateInfo* pCreateInfo,
5453 const VkAllocationCallbacks* pAllocator,
5454 VkCommandPool* pCommandPool)
5455{
5456 auto stream = mImpl->stream();
5457 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005458 auto resources = mImpl->resources();
5459 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005460 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005461 VkDevice local_device;
5462 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005463 VkCommandPoolCreateInfo* local_pCreateInfo;
5464 local_pCreateInfo = nullptr;
5465 if (pCreateInfo)
5466 {
5467 local_pCreateInfo = (VkCommandPoolCreateInfo*)pool->alloc(sizeof(const VkCommandPoolCreateInfo));
5468 deepcopy_VkCommandPoolCreateInfo(pool, pCreateInfo, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
5469 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005470 VkAllocationCallbacks* local_pAllocator;
5471 local_pAllocator = nullptr;
5472 if (pAllocator)
5473 {
5474 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5475 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5476 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005477 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005478 countingStream->rewind();
5479 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005480 uint64_t cgen_var_457;
5481 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_457, 1);
5482 countingStream->write((uint64_t*)&cgen_var_457, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005483 marshal_VkCommandPoolCreateInfo(countingStream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005484 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005485 uint64_t cgen_var_458 = (uint64_t)(uintptr_t)local_pAllocator;
5486 countingStream->putBe64(cgen_var_458);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005487 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005488 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005489 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005490 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005491 uint64_t cgen_var_459;
5492 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_459, 1);
5493 countingStream->write((uint64_t*)&cgen_var_459, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005494 }
5495 uint32_t packetSize_vkCreateCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5496 countingStream->rewind();
5497 uint32_t opcode_vkCreateCommandPool = OP_vkCreateCommandPool;
5498 stream->write(&opcode_vkCreateCommandPool, sizeof(uint32_t));
5499 stream->write(&packetSize_vkCreateCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005500 uint64_t cgen_var_460;
5501 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_460, 1);
5502 stream->write((uint64_t*)&cgen_var_460, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005503 marshal_VkCommandPoolCreateInfo(stream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005504 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005505 uint64_t cgen_var_461 = (uint64_t)(uintptr_t)local_pAllocator;
5506 stream->putBe64(cgen_var_461);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005507 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005508 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005509 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005510 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005511 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005512 uint64_t cgen_var_462;
5513 stream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_462, 1);
5514 stream->write((uint64_t*)&cgen_var_462, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005515 stream->setHandleMapping(resources->unwrapMapping());
5516 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005517 uint64_t cgen_var_463;
5518 stream->read((uint64_t*)&cgen_var_463, 8);
5519 stream->handleMapping()->mapHandles_u64_VkCommandPool(&cgen_var_463, (VkCommandPool*)pCommandPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005520 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005521 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
5522 stream->read(&vkCreateCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005523 countingStream->clearPool();
5524 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005525 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005526 return vkCreateCommandPool_VkResult_return;
5527}
5528
5529void VkEncoder::vkDestroyCommandPool(
5530 VkDevice device,
5531 VkCommandPool commandPool,
5532 const VkAllocationCallbacks* pAllocator)
5533{
5534 auto stream = mImpl->stream();
5535 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005536 auto resources = mImpl->resources();
5537 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005538 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005539 VkDevice local_device;
5540 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005541 VkCommandPool local_commandPool;
5542 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005543 VkAllocationCallbacks* local_pAllocator;
5544 local_pAllocator = nullptr;
5545 if (pAllocator)
5546 {
5547 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5548 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5549 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005550 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005551 countingStream->rewind();
5552 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005553 uint64_t cgen_var_464;
5554 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_464, 1);
5555 countingStream->write((uint64_t*)&cgen_var_464, 1 * 8);
5556 uint64_t cgen_var_465;
5557 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_465, 1);
5558 countingStream->write((uint64_t*)&cgen_var_465, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005559 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005560 uint64_t cgen_var_466 = (uint64_t)(uintptr_t)local_pAllocator;
5561 countingStream->putBe64(cgen_var_466);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005562 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005563 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005564 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005565 }
5566 }
5567 uint32_t packetSize_vkDestroyCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5568 countingStream->rewind();
5569 uint32_t opcode_vkDestroyCommandPool = OP_vkDestroyCommandPool;
5570 stream->write(&opcode_vkDestroyCommandPool, sizeof(uint32_t));
5571 stream->write(&packetSize_vkDestroyCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005572 uint64_t cgen_var_467;
5573 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_467, 1);
5574 stream->write((uint64_t*)&cgen_var_467, 1 * 8);
5575 uint64_t cgen_var_468;
5576 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_468, 1);
5577 stream->write((uint64_t*)&cgen_var_468, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005578 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005579 uint64_t cgen_var_469 = (uint64_t)(uintptr_t)local_pAllocator;
5580 stream->putBe64(cgen_var_469);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005581 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005582 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005583 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005584 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005585 resources->destroyMapping()->mapHandles_VkCommandPool((VkCommandPool*)&commandPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005586}
5587
5588VkResult VkEncoder::vkResetCommandPool(
5589 VkDevice device,
5590 VkCommandPool commandPool,
5591 VkCommandPoolResetFlags flags)
5592{
5593 auto stream = mImpl->stream();
5594 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005595 auto resources = mImpl->resources();
5596 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005597 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005598 VkDevice local_device;
5599 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005600 VkCommandPool local_commandPool;
5601 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005602 VkCommandPoolResetFlags local_flags;
5603 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005604 countingStream->rewind();
5605 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005606 uint64_t cgen_var_470;
5607 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_470, 1);
5608 countingStream->write((uint64_t*)&cgen_var_470, 1 * 8);
5609 uint64_t cgen_var_471;
5610 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_471, 1);
5611 countingStream->write((uint64_t*)&cgen_var_471, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005612 countingStream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005613 }
5614 uint32_t packetSize_vkResetCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5615 countingStream->rewind();
5616 uint32_t opcode_vkResetCommandPool = OP_vkResetCommandPool;
5617 stream->write(&opcode_vkResetCommandPool, sizeof(uint32_t));
5618 stream->write(&packetSize_vkResetCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005619 uint64_t cgen_var_472;
5620 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_472, 1);
5621 stream->write((uint64_t*)&cgen_var_472, 1 * 8);
5622 uint64_t cgen_var_473;
5623 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_473, 1);
5624 stream->write((uint64_t*)&cgen_var_473, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005625 stream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005626 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
5627 stream->read(&vkResetCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005628 countingStream->clearPool();
5629 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005630 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005631 return vkResetCommandPool_VkResult_return;
5632}
5633
5634VkResult VkEncoder::vkAllocateCommandBuffers(
5635 VkDevice device,
5636 const VkCommandBufferAllocateInfo* pAllocateInfo,
5637 VkCommandBuffer* pCommandBuffers)
5638{
5639 auto stream = mImpl->stream();
5640 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005641 auto resources = mImpl->resources();
5642 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005643 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005644 VkDevice local_device;
5645 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005646 VkCommandBufferAllocateInfo* local_pAllocateInfo;
5647 local_pAllocateInfo = nullptr;
5648 if (pAllocateInfo)
5649 {
5650 local_pAllocateInfo = (VkCommandBufferAllocateInfo*)pool->alloc(sizeof(const VkCommandBufferAllocateInfo));
5651 deepcopy_VkCommandBufferAllocateInfo(pool, pAllocateInfo, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
5652 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005653 countingStream->rewind();
5654 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005655 uint64_t cgen_var_474;
5656 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_474, 1);
5657 countingStream->write((uint64_t*)&cgen_var_474, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005658 marshal_VkCommandBufferAllocateInfo(countingStream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005659 if (pAllocateInfo->commandBufferCount)
5660 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005661 uint64_t* cgen_var_475;
5662 countingStream->alloc((void**)&cgen_var_475, pAllocateInfo->commandBufferCount * 8);
5663 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_475, pAllocateInfo->commandBufferCount);
5664 countingStream->write((uint64_t*)cgen_var_475, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005665 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005666 }
5667 uint32_t packetSize_vkAllocateCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5668 countingStream->rewind();
5669 uint32_t opcode_vkAllocateCommandBuffers = OP_vkAllocateCommandBuffers;
5670 stream->write(&opcode_vkAllocateCommandBuffers, sizeof(uint32_t));
5671 stream->write(&packetSize_vkAllocateCommandBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005672 uint64_t cgen_var_476;
5673 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_476, 1);
5674 stream->write((uint64_t*)&cgen_var_476, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005675 marshal_VkCommandBufferAllocateInfo(stream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08005676 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08005677 if (pAllocateInfo->commandBufferCount)
5678 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005679 uint64_t* cgen_var_477;
5680 stream->alloc((void**)&cgen_var_477, pAllocateInfo->commandBufferCount * 8);
5681 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_477, pAllocateInfo->commandBufferCount);
5682 stream->write((uint64_t*)cgen_var_477, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005683 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005684 stream->setHandleMapping(resources->unwrapMapping());
5685 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08005686 if (pAllocateInfo->commandBufferCount)
5687 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005688 uint64_t* cgen_var_478;
5689 stream->alloc((void**)&cgen_var_478, pAllocateInfo->commandBufferCount * 8);
5690 stream->read((uint64_t*)cgen_var_478, pAllocateInfo->commandBufferCount * 8);
5691 stream->handleMapping()->mapHandles_u64_VkCommandBuffer(cgen_var_478, (VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005692 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005693 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005694 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
5695 stream->read(&vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005696 countingStream->clearPool();
5697 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005698 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005699 return vkAllocateCommandBuffers_VkResult_return;
5700}
5701
5702void VkEncoder::vkFreeCommandBuffers(
5703 VkDevice device,
5704 VkCommandPool commandPool,
5705 uint32_t commandBufferCount,
5706 const VkCommandBuffer* pCommandBuffers)
5707{
5708 auto stream = mImpl->stream();
5709 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005710 auto resources = mImpl->resources();
5711 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005712 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005713 VkDevice local_device;
5714 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005715 VkCommandPool local_commandPool;
5716 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005717 uint32_t local_commandBufferCount;
5718 local_commandBufferCount = commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005719 VkCommandBuffer* local_pCommandBuffers;
5720 local_pCommandBuffers = nullptr;
5721 if (pCommandBuffers)
5722 {
5723 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
5724 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005725 countingStream->rewind();
5726 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005727 uint64_t cgen_var_479;
5728 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_479, 1);
5729 countingStream->write((uint64_t*)&cgen_var_479, 1 * 8);
5730 uint64_t cgen_var_480;
5731 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_480, 1);
5732 countingStream->write((uint64_t*)&cgen_var_480, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005733 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005734 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005735 uint64_t cgen_var_481 = (uint64_t)(uintptr_t)local_pCommandBuffers;
5736 countingStream->putBe64(cgen_var_481);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005737 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005738 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005739 if (((commandBufferCount)))
5740 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005741 uint64_t* cgen_var_482;
5742 countingStream->alloc((void**)&cgen_var_482, ((commandBufferCount)) * 8);
5743 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_482, ((commandBufferCount)));
5744 countingStream->write((uint64_t*)cgen_var_482, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005745 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005746 }
5747 }
5748 uint32_t packetSize_vkFreeCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5749 countingStream->rewind();
5750 uint32_t opcode_vkFreeCommandBuffers = OP_vkFreeCommandBuffers;
5751 stream->write(&opcode_vkFreeCommandBuffers, sizeof(uint32_t));
5752 stream->write(&packetSize_vkFreeCommandBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005753 uint64_t cgen_var_483;
5754 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_483, 1);
5755 stream->write((uint64_t*)&cgen_var_483, 1 * 8);
5756 uint64_t cgen_var_484;
5757 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_484, 1);
5758 stream->write((uint64_t*)&cgen_var_484, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005759 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005760 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005761 uint64_t cgen_var_485 = (uint64_t)(uintptr_t)local_pCommandBuffers;
5762 stream->putBe64(cgen_var_485);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005763 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005764 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005765 if (((commandBufferCount)))
5766 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005767 uint64_t* cgen_var_486;
5768 stream->alloc((void**)&cgen_var_486, ((commandBufferCount)) * 8);
5769 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_486, ((commandBufferCount)));
5770 stream->write((uint64_t*)cgen_var_486, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005771 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005772 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005773 if (pCommandBuffers)
5774 {
5775 resources->destroyMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)));
5776 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005777}
5778
5779VkResult VkEncoder::vkBeginCommandBuffer(
5780 VkCommandBuffer commandBuffer,
5781 const VkCommandBufferBeginInfo* pBeginInfo)
5782{
5783 auto stream = mImpl->stream();
5784 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005785 auto resources = mImpl->resources();
5786 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005787 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005788 VkCommandBuffer local_commandBuffer;
5789 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005790 VkCommandBufferBeginInfo* local_pBeginInfo;
5791 local_pBeginInfo = nullptr;
5792 if (pBeginInfo)
5793 {
5794 local_pBeginInfo = (VkCommandBufferBeginInfo*)pool->alloc(sizeof(const VkCommandBufferBeginInfo));
5795 deepcopy_VkCommandBufferBeginInfo(pool, pBeginInfo, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
5796 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005797 countingStream->rewind();
5798 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005799 uint64_t cgen_var_487;
5800 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_487, 1);
5801 countingStream->write((uint64_t*)&cgen_var_487, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005802 marshal_VkCommandBufferBeginInfo(countingStream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005803 }
5804 uint32_t packetSize_vkBeginCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5805 countingStream->rewind();
5806 uint32_t opcode_vkBeginCommandBuffer = OP_vkBeginCommandBuffer;
5807 stream->write(&opcode_vkBeginCommandBuffer, sizeof(uint32_t));
5808 stream->write(&packetSize_vkBeginCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005809 uint64_t cgen_var_488;
5810 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_488, 1);
5811 stream->write((uint64_t*)&cgen_var_488, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005812 marshal_VkCommandBufferBeginInfo(stream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005813 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
5814 stream->read(&vkBeginCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005815 countingStream->clearPool();
5816 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005817 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005818 return vkBeginCommandBuffer_VkResult_return;
5819}
5820
5821VkResult VkEncoder::vkEndCommandBuffer(
5822 VkCommandBuffer commandBuffer)
5823{
5824 auto stream = mImpl->stream();
5825 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005826 auto resources = mImpl->resources();
5827 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005828 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005829 VkCommandBuffer local_commandBuffer;
5830 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005831 countingStream->rewind();
5832 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005833 uint64_t cgen_var_489;
5834 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_489, 1);
5835 countingStream->write((uint64_t*)&cgen_var_489, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005836 }
5837 uint32_t packetSize_vkEndCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5838 countingStream->rewind();
5839 uint32_t opcode_vkEndCommandBuffer = OP_vkEndCommandBuffer;
5840 stream->write(&opcode_vkEndCommandBuffer, sizeof(uint32_t));
5841 stream->write(&packetSize_vkEndCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005842 uint64_t cgen_var_490;
5843 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_490, 1);
5844 stream->write((uint64_t*)&cgen_var_490, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005845 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
5846 stream->read(&vkEndCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005847 countingStream->clearPool();
5848 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005849 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005850 return vkEndCommandBuffer_VkResult_return;
5851}
5852
5853VkResult VkEncoder::vkResetCommandBuffer(
5854 VkCommandBuffer commandBuffer,
5855 VkCommandBufferResetFlags flags)
5856{
5857 auto stream = mImpl->stream();
5858 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005859 auto resources = mImpl->resources();
5860 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005861 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005862 VkCommandBuffer local_commandBuffer;
5863 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005864 VkCommandBufferResetFlags local_flags;
5865 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005866 countingStream->rewind();
5867 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005868 uint64_t cgen_var_491;
5869 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_491, 1);
5870 countingStream->write((uint64_t*)&cgen_var_491, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005871 countingStream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005872 }
5873 uint32_t packetSize_vkResetCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5874 countingStream->rewind();
5875 uint32_t opcode_vkResetCommandBuffer = OP_vkResetCommandBuffer;
5876 stream->write(&opcode_vkResetCommandBuffer, sizeof(uint32_t));
5877 stream->write(&packetSize_vkResetCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005878 uint64_t cgen_var_492;
5879 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_492, 1);
5880 stream->write((uint64_t*)&cgen_var_492, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005881 stream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005882 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
5883 stream->read(&vkResetCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005884 countingStream->clearPool();
5885 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005886 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005887 return vkResetCommandBuffer_VkResult_return;
5888}
5889
5890void VkEncoder::vkCmdBindPipeline(
5891 VkCommandBuffer commandBuffer,
5892 VkPipelineBindPoint pipelineBindPoint,
5893 VkPipeline pipeline)
5894{
5895 auto stream = mImpl->stream();
5896 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005897 auto resources = mImpl->resources();
5898 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005899 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005900 VkCommandBuffer local_commandBuffer;
5901 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005902 VkPipelineBindPoint local_pipelineBindPoint;
5903 local_pipelineBindPoint = pipelineBindPoint;
5904 VkPipeline local_pipeline;
5905 local_pipeline = pipeline;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005906 countingStream->rewind();
5907 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005908 uint64_t cgen_var_493;
5909 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_493, 1);
5910 countingStream->write((uint64_t*)&cgen_var_493, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005911 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005912 uint64_t cgen_var_494;
5913 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_494, 1);
5914 countingStream->write((uint64_t*)&cgen_var_494, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005915 }
5916 uint32_t packetSize_vkCmdBindPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5917 countingStream->rewind();
5918 uint32_t opcode_vkCmdBindPipeline = OP_vkCmdBindPipeline;
5919 stream->write(&opcode_vkCmdBindPipeline, sizeof(uint32_t));
5920 stream->write(&packetSize_vkCmdBindPipeline, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005921 uint64_t cgen_var_495;
5922 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_495, 1);
5923 stream->write((uint64_t*)&cgen_var_495, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005924 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005925 uint64_t cgen_var_496;
5926 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_496, 1);
5927 stream->write((uint64_t*)&cgen_var_496, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005928}
5929
5930void VkEncoder::vkCmdSetViewport(
5931 VkCommandBuffer commandBuffer,
5932 uint32_t firstViewport,
5933 uint32_t viewportCount,
5934 const VkViewport* pViewports)
5935{
5936 auto stream = mImpl->stream();
5937 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005938 auto resources = mImpl->resources();
5939 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005940 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005941 VkCommandBuffer local_commandBuffer;
5942 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005943 uint32_t local_firstViewport;
5944 local_firstViewport = firstViewport;
5945 uint32_t local_viewportCount;
5946 local_viewportCount = viewportCount;
5947 VkViewport* local_pViewports;
5948 local_pViewports = nullptr;
5949 if (pViewports)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005950 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005951 local_pViewports = (VkViewport*)pool->alloc(((viewportCount)) * sizeof(const VkViewport));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005952 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
5953 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005954 deepcopy_VkViewport(pool, pViewports + i, (VkViewport*)(local_pViewports + i));
5955 }
5956 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005957 countingStream->rewind();
5958 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005959 uint64_t cgen_var_497;
5960 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_497, 1);
5961 countingStream->write((uint64_t*)&cgen_var_497, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005962 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
5963 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
5964 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
5965 {
5966 marshal_VkViewport(countingStream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005967 }
5968 }
5969 uint32_t packetSize_vkCmdSetViewport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5970 countingStream->rewind();
5971 uint32_t opcode_vkCmdSetViewport = OP_vkCmdSetViewport;
5972 stream->write(&opcode_vkCmdSetViewport, sizeof(uint32_t));
5973 stream->write(&packetSize_vkCmdSetViewport, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005974 uint64_t cgen_var_498;
5975 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_498, 1);
5976 stream->write((uint64_t*)&cgen_var_498, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005977 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
5978 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005979 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
5980 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005981 marshal_VkViewport(stream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005982 }
5983}
5984
5985void VkEncoder::vkCmdSetScissor(
5986 VkCommandBuffer commandBuffer,
5987 uint32_t firstScissor,
5988 uint32_t scissorCount,
5989 const VkRect2D* pScissors)
5990{
5991 auto stream = mImpl->stream();
5992 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005993 auto resources = mImpl->resources();
5994 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005995 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005996 VkCommandBuffer local_commandBuffer;
5997 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005998 uint32_t local_firstScissor;
5999 local_firstScissor = firstScissor;
6000 uint32_t local_scissorCount;
6001 local_scissorCount = scissorCount;
6002 VkRect2D* local_pScissors;
6003 local_pScissors = nullptr;
6004 if (pScissors)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006005 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006006 local_pScissors = (VkRect2D*)pool->alloc(((scissorCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006007 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6008 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006009 deepcopy_VkRect2D(pool, pScissors + i, (VkRect2D*)(local_pScissors + i));
6010 }
6011 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006012 countingStream->rewind();
6013 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006014 uint64_t cgen_var_499;
6015 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_499, 1);
6016 countingStream->write((uint64_t*)&cgen_var_499, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006017 countingStream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
6018 countingStream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
6019 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6020 {
6021 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006022 }
6023 }
6024 uint32_t packetSize_vkCmdSetScissor = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6025 countingStream->rewind();
6026 uint32_t opcode_vkCmdSetScissor = OP_vkCmdSetScissor;
6027 stream->write(&opcode_vkCmdSetScissor, sizeof(uint32_t));
6028 stream->write(&packetSize_vkCmdSetScissor, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006029 uint64_t cgen_var_500;
6030 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_500, 1);
6031 stream->write((uint64_t*)&cgen_var_500, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006032 stream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
6033 stream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006034 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6035 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006036 marshal_VkRect2D(stream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006037 }
6038}
6039
6040void VkEncoder::vkCmdSetLineWidth(
6041 VkCommandBuffer commandBuffer,
6042 float lineWidth)
6043{
6044 auto stream = mImpl->stream();
6045 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006046 auto resources = mImpl->resources();
6047 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006048 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006049 VkCommandBuffer local_commandBuffer;
6050 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006051 float local_lineWidth;
6052 local_lineWidth = lineWidth;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006053 countingStream->rewind();
6054 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006055 uint64_t cgen_var_501;
6056 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_501, 1);
6057 countingStream->write((uint64_t*)&cgen_var_501, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006058 countingStream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006059 }
6060 uint32_t packetSize_vkCmdSetLineWidth = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6061 countingStream->rewind();
6062 uint32_t opcode_vkCmdSetLineWidth = OP_vkCmdSetLineWidth;
6063 stream->write(&opcode_vkCmdSetLineWidth, sizeof(uint32_t));
6064 stream->write(&packetSize_vkCmdSetLineWidth, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006065 uint64_t cgen_var_502;
6066 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_502, 1);
6067 stream->write((uint64_t*)&cgen_var_502, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006068 stream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006069}
6070
6071void VkEncoder::vkCmdSetDepthBias(
6072 VkCommandBuffer commandBuffer,
6073 float depthBiasConstantFactor,
6074 float depthBiasClamp,
6075 float depthBiasSlopeFactor)
6076{
6077 auto stream = mImpl->stream();
6078 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006079 auto resources = mImpl->resources();
6080 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006081 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006082 VkCommandBuffer local_commandBuffer;
6083 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006084 float local_depthBiasConstantFactor;
6085 local_depthBiasConstantFactor = depthBiasConstantFactor;
6086 float local_depthBiasClamp;
6087 local_depthBiasClamp = depthBiasClamp;
6088 float local_depthBiasSlopeFactor;
6089 local_depthBiasSlopeFactor = depthBiasSlopeFactor;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006090 countingStream->rewind();
6091 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006092 uint64_t cgen_var_503;
6093 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_503, 1);
6094 countingStream->write((uint64_t*)&cgen_var_503, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006095 countingStream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
6096 countingStream->write((float*)&local_depthBiasClamp, sizeof(float));
6097 countingStream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006098 }
6099 uint32_t packetSize_vkCmdSetDepthBias = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6100 countingStream->rewind();
6101 uint32_t opcode_vkCmdSetDepthBias = OP_vkCmdSetDepthBias;
6102 stream->write(&opcode_vkCmdSetDepthBias, sizeof(uint32_t));
6103 stream->write(&packetSize_vkCmdSetDepthBias, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006104 uint64_t cgen_var_504;
6105 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_504, 1);
6106 stream->write((uint64_t*)&cgen_var_504, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006107 stream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
6108 stream->write((float*)&local_depthBiasClamp, sizeof(float));
6109 stream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006110}
6111
6112void VkEncoder::vkCmdSetBlendConstants(
6113 VkCommandBuffer commandBuffer,
6114 const float blendConstants)
6115{
6116 auto stream = mImpl->stream();
6117 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006118 auto resources = mImpl->resources();
6119 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006120 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006121 VkCommandBuffer local_commandBuffer;
6122 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006123 float local_blendConstants[4];
6124 memcpy(&local_blendConstants, &blendConstants, 4 * sizeof(const float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006125 countingStream->rewind();
6126 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006127 uint64_t cgen_var_505;
6128 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_505, 1);
6129 countingStream->write((uint64_t*)&cgen_var_505, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006130 countingStream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006131 }
6132 uint32_t packetSize_vkCmdSetBlendConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6133 countingStream->rewind();
6134 uint32_t opcode_vkCmdSetBlendConstants = OP_vkCmdSetBlendConstants;
6135 stream->write(&opcode_vkCmdSetBlendConstants, sizeof(uint32_t));
6136 stream->write(&packetSize_vkCmdSetBlendConstants, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006137 uint64_t cgen_var_506;
6138 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_506, 1);
6139 stream->write((uint64_t*)&cgen_var_506, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006140 stream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006141}
6142
6143void VkEncoder::vkCmdSetDepthBounds(
6144 VkCommandBuffer commandBuffer,
6145 float minDepthBounds,
6146 float maxDepthBounds)
6147{
6148 auto stream = mImpl->stream();
6149 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006150 auto resources = mImpl->resources();
6151 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006152 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006153 VkCommandBuffer local_commandBuffer;
6154 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006155 float local_minDepthBounds;
6156 local_minDepthBounds = minDepthBounds;
6157 float local_maxDepthBounds;
6158 local_maxDepthBounds = maxDepthBounds;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006159 countingStream->rewind();
6160 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006161 uint64_t cgen_var_507;
6162 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_507, 1);
6163 countingStream->write((uint64_t*)&cgen_var_507, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006164 countingStream->write((float*)&local_minDepthBounds, sizeof(float));
6165 countingStream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006166 }
6167 uint32_t packetSize_vkCmdSetDepthBounds = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6168 countingStream->rewind();
6169 uint32_t opcode_vkCmdSetDepthBounds = OP_vkCmdSetDepthBounds;
6170 stream->write(&opcode_vkCmdSetDepthBounds, sizeof(uint32_t));
6171 stream->write(&packetSize_vkCmdSetDepthBounds, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006172 uint64_t cgen_var_508;
6173 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_508, 1);
6174 stream->write((uint64_t*)&cgen_var_508, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006175 stream->write((float*)&local_minDepthBounds, sizeof(float));
6176 stream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006177}
6178
6179void VkEncoder::vkCmdSetStencilCompareMask(
6180 VkCommandBuffer commandBuffer,
6181 VkStencilFaceFlags faceMask,
6182 uint32_t compareMask)
6183{
6184 auto stream = mImpl->stream();
6185 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006186 auto resources = mImpl->resources();
6187 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006188 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006189 VkCommandBuffer local_commandBuffer;
6190 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006191 VkStencilFaceFlags local_faceMask;
6192 local_faceMask = faceMask;
6193 uint32_t local_compareMask;
6194 local_compareMask = compareMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006195 countingStream->rewind();
6196 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006197 uint64_t cgen_var_509;
6198 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_509, 1);
6199 countingStream->write((uint64_t*)&cgen_var_509, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006200 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6201 countingStream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006202 }
6203 uint32_t packetSize_vkCmdSetStencilCompareMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6204 countingStream->rewind();
6205 uint32_t opcode_vkCmdSetStencilCompareMask = OP_vkCmdSetStencilCompareMask;
6206 stream->write(&opcode_vkCmdSetStencilCompareMask, sizeof(uint32_t));
6207 stream->write(&packetSize_vkCmdSetStencilCompareMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006208 uint64_t cgen_var_510;
6209 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_510, 1);
6210 stream->write((uint64_t*)&cgen_var_510, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006211 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6212 stream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006213}
6214
6215void VkEncoder::vkCmdSetStencilWriteMask(
6216 VkCommandBuffer commandBuffer,
6217 VkStencilFaceFlags faceMask,
6218 uint32_t writeMask)
6219{
6220 auto stream = mImpl->stream();
6221 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006222 auto resources = mImpl->resources();
6223 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006224 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006225 VkCommandBuffer local_commandBuffer;
6226 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006227 VkStencilFaceFlags local_faceMask;
6228 local_faceMask = faceMask;
6229 uint32_t local_writeMask;
6230 local_writeMask = writeMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006231 countingStream->rewind();
6232 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006233 uint64_t cgen_var_511;
6234 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_511, 1);
6235 countingStream->write((uint64_t*)&cgen_var_511, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006236 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6237 countingStream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006238 }
6239 uint32_t packetSize_vkCmdSetStencilWriteMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6240 countingStream->rewind();
6241 uint32_t opcode_vkCmdSetStencilWriteMask = OP_vkCmdSetStencilWriteMask;
6242 stream->write(&opcode_vkCmdSetStencilWriteMask, sizeof(uint32_t));
6243 stream->write(&packetSize_vkCmdSetStencilWriteMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006244 uint64_t cgen_var_512;
6245 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_512, 1);
6246 stream->write((uint64_t*)&cgen_var_512, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006247 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6248 stream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006249}
6250
6251void VkEncoder::vkCmdSetStencilReference(
6252 VkCommandBuffer commandBuffer,
6253 VkStencilFaceFlags faceMask,
6254 uint32_t reference)
6255{
6256 auto stream = mImpl->stream();
6257 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006258 auto resources = mImpl->resources();
6259 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006260 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006261 VkCommandBuffer local_commandBuffer;
6262 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006263 VkStencilFaceFlags local_faceMask;
6264 local_faceMask = faceMask;
6265 uint32_t local_reference;
6266 local_reference = reference;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006267 countingStream->rewind();
6268 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006269 uint64_t cgen_var_513;
6270 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_513, 1);
6271 countingStream->write((uint64_t*)&cgen_var_513, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006272 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6273 countingStream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006274 }
6275 uint32_t packetSize_vkCmdSetStencilReference = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6276 countingStream->rewind();
6277 uint32_t opcode_vkCmdSetStencilReference = OP_vkCmdSetStencilReference;
6278 stream->write(&opcode_vkCmdSetStencilReference, sizeof(uint32_t));
6279 stream->write(&packetSize_vkCmdSetStencilReference, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006280 uint64_t cgen_var_514;
6281 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_514, 1);
6282 stream->write((uint64_t*)&cgen_var_514, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006283 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6284 stream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006285}
6286
6287void VkEncoder::vkCmdBindDescriptorSets(
6288 VkCommandBuffer commandBuffer,
6289 VkPipelineBindPoint pipelineBindPoint,
6290 VkPipelineLayout layout,
6291 uint32_t firstSet,
6292 uint32_t descriptorSetCount,
6293 const VkDescriptorSet* pDescriptorSets,
6294 uint32_t dynamicOffsetCount,
6295 const uint32_t* pDynamicOffsets)
6296{
6297 auto stream = mImpl->stream();
6298 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006299 auto resources = mImpl->resources();
6300 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006301 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006302 VkCommandBuffer local_commandBuffer;
6303 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006304 VkPipelineBindPoint local_pipelineBindPoint;
6305 local_pipelineBindPoint = pipelineBindPoint;
6306 VkPipelineLayout local_layout;
6307 local_layout = layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006308 uint32_t local_firstSet;
6309 local_firstSet = firstSet;
6310 uint32_t local_descriptorSetCount;
6311 local_descriptorSetCount = descriptorSetCount;
6312 VkDescriptorSet* local_pDescriptorSets;
6313 local_pDescriptorSets = nullptr;
6314 if (pDescriptorSets)
6315 {
6316 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
6317 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006318 uint32_t local_dynamicOffsetCount;
6319 local_dynamicOffsetCount = dynamicOffsetCount;
6320 uint32_t* local_pDynamicOffsets;
6321 local_pDynamicOffsets = nullptr;
6322 if (pDynamicOffsets)
6323 {
6324 local_pDynamicOffsets = (uint32_t*)pool->dupArray(pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t));
6325 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006326 countingStream->rewind();
6327 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006328 uint64_t cgen_var_515;
6329 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_515, 1);
6330 countingStream->write((uint64_t*)&cgen_var_515, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006331 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006332 uint64_t cgen_var_516;
6333 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_516, 1);
6334 countingStream->write((uint64_t*)&cgen_var_516, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006335 countingStream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
6336 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006337 if (((descriptorSetCount)))
6338 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006339 uint64_t* cgen_var_517;
6340 countingStream->alloc((void**)&cgen_var_517, ((descriptorSetCount)) * 8);
6341 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_517, ((descriptorSetCount)));
6342 countingStream->write((uint64_t*)cgen_var_517, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006343 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006344 countingStream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
6345 countingStream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006346 }
6347 uint32_t packetSize_vkCmdBindDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6348 countingStream->rewind();
6349 uint32_t opcode_vkCmdBindDescriptorSets = OP_vkCmdBindDescriptorSets;
6350 stream->write(&opcode_vkCmdBindDescriptorSets, sizeof(uint32_t));
6351 stream->write(&packetSize_vkCmdBindDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006352 uint64_t cgen_var_518;
6353 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_518, 1);
6354 stream->write((uint64_t*)&cgen_var_518, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006355 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006356 uint64_t cgen_var_519;
6357 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_519, 1);
6358 stream->write((uint64_t*)&cgen_var_519, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006359 stream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
6360 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006361 if (((descriptorSetCount)))
6362 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006363 uint64_t* cgen_var_520;
6364 stream->alloc((void**)&cgen_var_520, ((descriptorSetCount)) * 8);
6365 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_520, ((descriptorSetCount)));
6366 stream->write((uint64_t*)cgen_var_520, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006367 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006368 stream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
6369 stream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006370}
6371
6372void VkEncoder::vkCmdBindIndexBuffer(
6373 VkCommandBuffer commandBuffer,
6374 VkBuffer buffer,
6375 VkDeviceSize offset,
6376 VkIndexType indexType)
6377{
6378 auto stream = mImpl->stream();
6379 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006380 auto resources = mImpl->resources();
6381 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006382 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006383 VkCommandBuffer local_commandBuffer;
6384 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006385 VkBuffer local_buffer;
6386 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006387 VkDeviceSize local_offset;
6388 local_offset = offset;
6389 VkIndexType local_indexType;
6390 local_indexType = indexType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006391 countingStream->rewind();
6392 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006393 uint64_t cgen_var_521;
6394 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_521, 1);
6395 countingStream->write((uint64_t*)&cgen_var_521, 1 * 8);
6396 uint64_t cgen_var_522;
6397 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_522, 1);
6398 countingStream->write((uint64_t*)&cgen_var_522, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006399 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6400 countingStream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006401 }
6402 uint32_t packetSize_vkCmdBindIndexBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6403 countingStream->rewind();
6404 uint32_t opcode_vkCmdBindIndexBuffer = OP_vkCmdBindIndexBuffer;
6405 stream->write(&opcode_vkCmdBindIndexBuffer, sizeof(uint32_t));
6406 stream->write(&packetSize_vkCmdBindIndexBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006407 uint64_t cgen_var_523;
6408 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_523, 1);
6409 stream->write((uint64_t*)&cgen_var_523, 1 * 8);
6410 uint64_t cgen_var_524;
6411 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_524, 1);
6412 stream->write((uint64_t*)&cgen_var_524, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006413 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6414 stream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006415}
6416
6417void VkEncoder::vkCmdBindVertexBuffers(
6418 VkCommandBuffer commandBuffer,
6419 uint32_t firstBinding,
6420 uint32_t bindingCount,
6421 const VkBuffer* pBuffers,
6422 const VkDeviceSize* pOffsets)
6423{
6424 auto stream = mImpl->stream();
6425 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006426 auto resources = mImpl->resources();
6427 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006428 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006429 VkCommandBuffer local_commandBuffer;
6430 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006431 uint32_t local_firstBinding;
6432 local_firstBinding = firstBinding;
6433 uint32_t local_bindingCount;
6434 local_bindingCount = bindingCount;
6435 VkBuffer* local_pBuffers;
6436 local_pBuffers = nullptr;
6437 if (pBuffers)
6438 {
6439 local_pBuffers = (VkBuffer*)pool->dupArray(pBuffers, ((bindingCount)) * sizeof(const VkBuffer));
6440 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006441 VkDeviceSize* local_pOffsets;
6442 local_pOffsets = nullptr;
6443 if (pOffsets)
6444 {
6445 local_pOffsets = (VkDeviceSize*)pool->dupArray(pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize));
6446 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006447 countingStream->rewind();
6448 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006449 uint64_t cgen_var_525;
6450 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_525, 1);
6451 countingStream->write((uint64_t*)&cgen_var_525, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006452 countingStream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
6453 countingStream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006454 if (((bindingCount)))
6455 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006456 uint64_t* cgen_var_526;
6457 countingStream->alloc((void**)&cgen_var_526, ((bindingCount)) * 8);
6458 countingStream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_526, ((bindingCount)));
6459 countingStream->write((uint64_t*)cgen_var_526, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006460 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006461 countingStream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006462 }
6463 uint32_t packetSize_vkCmdBindVertexBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6464 countingStream->rewind();
6465 uint32_t opcode_vkCmdBindVertexBuffers = OP_vkCmdBindVertexBuffers;
6466 stream->write(&opcode_vkCmdBindVertexBuffers, sizeof(uint32_t));
6467 stream->write(&packetSize_vkCmdBindVertexBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006468 uint64_t cgen_var_527;
6469 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_527, 1);
6470 stream->write((uint64_t*)&cgen_var_527, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006471 stream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
6472 stream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006473 if (((bindingCount)))
6474 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006475 uint64_t* cgen_var_528;
6476 stream->alloc((void**)&cgen_var_528, ((bindingCount)) * 8);
6477 stream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_528, ((bindingCount)));
6478 stream->write((uint64_t*)cgen_var_528, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006479 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006480 stream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006481}
6482
6483void VkEncoder::vkCmdDraw(
6484 VkCommandBuffer commandBuffer,
6485 uint32_t vertexCount,
6486 uint32_t instanceCount,
6487 uint32_t firstVertex,
6488 uint32_t firstInstance)
6489{
6490 auto stream = mImpl->stream();
6491 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006492 auto resources = mImpl->resources();
6493 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006494 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006495 VkCommandBuffer local_commandBuffer;
6496 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006497 uint32_t local_vertexCount;
6498 local_vertexCount = vertexCount;
6499 uint32_t local_instanceCount;
6500 local_instanceCount = instanceCount;
6501 uint32_t local_firstVertex;
6502 local_firstVertex = firstVertex;
6503 uint32_t local_firstInstance;
6504 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006505 countingStream->rewind();
6506 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006507 uint64_t cgen_var_529;
6508 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_529, 1);
6509 countingStream->write((uint64_t*)&cgen_var_529, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006510 countingStream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
6511 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6512 countingStream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
6513 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006514 }
6515 uint32_t packetSize_vkCmdDraw = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6516 countingStream->rewind();
6517 uint32_t opcode_vkCmdDraw = OP_vkCmdDraw;
6518 stream->write(&opcode_vkCmdDraw, sizeof(uint32_t));
6519 stream->write(&packetSize_vkCmdDraw, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006520 uint64_t cgen_var_530;
6521 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_530, 1);
6522 stream->write((uint64_t*)&cgen_var_530, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006523 stream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
6524 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6525 stream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
6526 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006527}
6528
6529void VkEncoder::vkCmdDrawIndexed(
6530 VkCommandBuffer commandBuffer,
6531 uint32_t indexCount,
6532 uint32_t instanceCount,
6533 uint32_t firstIndex,
6534 int32_t vertexOffset,
6535 uint32_t firstInstance)
6536{
6537 auto stream = mImpl->stream();
6538 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006539 auto resources = mImpl->resources();
6540 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006541 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006542 VkCommandBuffer local_commandBuffer;
6543 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006544 uint32_t local_indexCount;
6545 local_indexCount = indexCount;
6546 uint32_t local_instanceCount;
6547 local_instanceCount = instanceCount;
6548 uint32_t local_firstIndex;
6549 local_firstIndex = firstIndex;
6550 int32_t local_vertexOffset;
6551 local_vertexOffset = vertexOffset;
6552 uint32_t local_firstInstance;
6553 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006554 countingStream->rewind();
6555 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006556 uint64_t cgen_var_531;
6557 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_531, 1);
6558 countingStream->write((uint64_t*)&cgen_var_531, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006559 countingStream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
6560 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6561 countingStream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
6562 countingStream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
6563 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006564 }
6565 uint32_t packetSize_vkCmdDrawIndexed = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6566 countingStream->rewind();
6567 uint32_t opcode_vkCmdDrawIndexed = OP_vkCmdDrawIndexed;
6568 stream->write(&opcode_vkCmdDrawIndexed, sizeof(uint32_t));
6569 stream->write(&packetSize_vkCmdDrawIndexed, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006570 uint64_t cgen_var_532;
6571 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_532, 1);
6572 stream->write((uint64_t*)&cgen_var_532, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006573 stream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
6574 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6575 stream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
6576 stream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
6577 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006578}
6579
6580void VkEncoder::vkCmdDrawIndirect(
6581 VkCommandBuffer commandBuffer,
6582 VkBuffer buffer,
6583 VkDeviceSize offset,
6584 uint32_t drawCount,
6585 uint32_t stride)
6586{
6587 auto stream = mImpl->stream();
6588 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006589 auto resources = mImpl->resources();
6590 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006591 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006592 VkCommandBuffer local_commandBuffer;
6593 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006594 VkBuffer local_buffer;
6595 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006596 VkDeviceSize local_offset;
6597 local_offset = offset;
6598 uint32_t local_drawCount;
6599 local_drawCount = drawCount;
6600 uint32_t local_stride;
6601 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006602 countingStream->rewind();
6603 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006604 uint64_t cgen_var_533;
6605 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_533, 1);
6606 countingStream->write((uint64_t*)&cgen_var_533, 1 * 8);
6607 uint64_t cgen_var_534;
6608 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_534, 1);
6609 countingStream->write((uint64_t*)&cgen_var_534, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006610 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6611 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6612 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006613 }
6614 uint32_t packetSize_vkCmdDrawIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6615 countingStream->rewind();
6616 uint32_t opcode_vkCmdDrawIndirect = OP_vkCmdDrawIndirect;
6617 stream->write(&opcode_vkCmdDrawIndirect, sizeof(uint32_t));
6618 stream->write(&packetSize_vkCmdDrawIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006619 uint64_t cgen_var_535;
6620 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_535, 1);
6621 stream->write((uint64_t*)&cgen_var_535, 1 * 8);
6622 uint64_t cgen_var_536;
6623 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_536, 1);
6624 stream->write((uint64_t*)&cgen_var_536, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006625 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6626 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6627 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006628}
6629
6630void VkEncoder::vkCmdDrawIndexedIndirect(
6631 VkCommandBuffer commandBuffer,
6632 VkBuffer buffer,
6633 VkDeviceSize offset,
6634 uint32_t drawCount,
6635 uint32_t stride)
6636{
6637 auto stream = mImpl->stream();
6638 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006639 auto resources = mImpl->resources();
6640 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006641 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006642 VkCommandBuffer local_commandBuffer;
6643 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006644 VkBuffer local_buffer;
6645 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006646 VkDeviceSize local_offset;
6647 local_offset = offset;
6648 uint32_t local_drawCount;
6649 local_drawCount = drawCount;
6650 uint32_t local_stride;
6651 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006652 countingStream->rewind();
6653 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006654 uint64_t cgen_var_537;
6655 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_537, 1);
6656 countingStream->write((uint64_t*)&cgen_var_537, 1 * 8);
6657 uint64_t cgen_var_538;
6658 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_538, 1);
6659 countingStream->write((uint64_t*)&cgen_var_538, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006660 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6661 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6662 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006663 }
6664 uint32_t packetSize_vkCmdDrawIndexedIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6665 countingStream->rewind();
6666 uint32_t opcode_vkCmdDrawIndexedIndirect = OP_vkCmdDrawIndexedIndirect;
6667 stream->write(&opcode_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
6668 stream->write(&packetSize_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006669 uint64_t cgen_var_539;
6670 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_539, 1);
6671 stream->write((uint64_t*)&cgen_var_539, 1 * 8);
6672 uint64_t cgen_var_540;
6673 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_540, 1);
6674 stream->write((uint64_t*)&cgen_var_540, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006675 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6676 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6677 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006678}
6679
6680void VkEncoder::vkCmdDispatch(
6681 VkCommandBuffer commandBuffer,
6682 uint32_t groupCountX,
6683 uint32_t groupCountY,
6684 uint32_t groupCountZ)
6685{
6686 auto stream = mImpl->stream();
6687 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006688 auto resources = mImpl->resources();
6689 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006690 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006691 VkCommandBuffer local_commandBuffer;
6692 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006693 uint32_t local_groupCountX;
6694 local_groupCountX = groupCountX;
6695 uint32_t local_groupCountY;
6696 local_groupCountY = groupCountY;
6697 uint32_t local_groupCountZ;
6698 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006699 countingStream->rewind();
6700 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006701 uint64_t cgen_var_541;
6702 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_541, 1);
6703 countingStream->write((uint64_t*)&cgen_var_541, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006704 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
6705 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
6706 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006707 }
6708 uint32_t packetSize_vkCmdDispatch = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6709 countingStream->rewind();
6710 uint32_t opcode_vkCmdDispatch = OP_vkCmdDispatch;
6711 stream->write(&opcode_vkCmdDispatch, sizeof(uint32_t));
6712 stream->write(&packetSize_vkCmdDispatch, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006713 uint64_t cgen_var_542;
6714 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_542, 1);
6715 stream->write((uint64_t*)&cgen_var_542, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006716 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
6717 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
6718 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006719}
6720
6721void VkEncoder::vkCmdDispatchIndirect(
6722 VkCommandBuffer commandBuffer,
6723 VkBuffer buffer,
6724 VkDeviceSize offset)
6725{
6726 auto stream = mImpl->stream();
6727 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006728 auto resources = mImpl->resources();
6729 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006730 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006731 VkCommandBuffer local_commandBuffer;
6732 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006733 VkBuffer local_buffer;
6734 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006735 VkDeviceSize local_offset;
6736 local_offset = offset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006737 countingStream->rewind();
6738 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006739 uint64_t cgen_var_543;
6740 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_543, 1);
6741 countingStream->write((uint64_t*)&cgen_var_543, 1 * 8);
6742 uint64_t cgen_var_544;
6743 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_544, 1);
6744 countingStream->write((uint64_t*)&cgen_var_544, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006745 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006746 }
6747 uint32_t packetSize_vkCmdDispatchIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6748 countingStream->rewind();
6749 uint32_t opcode_vkCmdDispatchIndirect = OP_vkCmdDispatchIndirect;
6750 stream->write(&opcode_vkCmdDispatchIndirect, sizeof(uint32_t));
6751 stream->write(&packetSize_vkCmdDispatchIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006752 uint64_t cgen_var_545;
6753 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_545, 1);
6754 stream->write((uint64_t*)&cgen_var_545, 1 * 8);
6755 uint64_t cgen_var_546;
6756 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_546, 1);
6757 stream->write((uint64_t*)&cgen_var_546, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006758 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006759}
6760
6761void VkEncoder::vkCmdCopyBuffer(
6762 VkCommandBuffer commandBuffer,
6763 VkBuffer srcBuffer,
6764 VkBuffer dstBuffer,
6765 uint32_t regionCount,
6766 const VkBufferCopy* pRegions)
6767{
6768 auto stream = mImpl->stream();
6769 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006770 auto resources = mImpl->resources();
6771 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006772 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006773 VkCommandBuffer local_commandBuffer;
6774 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006775 VkBuffer local_srcBuffer;
6776 local_srcBuffer = srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006777 VkBuffer local_dstBuffer;
6778 local_dstBuffer = dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006779 uint32_t local_regionCount;
6780 local_regionCount = regionCount;
6781 VkBufferCopy* local_pRegions;
6782 local_pRegions = nullptr;
6783 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006784 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006785 local_pRegions = (VkBufferCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006786 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6787 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006788 deepcopy_VkBufferCopy(pool, pRegions + i, (VkBufferCopy*)(local_pRegions + i));
6789 }
6790 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006791 countingStream->rewind();
6792 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006793 uint64_t cgen_var_547;
6794 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_547, 1);
6795 countingStream->write((uint64_t*)&cgen_var_547, 1 * 8);
6796 uint64_t cgen_var_548;
6797 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_548, 1);
6798 countingStream->write((uint64_t*)&cgen_var_548, 1 * 8);
6799 uint64_t cgen_var_549;
6800 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_549, 1);
6801 countingStream->write((uint64_t*)&cgen_var_549, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006802 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
6803 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6804 {
6805 marshal_VkBufferCopy(countingStream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006806 }
6807 }
6808 uint32_t packetSize_vkCmdCopyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6809 countingStream->rewind();
6810 uint32_t opcode_vkCmdCopyBuffer = OP_vkCmdCopyBuffer;
6811 stream->write(&opcode_vkCmdCopyBuffer, sizeof(uint32_t));
6812 stream->write(&packetSize_vkCmdCopyBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006813 uint64_t cgen_var_550;
6814 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_550, 1);
6815 stream->write((uint64_t*)&cgen_var_550, 1 * 8);
6816 uint64_t cgen_var_551;
6817 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_551, 1);
6818 stream->write((uint64_t*)&cgen_var_551, 1 * 8);
6819 uint64_t cgen_var_552;
6820 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_552, 1);
6821 stream->write((uint64_t*)&cgen_var_552, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006822 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006823 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6824 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006825 marshal_VkBufferCopy(stream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006826 }
6827}
6828
6829void VkEncoder::vkCmdCopyImage(
6830 VkCommandBuffer commandBuffer,
6831 VkImage srcImage,
6832 VkImageLayout srcImageLayout,
6833 VkImage dstImage,
6834 VkImageLayout dstImageLayout,
6835 uint32_t regionCount,
6836 const VkImageCopy* pRegions)
6837{
6838 auto stream = mImpl->stream();
6839 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006840 auto resources = mImpl->resources();
6841 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006842 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006843 VkCommandBuffer local_commandBuffer;
6844 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006845 VkImage local_srcImage;
6846 local_srcImage = srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006847 VkImageLayout local_srcImageLayout;
6848 local_srcImageLayout = srcImageLayout;
6849 VkImage local_dstImage;
6850 local_dstImage = dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006851 VkImageLayout local_dstImageLayout;
6852 local_dstImageLayout = dstImageLayout;
6853 uint32_t local_regionCount;
6854 local_regionCount = regionCount;
6855 VkImageCopy* local_pRegions;
6856 local_pRegions = nullptr;
6857 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006858 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006859 local_pRegions = (VkImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006860 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6861 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006862 deepcopy_VkImageCopy(pool, pRegions + i, (VkImageCopy*)(local_pRegions + i));
6863 }
6864 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006865 countingStream->rewind();
6866 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006867 uint64_t cgen_var_553;
6868 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_553, 1);
6869 countingStream->write((uint64_t*)&cgen_var_553, 1 * 8);
6870 uint64_t cgen_var_554;
6871 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_554, 1);
6872 countingStream->write((uint64_t*)&cgen_var_554, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006873 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006874 uint64_t cgen_var_555;
6875 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_555, 1);
6876 countingStream->write((uint64_t*)&cgen_var_555, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006877 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6878 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
6879 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6880 {
6881 marshal_VkImageCopy(countingStream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006882 }
6883 }
6884 uint32_t packetSize_vkCmdCopyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6885 countingStream->rewind();
6886 uint32_t opcode_vkCmdCopyImage = OP_vkCmdCopyImage;
6887 stream->write(&opcode_vkCmdCopyImage, sizeof(uint32_t));
6888 stream->write(&packetSize_vkCmdCopyImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006889 uint64_t cgen_var_556;
6890 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_556, 1);
6891 stream->write((uint64_t*)&cgen_var_556, 1 * 8);
6892 uint64_t cgen_var_557;
6893 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_557, 1);
6894 stream->write((uint64_t*)&cgen_var_557, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006895 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006896 uint64_t cgen_var_558;
6897 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_558, 1);
6898 stream->write((uint64_t*)&cgen_var_558, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006899 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6900 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006901 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6902 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006903 marshal_VkImageCopy(stream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006904 }
6905}
6906
6907void VkEncoder::vkCmdBlitImage(
6908 VkCommandBuffer commandBuffer,
6909 VkImage srcImage,
6910 VkImageLayout srcImageLayout,
6911 VkImage dstImage,
6912 VkImageLayout dstImageLayout,
6913 uint32_t regionCount,
6914 const VkImageBlit* pRegions,
6915 VkFilter filter)
6916{
6917 auto stream = mImpl->stream();
6918 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006919 auto resources = mImpl->resources();
6920 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006921 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006922 VkCommandBuffer local_commandBuffer;
6923 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006924 VkImage local_srcImage;
6925 local_srcImage = srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006926 VkImageLayout local_srcImageLayout;
6927 local_srcImageLayout = srcImageLayout;
6928 VkImage local_dstImage;
6929 local_dstImage = dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006930 VkImageLayout local_dstImageLayout;
6931 local_dstImageLayout = dstImageLayout;
6932 uint32_t local_regionCount;
6933 local_regionCount = regionCount;
6934 VkImageBlit* local_pRegions;
6935 local_pRegions = nullptr;
6936 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006937 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006938 local_pRegions = (VkImageBlit*)pool->alloc(((regionCount)) * sizeof(const VkImageBlit));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006939 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6940 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006941 deepcopy_VkImageBlit(pool, pRegions + i, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006942 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006943 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006944 VkFilter local_filter;
6945 local_filter = filter;
6946 countingStream->rewind();
6947 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006948 uint64_t cgen_var_559;
6949 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_559, 1);
6950 countingStream->write((uint64_t*)&cgen_var_559, 1 * 8);
6951 uint64_t cgen_var_560;
6952 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_560, 1);
6953 countingStream->write((uint64_t*)&cgen_var_560, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006954 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006955 uint64_t cgen_var_561;
6956 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_561, 1);
6957 countingStream->write((uint64_t*)&cgen_var_561, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006958 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6959 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
6960 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6961 {
6962 marshal_VkImageBlit(countingStream, (VkImageBlit*)(local_pRegions + i));
6963 }
6964 countingStream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006965 }
6966 uint32_t packetSize_vkCmdBlitImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6967 countingStream->rewind();
6968 uint32_t opcode_vkCmdBlitImage = OP_vkCmdBlitImage;
6969 stream->write(&opcode_vkCmdBlitImage, sizeof(uint32_t));
6970 stream->write(&packetSize_vkCmdBlitImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006971 uint64_t cgen_var_562;
6972 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_562, 1);
6973 stream->write((uint64_t*)&cgen_var_562, 1 * 8);
6974 uint64_t cgen_var_563;
6975 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_563, 1);
6976 stream->write((uint64_t*)&cgen_var_563, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006977 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006978 uint64_t cgen_var_564;
6979 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_564, 1);
6980 stream->write((uint64_t*)&cgen_var_564, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006981 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6982 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006983 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6984 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006985 marshal_VkImageBlit(stream, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006986 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006987 stream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006988}
6989
6990void VkEncoder::vkCmdCopyBufferToImage(
6991 VkCommandBuffer commandBuffer,
6992 VkBuffer srcBuffer,
6993 VkImage dstImage,
6994 VkImageLayout dstImageLayout,
6995 uint32_t regionCount,
6996 const VkBufferImageCopy* pRegions)
6997{
6998 auto stream = mImpl->stream();
6999 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007000 auto resources = mImpl->resources();
7001 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007002 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007003 VkCommandBuffer local_commandBuffer;
7004 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007005 VkBuffer local_srcBuffer;
7006 local_srcBuffer = srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007007 VkImage local_dstImage;
7008 local_dstImage = dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007009 VkImageLayout local_dstImageLayout;
7010 local_dstImageLayout = dstImageLayout;
7011 uint32_t local_regionCount;
7012 local_regionCount = regionCount;
7013 VkBufferImageCopy* local_pRegions;
7014 local_pRegions = nullptr;
7015 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007016 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007017 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007018 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7019 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007020 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
7021 }
7022 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007023 countingStream->rewind();
7024 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007025 uint64_t cgen_var_565;
7026 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_565, 1);
7027 countingStream->write((uint64_t*)&cgen_var_565, 1 * 8);
7028 uint64_t cgen_var_566;
7029 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_566, 1);
7030 countingStream->write((uint64_t*)&cgen_var_566, 1 * 8);
7031 uint64_t cgen_var_567;
7032 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_567, 1);
7033 countingStream->write((uint64_t*)&cgen_var_567, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007034 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7035 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7036 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7037 {
7038 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007039 }
7040 }
7041 uint32_t packetSize_vkCmdCopyBufferToImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7042 countingStream->rewind();
7043 uint32_t opcode_vkCmdCopyBufferToImage = OP_vkCmdCopyBufferToImage;
7044 stream->write(&opcode_vkCmdCopyBufferToImage, sizeof(uint32_t));
7045 stream->write(&packetSize_vkCmdCopyBufferToImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007046 uint64_t cgen_var_568;
7047 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_568, 1);
7048 stream->write((uint64_t*)&cgen_var_568, 1 * 8);
7049 uint64_t cgen_var_569;
7050 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_569, 1);
7051 stream->write((uint64_t*)&cgen_var_569, 1 * 8);
7052 uint64_t cgen_var_570;
7053 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_570, 1);
7054 stream->write((uint64_t*)&cgen_var_570, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007055 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7056 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007057 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7058 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007059 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007060 }
7061}
7062
7063void VkEncoder::vkCmdCopyImageToBuffer(
7064 VkCommandBuffer commandBuffer,
7065 VkImage srcImage,
7066 VkImageLayout srcImageLayout,
7067 VkBuffer dstBuffer,
7068 uint32_t regionCount,
7069 const VkBufferImageCopy* pRegions)
7070{
7071 auto stream = mImpl->stream();
7072 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007073 auto resources = mImpl->resources();
7074 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007075 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007076 VkCommandBuffer local_commandBuffer;
7077 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007078 VkImage local_srcImage;
7079 local_srcImage = srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007080 VkImageLayout local_srcImageLayout;
7081 local_srcImageLayout = srcImageLayout;
7082 VkBuffer local_dstBuffer;
7083 local_dstBuffer = dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007084 uint32_t local_regionCount;
7085 local_regionCount = regionCount;
7086 VkBufferImageCopy* local_pRegions;
7087 local_pRegions = nullptr;
7088 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007089 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007090 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007091 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7092 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007093 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
7094 }
7095 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007096 countingStream->rewind();
7097 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007098 uint64_t cgen_var_571;
7099 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_571, 1);
7100 countingStream->write((uint64_t*)&cgen_var_571, 1 * 8);
7101 uint64_t cgen_var_572;
7102 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_572, 1);
7103 countingStream->write((uint64_t*)&cgen_var_572, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007104 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007105 uint64_t cgen_var_573;
7106 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_573, 1);
7107 countingStream->write((uint64_t*)&cgen_var_573, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007108 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7109 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7110 {
7111 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007112 }
7113 }
7114 uint32_t packetSize_vkCmdCopyImageToBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7115 countingStream->rewind();
7116 uint32_t opcode_vkCmdCopyImageToBuffer = OP_vkCmdCopyImageToBuffer;
7117 stream->write(&opcode_vkCmdCopyImageToBuffer, sizeof(uint32_t));
7118 stream->write(&packetSize_vkCmdCopyImageToBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007119 uint64_t cgen_var_574;
7120 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_574, 1);
7121 stream->write((uint64_t*)&cgen_var_574, 1 * 8);
7122 uint64_t cgen_var_575;
7123 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_575, 1);
7124 stream->write((uint64_t*)&cgen_var_575, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007125 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007126 uint64_t cgen_var_576;
7127 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_576, 1);
7128 stream->write((uint64_t*)&cgen_var_576, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007129 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007130 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7131 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007132 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007133 }
7134}
7135
7136void VkEncoder::vkCmdUpdateBuffer(
7137 VkCommandBuffer commandBuffer,
7138 VkBuffer dstBuffer,
7139 VkDeviceSize dstOffset,
7140 VkDeviceSize dataSize,
7141 const void* pData)
7142{
7143 auto stream = mImpl->stream();
7144 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007145 auto resources = mImpl->resources();
7146 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007147 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007148 VkCommandBuffer local_commandBuffer;
7149 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007150 VkBuffer local_dstBuffer;
7151 local_dstBuffer = dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007152 VkDeviceSize local_dstOffset;
7153 local_dstOffset = dstOffset;
7154 VkDeviceSize local_dataSize;
7155 local_dataSize = dataSize;
7156 void* local_pData;
7157 local_pData = nullptr;
7158 if (pData)
7159 {
7160 local_pData = (void*)pool->dupArray(pData, ((dataSize)) * sizeof(const uint8_t));
7161 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007162 countingStream->rewind();
7163 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007164 uint64_t cgen_var_577;
7165 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_577, 1);
7166 countingStream->write((uint64_t*)&cgen_var_577, 1 * 8);
7167 uint64_t cgen_var_578;
7168 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_578, 1);
7169 countingStream->write((uint64_t*)&cgen_var_578, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007170 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7171 countingStream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
7172 countingStream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007173 }
7174 uint32_t packetSize_vkCmdUpdateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7175 countingStream->rewind();
7176 uint32_t opcode_vkCmdUpdateBuffer = OP_vkCmdUpdateBuffer;
7177 stream->write(&opcode_vkCmdUpdateBuffer, sizeof(uint32_t));
7178 stream->write(&packetSize_vkCmdUpdateBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007179 uint64_t cgen_var_579;
7180 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_579, 1);
7181 stream->write((uint64_t*)&cgen_var_579, 1 * 8);
7182 uint64_t cgen_var_580;
7183 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_580, 1);
7184 stream->write((uint64_t*)&cgen_var_580, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007185 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7186 stream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
7187 stream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007188}
7189
7190void VkEncoder::vkCmdFillBuffer(
7191 VkCommandBuffer commandBuffer,
7192 VkBuffer dstBuffer,
7193 VkDeviceSize dstOffset,
7194 VkDeviceSize size,
7195 uint32_t data)
7196{
7197 auto stream = mImpl->stream();
7198 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007199 auto resources = mImpl->resources();
7200 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007201 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007202 VkCommandBuffer local_commandBuffer;
7203 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007204 VkBuffer local_dstBuffer;
7205 local_dstBuffer = dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007206 VkDeviceSize local_dstOffset;
7207 local_dstOffset = dstOffset;
7208 VkDeviceSize local_size;
7209 local_size = size;
7210 uint32_t local_data;
7211 local_data = data;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007212 countingStream->rewind();
7213 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007214 uint64_t cgen_var_581;
7215 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_581, 1);
7216 countingStream->write((uint64_t*)&cgen_var_581, 1 * 8);
7217 uint64_t cgen_var_582;
7218 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_582, 1);
7219 countingStream->write((uint64_t*)&cgen_var_582, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007220 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7221 countingStream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
7222 countingStream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007223 }
7224 uint32_t packetSize_vkCmdFillBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7225 countingStream->rewind();
7226 uint32_t opcode_vkCmdFillBuffer = OP_vkCmdFillBuffer;
7227 stream->write(&opcode_vkCmdFillBuffer, sizeof(uint32_t));
7228 stream->write(&packetSize_vkCmdFillBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007229 uint64_t cgen_var_583;
7230 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_583, 1);
7231 stream->write((uint64_t*)&cgen_var_583, 1 * 8);
7232 uint64_t cgen_var_584;
7233 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_584, 1);
7234 stream->write((uint64_t*)&cgen_var_584, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007235 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7236 stream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
7237 stream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007238}
7239
7240void VkEncoder::vkCmdClearColorImage(
7241 VkCommandBuffer commandBuffer,
7242 VkImage image,
7243 VkImageLayout imageLayout,
7244 const VkClearColorValue* pColor,
7245 uint32_t rangeCount,
7246 const VkImageSubresourceRange* pRanges)
7247{
7248 auto stream = mImpl->stream();
7249 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007250 auto resources = mImpl->resources();
7251 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007252 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007253 VkCommandBuffer local_commandBuffer;
7254 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007255 VkImage local_image;
7256 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007257 VkImageLayout local_imageLayout;
7258 local_imageLayout = imageLayout;
7259 VkClearColorValue* local_pColor;
7260 local_pColor = nullptr;
7261 if (pColor)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007262 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007263 local_pColor = (VkClearColorValue*)pool->alloc(sizeof(const VkClearColorValue));
7264 deepcopy_VkClearColorValue(pool, pColor, (VkClearColorValue*)(local_pColor));
7265 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007266 uint32_t local_rangeCount;
7267 local_rangeCount = rangeCount;
7268 VkImageSubresourceRange* local_pRanges;
7269 local_pRanges = nullptr;
7270 if (pRanges)
7271 {
7272 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007273 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7274 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007275 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
7276 }
7277 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007278 countingStream->rewind();
7279 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007280 uint64_t cgen_var_585;
7281 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_585, 1);
7282 countingStream->write((uint64_t*)&cgen_var_585, 1 * 8);
7283 uint64_t cgen_var_586;
7284 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_586, 1);
7285 countingStream->write((uint64_t*)&cgen_var_586, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007286 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7287 marshal_VkClearColorValue(countingStream, (VkClearColorValue*)(local_pColor));
7288 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
7289 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7290 {
7291 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007292 }
7293 }
7294 uint32_t packetSize_vkCmdClearColorImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7295 countingStream->rewind();
7296 uint32_t opcode_vkCmdClearColorImage = OP_vkCmdClearColorImage;
7297 stream->write(&opcode_vkCmdClearColorImage, sizeof(uint32_t));
7298 stream->write(&packetSize_vkCmdClearColorImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007299 uint64_t cgen_var_587;
7300 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_587, 1);
7301 stream->write((uint64_t*)&cgen_var_587, 1 * 8);
7302 uint64_t cgen_var_588;
7303 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_588, 1);
7304 stream->write((uint64_t*)&cgen_var_588, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007305 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7306 marshal_VkClearColorValue(stream, (VkClearColorValue*)(local_pColor));
7307 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007308 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7309 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007310 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007311 }
7312}
7313
7314void VkEncoder::vkCmdClearDepthStencilImage(
7315 VkCommandBuffer commandBuffer,
7316 VkImage image,
7317 VkImageLayout imageLayout,
7318 const VkClearDepthStencilValue* pDepthStencil,
7319 uint32_t rangeCount,
7320 const VkImageSubresourceRange* pRanges)
7321{
7322 auto stream = mImpl->stream();
7323 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007324 auto resources = mImpl->resources();
7325 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007326 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007327 VkCommandBuffer local_commandBuffer;
7328 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007329 VkImage local_image;
7330 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007331 VkImageLayout local_imageLayout;
7332 local_imageLayout = imageLayout;
7333 VkClearDepthStencilValue* local_pDepthStencil;
7334 local_pDepthStencil = nullptr;
7335 if (pDepthStencil)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007336 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007337 local_pDepthStencil = (VkClearDepthStencilValue*)pool->alloc(sizeof(const VkClearDepthStencilValue));
7338 deepcopy_VkClearDepthStencilValue(pool, pDepthStencil, (VkClearDepthStencilValue*)(local_pDepthStencil));
7339 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007340 uint32_t local_rangeCount;
7341 local_rangeCount = rangeCount;
7342 VkImageSubresourceRange* local_pRanges;
7343 local_pRanges = nullptr;
7344 if (pRanges)
7345 {
7346 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007347 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7348 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007349 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
7350 }
7351 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007352 countingStream->rewind();
7353 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007354 uint64_t cgen_var_589;
7355 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_589, 1);
7356 countingStream->write((uint64_t*)&cgen_var_589, 1 * 8);
7357 uint64_t cgen_var_590;
7358 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_590, 1);
7359 countingStream->write((uint64_t*)&cgen_var_590, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007360 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7361 marshal_VkClearDepthStencilValue(countingStream, (VkClearDepthStencilValue*)(local_pDepthStencil));
7362 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
7363 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7364 {
7365 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007366 }
7367 }
7368 uint32_t packetSize_vkCmdClearDepthStencilImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7369 countingStream->rewind();
7370 uint32_t opcode_vkCmdClearDepthStencilImage = OP_vkCmdClearDepthStencilImage;
7371 stream->write(&opcode_vkCmdClearDepthStencilImage, sizeof(uint32_t));
7372 stream->write(&packetSize_vkCmdClearDepthStencilImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007373 uint64_t cgen_var_591;
7374 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_591, 1);
7375 stream->write((uint64_t*)&cgen_var_591, 1 * 8);
7376 uint64_t cgen_var_592;
7377 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_592, 1);
7378 stream->write((uint64_t*)&cgen_var_592, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007379 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7380 marshal_VkClearDepthStencilValue(stream, (VkClearDepthStencilValue*)(local_pDepthStencil));
7381 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007382 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7383 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007384 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007385 }
7386}
7387
7388void VkEncoder::vkCmdClearAttachments(
7389 VkCommandBuffer commandBuffer,
7390 uint32_t attachmentCount,
7391 const VkClearAttachment* pAttachments,
7392 uint32_t rectCount,
7393 const VkClearRect* pRects)
7394{
7395 auto stream = mImpl->stream();
7396 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007397 auto resources = mImpl->resources();
7398 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007399 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007400 VkCommandBuffer local_commandBuffer;
7401 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007402 uint32_t local_attachmentCount;
7403 local_attachmentCount = attachmentCount;
7404 VkClearAttachment* local_pAttachments;
7405 local_pAttachments = nullptr;
7406 if (pAttachments)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007407 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007408 local_pAttachments = (VkClearAttachment*)pool->alloc(((attachmentCount)) * sizeof(const VkClearAttachment));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007409 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7410 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007411 deepcopy_VkClearAttachment(pool, pAttachments + i, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007412 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007413 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007414 uint32_t local_rectCount;
7415 local_rectCount = rectCount;
7416 VkClearRect* local_pRects;
7417 local_pRects = nullptr;
7418 if (pRects)
7419 {
7420 local_pRects = (VkClearRect*)pool->alloc(((rectCount)) * sizeof(const VkClearRect));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007421 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7422 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007423 deepcopy_VkClearRect(pool, pRects + i, (VkClearRect*)(local_pRects + i));
7424 }
7425 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007426 countingStream->rewind();
7427 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007428 uint64_t cgen_var_593;
7429 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_593, 1);
7430 countingStream->write((uint64_t*)&cgen_var_593, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007431 countingStream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
7432 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7433 {
7434 marshal_VkClearAttachment(countingStream, (VkClearAttachment*)(local_pAttachments + i));
7435 }
7436 countingStream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
7437 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7438 {
7439 marshal_VkClearRect(countingStream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007440 }
7441 }
7442 uint32_t packetSize_vkCmdClearAttachments = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7443 countingStream->rewind();
7444 uint32_t opcode_vkCmdClearAttachments = OP_vkCmdClearAttachments;
7445 stream->write(&opcode_vkCmdClearAttachments, sizeof(uint32_t));
7446 stream->write(&packetSize_vkCmdClearAttachments, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007447 uint64_t cgen_var_594;
7448 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_594, 1);
7449 stream->write((uint64_t*)&cgen_var_594, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007450 stream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007451 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7452 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007453 marshal_VkClearAttachment(stream, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007454 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007455 stream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007456 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7457 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007458 marshal_VkClearRect(stream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007459 }
7460}
7461
7462void VkEncoder::vkCmdResolveImage(
7463 VkCommandBuffer commandBuffer,
7464 VkImage srcImage,
7465 VkImageLayout srcImageLayout,
7466 VkImage dstImage,
7467 VkImageLayout dstImageLayout,
7468 uint32_t regionCount,
7469 const VkImageResolve* pRegions)
7470{
7471 auto stream = mImpl->stream();
7472 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007473 auto resources = mImpl->resources();
7474 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007475 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007476 VkCommandBuffer local_commandBuffer;
7477 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007478 VkImage local_srcImage;
7479 local_srcImage = srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007480 VkImageLayout local_srcImageLayout;
7481 local_srcImageLayout = srcImageLayout;
7482 VkImage local_dstImage;
7483 local_dstImage = dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007484 VkImageLayout local_dstImageLayout;
7485 local_dstImageLayout = dstImageLayout;
7486 uint32_t local_regionCount;
7487 local_regionCount = regionCount;
7488 VkImageResolve* local_pRegions;
7489 local_pRegions = nullptr;
7490 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007491 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007492 local_pRegions = (VkImageResolve*)pool->alloc(((regionCount)) * sizeof(const VkImageResolve));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007493 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7494 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007495 deepcopy_VkImageResolve(pool, pRegions + i, (VkImageResolve*)(local_pRegions + i));
7496 }
7497 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007498 countingStream->rewind();
7499 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007500 uint64_t cgen_var_595;
7501 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_595, 1);
7502 countingStream->write((uint64_t*)&cgen_var_595, 1 * 8);
7503 uint64_t cgen_var_596;
7504 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_596, 1);
7505 countingStream->write((uint64_t*)&cgen_var_596, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007506 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007507 uint64_t cgen_var_597;
7508 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_597, 1);
7509 countingStream->write((uint64_t*)&cgen_var_597, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007510 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7511 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7512 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7513 {
7514 marshal_VkImageResolve(countingStream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007515 }
7516 }
7517 uint32_t packetSize_vkCmdResolveImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7518 countingStream->rewind();
7519 uint32_t opcode_vkCmdResolveImage = OP_vkCmdResolveImage;
7520 stream->write(&opcode_vkCmdResolveImage, sizeof(uint32_t));
7521 stream->write(&packetSize_vkCmdResolveImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007522 uint64_t cgen_var_598;
7523 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_598, 1);
7524 stream->write((uint64_t*)&cgen_var_598, 1 * 8);
7525 uint64_t cgen_var_599;
7526 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_599, 1);
7527 stream->write((uint64_t*)&cgen_var_599, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007528 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007529 uint64_t cgen_var_600;
7530 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_600, 1);
7531 stream->write((uint64_t*)&cgen_var_600, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007532 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7533 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007534 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7535 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007536 marshal_VkImageResolve(stream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007537 }
7538}
7539
7540void VkEncoder::vkCmdSetEvent(
7541 VkCommandBuffer commandBuffer,
7542 VkEvent event,
7543 VkPipelineStageFlags stageMask)
7544{
7545 auto stream = mImpl->stream();
7546 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007547 auto resources = mImpl->resources();
7548 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007549 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007550 VkCommandBuffer local_commandBuffer;
7551 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007552 VkEvent local_event;
7553 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007554 VkPipelineStageFlags local_stageMask;
7555 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007556 countingStream->rewind();
7557 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007558 uint64_t cgen_var_601;
7559 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_601, 1);
7560 countingStream->write((uint64_t*)&cgen_var_601, 1 * 8);
7561 uint64_t cgen_var_602;
7562 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_602, 1);
7563 countingStream->write((uint64_t*)&cgen_var_602, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007564 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007565 }
7566 uint32_t packetSize_vkCmdSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7567 countingStream->rewind();
7568 uint32_t opcode_vkCmdSetEvent = OP_vkCmdSetEvent;
7569 stream->write(&opcode_vkCmdSetEvent, sizeof(uint32_t));
7570 stream->write(&packetSize_vkCmdSetEvent, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007571 uint64_t cgen_var_603;
7572 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_603, 1);
7573 stream->write((uint64_t*)&cgen_var_603, 1 * 8);
7574 uint64_t cgen_var_604;
7575 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_604, 1);
7576 stream->write((uint64_t*)&cgen_var_604, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007577 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007578}
7579
7580void VkEncoder::vkCmdResetEvent(
7581 VkCommandBuffer commandBuffer,
7582 VkEvent event,
7583 VkPipelineStageFlags stageMask)
7584{
7585 auto stream = mImpl->stream();
7586 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007587 auto resources = mImpl->resources();
7588 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007589 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007590 VkCommandBuffer local_commandBuffer;
7591 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007592 VkEvent local_event;
7593 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007594 VkPipelineStageFlags local_stageMask;
7595 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007596 countingStream->rewind();
7597 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007598 uint64_t cgen_var_605;
7599 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_605, 1);
7600 countingStream->write((uint64_t*)&cgen_var_605, 1 * 8);
7601 uint64_t cgen_var_606;
7602 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_606, 1);
7603 countingStream->write((uint64_t*)&cgen_var_606, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007604 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007605 }
7606 uint32_t packetSize_vkCmdResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7607 countingStream->rewind();
7608 uint32_t opcode_vkCmdResetEvent = OP_vkCmdResetEvent;
7609 stream->write(&opcode_vkCmdResetEvent, sizeof(uint32_t));
7610 stream->write(&packetSize_vkCmdResetEvent, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007611 uint64_t cgen_var_607;
7612 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_607, 1);
7613 stream->write((uint64_t*)&cgen_var_607, 1 * 8);
7614 uint64_t cgen_var_608;
7615 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_608, 1);
7616 stream->write((uint64_t*)&cgen_var_608, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007617 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007618}
7619
7620void VkEncoder::vkCmdWaitEvents(
7621 VkCommandBuffer commandBuffer,
7622 uint32_t eventCount,
7623 const VkEvent* pEvents,
7624 VkPipelineStageFlags srcStageMask,
7625 VkPipelineStageFlags dstStageMask,
7626 uint32_t memoryBarrierCount,
7627 const VkMemoryBarrier* pMemoryBarriers,
7628 uint32_t bufferMemoryBarrierCount,
7629 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
7630 uint32_t imageMemoryBarrierCount,
7631 const VkImageMemoryBarrier* pImageMemoryBarriers)
7632{
7633 auto stream = mImpl->stream();
7634 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007635 auto resources = mImpl->resources();
7636 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007637 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007638 VkCommandBuffer local_commandBuffer;
7639 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007640 uint32_t local_eventCount;
7641 local_eventCount = eventCount;
7642 VkEvent* local_pEvents;
7643 local_pEvents = nullptr;
7644 if (pEvents)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007645 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007646 local_pEvents = (VkEvent*)pool->dupArray(pEvents, ((eventCount)) * sizeof(const VkEvent));
7647 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007648 VkPipelineStageFlags local_srcStageMask;
7649 local_srcStageMask = srcStageMask;
7650 VkPipelineStageFlags local_dstStageMask;
7651 local_dstStageMask = dstStageMask;
7652 uint32_t local_memoryBarrierCount;
7653 local_memoryBarrierCount = memoryBarrierCount;
7654 VkMemoryBarrier* local_pMemoryBarriers;
7655 local_pMemoryBarriers = nullptr;
7656 if (pMemoryBarriers)
7657 {
7658 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007659 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7660 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007661 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007662 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007663 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007664 uint32_t local_bufferMemoryBarrierCount;
7665 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
7666 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
7667 local_pBufferMemoryBarriers = nullptr;
7668 if (pBufferMemoryBarriers)
7669 {
7670 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007671 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7672 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007673 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007674 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007675 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007676 uint32_t local_imageMemoryBarrierCount;
7677 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
7678 VkImageMemoryBarrier* local_pImageMemoryBarriers;
7679 local_pImageMemoryBarriers = nullptr;
7680 if (pImageMemoryBarriers)
7681 {
7682 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007683 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7684 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007685 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
7686 }
7687 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007688 countingStream->rewind();
7689 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007690 uint64_t cgen_var_609;
7691 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_609, 1);
7692 countingStream->write((uint64_t*)&cgen_var_609, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007693 countingStream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007694 if (((eventCount)))
7695 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007696 uint64_t* cgen_var_610;
7697 countingStream->alloc((void**)&cgen_var_610, ((eventCount)) * 8);
7698 countingStream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_610, ((eventCount)));
7699 countingStream->write((uint64_t*)cgen_var_610, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007700 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007701 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7702 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7703 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
7704 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7705 {
7706 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
7707 }
7708 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
7709 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7710 {
7711 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
7712 }
7713 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
7714 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7715 {
7716 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007717 }
7718 }
7719 uint32_t packetSize_vkCmdWaitEvents = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7720 countingStream->rewind();
7721 uint32_t opcode_vkCmdWaitEvents = OP_vkCmdWaitEvents;
7722 stream->write(&opcode_vkCmdWaitEvents, sizeof(uint32_t));
7723 stream->write(&packetSize_vkCmdWaitEvents, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007724 uint64_t cgen_var_611;
7725 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_611, 1);
7726 stream->write((uint64_t*)&cgen_var_611, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007727 stream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007728 if (((eventCount)))
7729 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007730 uint64_t* cgen_var_612;
7731 stream->alloc((void**)&cgen_var_612, ((eventCount)) * 8);
7732 stream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_612, ((eventCount)));
7733 stream->write((uint64_t*)cgen_var_612, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007734 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007735 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7736 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7737 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007738 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7739 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007740 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007741 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007742 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007743 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7744 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007745 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007746 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007747 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007748 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7749 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007750 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007751 }
7752}
7753
7754void VkEncoder::vkCmdPipelineBarrier(
7755 VkCommandBuffer commandBuffer,
7756 VkPipelineStageFlags srcStageMask,
7757 VkPipelineStageFlags dstStageMask,
7758 VkDependencyFlags dependencyFlags,
7759 uint32_t memoryBarrierCount,
7760 const VkMemoryBarrier* pMemoryBarriers,
7761 uint32_t bufferMemoryBarrierCount,
7762 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
7763 uint32_t imageMemoryBarrierCount,
7764 const VkImageMemoryBarrier* pImageMemoryBarriers)
7765{
7766 auto stream = mImpl->stream();
7767 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007768 auto resources = mImpl->resources();
7769 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007770 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007771 VkCommandBuffer local_commandBuffer;
7772 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007773 VkPipelineStageFlags local_srcStageMask;
7774 local_srcStageMask = srcStageMask;
7775 VkPipelineStageFlags local_dstStageMask;
7776 local_dstStageMask = dstStageMask;
7777 VkDependencyFlags local_dependencyFlags;
7778 local_dependencyFlags = dependencyFlags;
7779 uint32_t local_memoryBarrierCount;
7780 local_memoryBarrierCount = memoryBarrierCount;
7781 VkMemoryBarrier* local_pMemoryBarriers;
7782 local_pMemoryBarriers = nullptr;
7783 if (pMemoryBarriers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007784 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007785 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007786 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7787 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007788 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007789 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007790 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007791 uint32_t local_bufferMemoryBarrierCount;
7792 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
7793 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
7794 local_pBufferMemoryBarriers = nullptr;
7795 if (pBufferMemoryBarriers)
7796 {
7797 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007798 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7799 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007800 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007801 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007802 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007803 uint32_t local_imageMemoryBarrierCount;
7804 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
7805 VkImageMemoryBarrier* local_pImageMemoryBarriers;
7806 local_pImageMemoryBarriers = nullptr;
7807 if (pImageMemoryBarriers)
7808 {
7809 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007810 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7811 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007812 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
7813 }
7814 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007815 countingStream->rewind();
7816 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007817 uint64_t cgen_var_613;
7818 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_613, 1);
7819 countingStream->write((uint64_t*)&cgen_var_613, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007820 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7821 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7822 countingStream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
7823 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
7824 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7825 {
7826 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
7827 }
7828 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
7829 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7830 {
7831 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
7832 }
7833 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
7834 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7835 {
7836 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007837 }
7838 }
7839 uint32_t packetSize_vkCmdPipelineBarrier = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7840 countingStream->rewind();
7841 uint32_t opcode_vkCmdPipelineBarrier = OP_vkCmdPipelineBarrier;
7842 stream->write(&opcode_vkCmdPipelineBarrier, sizeof(uint32_t));
7843 stream->write(&packetSize_vkCmdPipelineBarrier, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007844 uint64_t cgen_var_614;
7845 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_614, 1);
7846 stream->write((uint64_t*)&cgen_var_614, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007847 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7848 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7849 stream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
7850 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007851 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7852 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007853 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007854 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007855 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007856 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7857 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007858 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007859 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007860 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007861 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7862 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007863 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007864 }
7865}
7866
7867void VkEncoder::vkCmdBeginQuery(
7868 VkCommandBuffer commandBuffer,
7869 VkQueryPool queryPool,
7870 uint32_t query,
7871 VkQueryControlFlags flags)
7872{
7873 auto stream = mImpl->stream();
7874 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007875 auto resources = mImpl->resources();
7876 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007877 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007878 VkCommandBuffer local_commandBuffer;
7879 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007880 VkQueryPool local_queryPool;
7881 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007882 uint32_t local_query;
7883 local_query = query;
7884 VkQueryControlFlags local_flags;
7885 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007886 countingStream->rewind();
7887 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007888 uint64_t cgen_var_615;
7889 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_615, 1);
7890 countingStream->write((uint64_t*)&cgen_var_615, 1 * 8);
7891 uint64_t cgen_var_616;
7892 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_616, 1);
7893 countingStream->write((uint64_t*)&cgen_var_616, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007894 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
7895 countingStream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007896 }
7897 uint32_t packetSize_vkCmdBeginQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7898 countingStream->rewind();
7899 uint32_t opcode_vkCmdBeginQuery = OP_vkCmdBeginQuery;
7900 stream->write(&opcode_vkCmdBeginQuery, sizeof(uint32_t));
7901 stream->write(&packetSize_vkCmdBeginQuery, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007902 uint64_t cgen_var_617;
7903 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_617, 1);
7904 stream->write((uint64_t*)&cgen_var_617, 1 * 8);
7905 uint64_t cgen_var_618;
7906 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_618, 1);
7907 stream->write((uint64_t*)&cgen_var_618, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007908 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
7909 stream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007910}
7911
7912void VkEncoder::vkCmdEndQuery(
7913 VkCommandBuffer commandBuffer,
7914 VkQueryPool queryPool,
7915 uint32_t query)
7916{
7917 auto stream = mImpl->stream();
7918 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007919 auto resources = mImpl->resources();
7920 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007921 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007922 VkCommandBuffer local_commandBuffer;
7923 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007924 VkQueryPool local_queryPool;
7925 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007926 uint32_t local_query;
7927 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007928 countingStream->rewind();
7929 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007930 uint64_t cgen_var_619;
7931 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_619, 1);
7932 countingStream->write((uint64_t*)&cgen_var_619, 1 * 8);
7933 uint64_t cgen_var_620;
7934 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_620, 1);
7935 countingStream->write((uint64_t*)&cgen_var_620, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007936 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007937 }
7938 uint32_t packetSize_vkCmdEndQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7939 countingStream->rewind();
7940 uint32_t opcode_vkCmdEndQuery = OP_vkCmdEndQuery;
7941 stream->write(&opcode_vkCmdEndQuery, sizeof(uint32_t));
7942 stream->write(&packetSize_vkCmdEndQuery, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007943 uint64_t cgen_var_621;
7944 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_621, 1);
7945 stream->write((uint64_t*)&cgen_var_621, 1 * 8);
7946 uint64_t cgen_var_622;
7947 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_622, 1);
7948 stream->write((uint64_t*)&cgen_var_622, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007949 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007950}
7951
7952void VkEncoder::vkCmdResetQueryPool(
7953 VkCommandBuffer commandBuffer,
7954 VkQueryPool queryPool,
7955 uint32_t firstQuery,
7956 uint32_t queryCount)
7957{
7958 auto stream = mImpl->stream();
7959 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007960 auto resources = mImpl->resources();
7961 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007962 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007963 VkCommandBuffer local_commandBuffer;
7964 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007965 VkQueryPool local_queryPool;
7966 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007967 uint32_t local_firstQuery;
7968 local_firstQuery = firstQuery;
7969 uint32_t local_queryCount;
7970 local_queryCount = queryCount;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007971 countingStream->rewind();
7972 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007973 uint64_t cgen_var_623;
7974 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_623, 1);
7975 countingStream->write((uint64_t*)&cgen_var_623, 1 * 8);
7976 uint64_t cgen_var_624;
7977 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_624, 1);
7978 countingStream->write((uint64_t*)&cgen_var_624, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007979 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
7980 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007981 }
7982 uint32_t packetSize_vkCmdResetQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7983 countingStream->rewind();
7984 uint32_t opcode_vkCmdResetQueryPool = OP_vkCmdResetQueryPool;
7985 stream->write(&opcode_vkCmdResetQueryPool, sizeof(uint32_t));
7986 stream->write(&packetSize_vkCmdResetQueryPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007987 uint64_t cgen_var_625;
7988 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_625, 1);
7989 stream->write((uint64_t*)&cgen_var_625, 1 * 8);
7990 uint64_t cgen_var_626;
7991 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_626, 1);
7992 stream->write((uint64_t*)&cgen_var_626, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007993 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
7994 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007995}
7996
7997void VkEncoder::vkCmdWriteTimestamp(
7998 VkCommandBuffer commandBuffer,
7999 VkPipelineStageFlagBits pipelineStage,
8000 VkQueryPool queryPool,
8001 uint32_t query)
8002{
8003 auto stream = mImpl->stream();
8004 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008005 auto resources = mImpl->resources();
8006 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008007 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008008 VkCommandBuffer local_commandBuffer;
8009 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008010 VkPipelineStageFlagBits local_pipelineStage;
8011 local_pipelineStage = pipelineStage;
8012 VkQueryPool local_queryPool;
8013 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008014 uint32_t local_query;
8015 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008016 countingStream->rewind();
8017 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008018 uint64_t cgen_var_627;
8019 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_627, 1);
8020 countingStream->write((uint64_t*)&cgen_var_627, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008021 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008022 uint64_t cgen_var_628;
8023 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_628, 1);
8024 countingStream->write((uint64_t*)&cgen_var_628, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008025 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008026 }
8027 uint32_t packetSize_vkCmdWriteTimestamp = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8028 countingStream->rewind();
8029 uint32_t opcode_vkCmdWriteTimestamp = OP_vkCmdWriteTimestamp;
8030 stream->write(&opcode_vkCmdWriteTimestamp, sizeof(uint32_t));
8031 stream->write(&packetSize_vkCmdWriteTimestamp, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008032 uint64_t cgen_var_629;
8033 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_629, 1);
8034 stream->write((uint64_t*)&cgen_var_629, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008035 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008036 uint64_t cgen_var_630;
8037 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_630, 1);
8038 stream->write((uint64_t*)&cgen_var_630, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008039 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008040}
8041
8042void VkEncoder::vkCmdCopyQueryPoolResults(
8043 VkCommandBuffer commandBuffer,
8044 VkQueryPool queryPool,
8045 uint32_t firstQuery,
8046 uint32_t queryCount,
8047 VkBuffer dstBuffer,
8048 VkDeviceSize dstOffset,
8049 VkDeviceSize stride,
8050 VkQueryResultFlags flags)
8051{
8052 auto stream = mImpl->stream();
8053 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008054 auto resources = mImpl->resources();
8055 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008056 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008057 VkCommandBuffer local_commandBuffer;
8058 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008059 VkQueryPool local_queryPool;
8060 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008061 uint32_t local_firstQuery;
8062 local_firstQuery = firstQuery;
8063 uint32_t local_queryCount;
8064 local_queryCount = queryCount;
8065 VkBuffer local_dstBuffer;
8066 local_dstBuffer = dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008067 VkDeviceSize local_dstOffset;
8068 local_dstOffset = dstOffset;
8069 VkDeviceSize local_stride;
8070 local_stride = stride;
8071 VkQueryResultFlags local_flags;
8072 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008073 countingStream->rewind();
8074 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008075 uint64_t cgen_var_631;
8076 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_631, 1);
8077 countingStream->write((uint64_t*)&cgen_var_631, 1 * 8);
8078 uint64_t cgen_var_632;
8079 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_632, 1);
8080 countingStream->write((uint64_t*)&cgen_var_632, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008081 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8082 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008083 uint64_t cgen_var_633;
8084 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_633, 1);
8085 countingStream->write((uint64_t*)&cgen_var_633, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008086 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8087 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
8088 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008089 }
8090 uint32_t packetSize_vkCmdCopyQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8091 countingStream->rewind();
8092 uint32_t opcode_vkCmdCopyQueryPoolResults = OP_vkCmdCopyQueryPoolResults;
8093 stream->write(&opcode_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
8094 stream->write(&packetSize_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008095 uint64_t cgen_var_634;
8096 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_634, 1);
8097 stream->write((uint64_t*)&cgen_var_634, 1 * 8);
8098 uint64_t cgen_var_635;
8099 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_635, 1);
8100 stream->write((uint64_t*)&cgen_var_635, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008101 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8102 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008103 uint64_t cgen_var_636;
8104 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_636, 1);
8105 stream->write((uint64_t*)&cgen_var_636, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008106 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8107 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
8108 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008109}
8110
8111void VkEncoder::vkCmdPushConstants(
8112 VkCommandBuffer commandBuffer,
8113 VkPipelineLayout layout,
8114 VkShaderStageFlags stageFlags,
8115 uint32_t offset,
8116 uint32_t size,
8117 const void* pValues)
8118{
8119 auto stream = mImpl->stream();
8120 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008121 auto resources = mImpl->resources();
8122 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008123 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008124 VkCommandBuffer local_commandBuffer;
8125 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008126 VkPipelineLayout local_layout;
8127 local_layout = layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008128 VkShaderStageFlags local_stageFlags;
8129 local_stageFlags = stageFlags;
8130 uint32_t local_offset;
8131 local_offset = offset;
8132 uint32_t local_size;
8133 local_size = size;
8134 void* local_pValues;
8135 local_pValues = nullptr;
8136 if (pValues)
8137 {
8138 local_pValues = (void*)pool->dupArray(pValues, ((size)) * sizeof(const uint8_t));
8139 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008140 countingStream->rewind();
8141 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008142 uint64_t cgen_var_637;
8143 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_637, 1);
8144 countingStream->write((uint64_t*)&cgen_var_637, 1 * 8);
8145 uint64_t cgen_var_638;
8146 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_638, 1);
8147 countingStream->write((uint64_t*)&cgen_var_638, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008148 countingStream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
8149 countingStream->write((uint32_t*)&local_offset, sizeof(uint32_t));
8150 countingStream->write((uint32_t*)&local_size, sizeof(uint32_t));
8151 countingStream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008152 }
8153 uint32_t packetSize_vkCmdPushConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8154 countingStream->rewind();
8155 uint32_t opcode_vkCmdPushConstants = OP_vkCmdPushConstants;
8156 stream->write(&opcode_vkCmdPushConstants, sizeof(uint32_t));
8157 stream->write(&packetSize_vkCmdPushConstants, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008158 uint64_t cgen_var_639;
8159 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_639, 1);
8160 stream->write((uint64_t*)&cgen_var_639, 1 * 8);
8161 uint64_t cgen_var_640;
8162 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_640, 1);
8163 stream->write((uint64_t*)&cgen_var_640, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008164 stream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
8165 stream->write((uint32_t*)&local_offset, sizeof(uint32_t));
8166 stream->write((uint32_t*)&local_size, sizeof(uint32_t));
8167 stream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008168}
8169
8170void VkEncoder::vkCmdBeginRenderPass(
8171 VkCommandBuffer commandBuffer,
8172 const VkRenderPassBeginInfo* pRenderPassBegin,
8173 VkSubpassContents contents)
8174{
8175 auto stream = mImpl->stream();
8176 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008177 auto resources = mImpl->resources();
8178 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008179 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008180 VkCommandBuffer local_commandBuffer;
8181 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008182 VkRenderPassBeginInfo* local_pRenderPassBegin;
8183 local_pRenderPassBegin = nullptr;
8184 if (pRenderPassBegin)
8185 {
8186 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
8187 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8188 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008189 VkSubpassContents local_contents;
8190 local_contents = contents;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008191 countingStream->rewind();
8192 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008193 uint64_t cgen_var_641;
8194 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_641, 1);
8195 countingStream->write((uint64_t*)&cgen_var_641, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008196 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8197 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008198 }
8199 uint32_t packetSize_vkCmdBeginRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8200 countingStream->rewind();
8201 uint32_t opcode_vkCmdBeginRenderPass = OP_vkCmdBeginRenderPass;
8202 stream->write(&opcode_vkCmdBeginRenderPass, sizeof(uint32_t));
8203 stream->write(&packetSize_vkCmdBeginRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008204 uint64_t cgen_var_642;
8205 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_642, 1);
8206 stream->write((uint64_t*)&cgen_var_642, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008207 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8208 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008209}
8210
8211void VkEncoder::vkCmdNextSubpass(
8212 VkCommandBuffer commandBuffer,
8213 VkSubpassContents contents)
8214{
8215 auto stream = mImpl->stream();
8216 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008217 auto resources = mImpl->resources();
8218 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008219 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008220 VkCommandBuffer local_commandBuffer;
8221 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008222 VkSubpassContents local_contents;
8223 local_contents = contents;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008224 countingStream->rewind();
8225 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008226 uint64_t cgen_var_643;
8227 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_643, 1);
8228 countingStream->write((uint64_t*)&cgen_var_643, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008229 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008230 }
8231 uint32_t packetSize_vkCmdNextSubpass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8232 countingStream->rewind();
8233 uint32_t opcode_vkCmdNextSubpass = OP_vkCmdNextSubpass;
8234 stream->write(&opcode_vkCmdNextSubpass, sizeof(uint32_t));
8235 stream->write(&packetSize_vkCmdNextSubpass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008236 uint64_t cgen_var_644;
8237 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_644, 1);
8238 stream->write((uint64_t*)&cgen_var_644, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008239 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008240}
8241
8242void VkEncoder::vkCmdEndRenderPass(
8243 VkCommandBuffer commandBuffer)
8244{
8245 auto stream = mImpl->stream();
8246 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008247 auto resources = mImpl->resources();
8248 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008249 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008250 VkCommandBuffer local_commandBuffer;
8251 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008252 countingStream->rewind();
8253 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008254 uint64_t cgen_var_645;
8255 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_645, 1);
8256 countingStream->write((uint64_t*)&cgen_var_645, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008257 }
8258 uint32_t packetSize_vkCmdEndRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8259 countingStream->rewind();
8260 uint32_t opcode_vkCmdEndRenderPass = OP_vkCmdEndRenderPass;
8261 stream->write(&opcode_vkCmdEndRenderPass, sizeof(uint32_t));
8262 stream->write(&packetSize_vkCmdEndRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008263 uint64_t cgen_var_646;
8264 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_646, 1);
8265 stream->write((uint64_t*)&cgen_var_646, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008266}
8267
8268void VkEncoder::vkCmdExecuteCommands(
8269 VkCommandBuffer commandBuffer,
8270 uint32_t commandBufferCount,
8271 const VkCommandBuffer* pCommandBuffers)
8272{
8273 auto stream = mImpl->stream();
8274 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008275 auto resources = mImpl->resources();
8276 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008277 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008278 VkCommandBuffer local_commandBuffer;
8279 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008280 uint32_t local_commandBufferCount;
8281 local_commandBufferCount = commandBufferCount;
8282 VkCommandBuffer* local_pCommandBuffers;
8283 local_pCommandBuffers = nullptr;
8284 if (pCommandBuffers)
8285 {
8286 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
8287 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008288 countingStream->rewind();
8289 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008290 uint64_t cgen_var_647;
8291 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_647, 1);
8292 countingStream->write((uint64_t*)&cgen_var_647, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008293 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008294 if (((commandBufferCount)))
8295 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008296 uint64_t* cgen_var_648;
8297 countingStream->alloc((void**)&cgen_var_648, ((commandBufferCount)) * 8);
8298 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_648, ((commandBufferCount)));
8299 countingStream->write((uint64_t*)cgen_var_648, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008300 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008301 }
8302 uint32_t packetSize_vkCmdExecuteCommands = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8303 countingStream->rewind();
8304 uint32_t opcode_vkCmdExecuteCommands = OP_vkCmdExecuteCommands;
8305 stream->write(&opcode_vkCmdExecuteCommands, sizeof(uint32_t));
8306 stream->write(&packetSize_vkCmdExecuteCommands, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008307 uint64_t cgen_var_649;
8308 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_649, 1);
8309 stream->write((uint64_t*)&cgen_var_649, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008310 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008311 if (((commandBufferCount)))
8312 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008313 uint64_t* cgen_var_650;
8314 stream->alloc((void**)&cgen_var_650, ((commandBufferCount)) * 8);
8315 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_650, ((commandBufferCount)));
8316 stream->write((uint64_t*)cgen_var_650, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008317 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008318}
8319
8320#endif
8321#ifdef VK_VERSION_1_1
8322VkResult VkEncoder::vkEnumerateInstanceVersion(
8323 uint32_t* pApiVersion)
8324{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008325 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08008326 vkEnumerateInstanceVersion_VkResult_return = goldfish_vkEnumerateInstanceVersion(this, vkEnumerateInstanceVersion_VkResult_return, pApiVersion);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008327 return vkEnumerateInstanceVersion_VkResult_return;
8328}
8329
8330VkResult VkEncoder::vkBindBufferMemory2(
8331 VkDevice device,
8332 uint32_t bindInfoCount,
8333 const VkBindBufferMemoryInfo* pBindInfos)
8334{
8335 auto stream = mImpl->stream();
8336 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008337 auto resources = mImpl->resources();
8338 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008339 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008340 VkDevice local_device;
8341 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008342 uint32_t local_bindInfoCount;
8343 local_bindInfoCount = bindInfoCount;
8344 VkBindBufferMemoryInfo* local_pBindInfos;
8345 local_pBindInfos = nullptr;
8346 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008347 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008348 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008349 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8350 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008351 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
8352 }
8353 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008354 countingStream->rewind();
8355 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008356 uint64_t cgen_var_651;
8357 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_651, 1);
8358 countingStream->write((uint64_t*)&cgen_var_651, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008359 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
8360 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8361 {
8362 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008363 }
8364 }
8365 uint32_t packetSize_vkBindBufferMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8366 countingStream->rewind();
8367 uint32_t opcode_vkBindBufferMemory2 = OP_vkBindBufferMemory2;
8368 stream->write(&opcode_vkBindBufferMemory2, sizeof(uint32_t));
8369 stream->write(&packetSize_vkBindBufferMemory2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008370 uint64_t cgen_var_652;
8371 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_652, 1);
8372 stream->write((uint64_t*)&cgen_var_652, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008373 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008374 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8375 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008376 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008377 }
8378 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
8379 stream->read(&vkBindBufferMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008380 countingStream->clearPool();
8381 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008382 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008383 return vkBindBufferMemory2_VkResult_return;
8384}
8385
8386VkResult VkEncoder::vkBindImageMemory2(
8387 VkDevice device,
8388 uint32_t bindInfoCount,
8389 const VkBindImageMemoryInfo* pBindInfos)
8390{
8391 auto stream = mImpl->stream();
8392 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008393 auto resources = mImpl->resources();
8394 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008395 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008396 VkDevice local_device;
8397 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008398 uint32_t local_bindInfoCount;
8399 local_bindInfoCount = bindInfoCount;
8400 VkBindImageMemoryInfo* local_pBindInfos;
8401 local_pBindInfos = nullptr;
8402 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008403 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008404 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008405 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8406 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008407 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
8408 }
8409 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008410 countingStream->rewind();
8411 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008412 uint64_t cgen_var_653;
8413 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_653, 1);
8414 countingStream->write((uint64_t*)&cgen_var_653, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008415 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
8416 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8417 {
8418 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008419 }
8420 }
8421 uint32_t packetSize_vkBindImageMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8422 countingStream->rewind();
8423 uint32_t opcode_vkBindImageMemory2 = OP_vkBindImageMemory2;
8424 stream->write(&opcode_vkBindImageMemory2, sizeof(uint32_t));
8425 stream->write(&packetSize_vkBindImageMemory2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008426 uint64_t cgen_var_654;
8427 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_654, 1);
8428 stream->write((uint64_t*)&cgen_var_654, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008429 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008430 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8431 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008432 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008433 }
8434 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
8435 stream->read(&vkBindImageMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008436 countingStream->clearPool();
8437 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008438 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008439 return vkBindImageMemory2_VkResult_return;
8440}
8441
8442void VkEncoder::vkGetDeviceGroupPeerMemoryFeatures(
8443 VkDevice device,
8444 uint32_t heapIndex,
8445 uint32_t localDeviceIndex,
8446 uint32_t remoteDeviceIndex,
8447 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
8448{
8449 auto stream = mImpl->stream();
8450 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008451 auto resources = mImpl->resources();
8452 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008453 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008454 VkDevice local_device;
8455 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008456 uint32_t local_heapIndex;
8457 local_heapIndex = heapIndex;
8458 uint32_t local_localDeviceIndex;
8459 local_localDeviceIndex = localDeviceIndex;
8460 uint32_t local_remoteDeviceIndex;
8461 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008462 countingStream->rewind();
8463 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008464 uint64_t cgen_var_655;
8465 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_655, 1);
8466 countingStream->write((uint64_t*)&cgen_var_655, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008467 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
8468 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
8469 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008470 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
8471 }
8472 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8473 countingStream->rewind();
8474 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeatures = OP_vkGetDeviceGroupPeerMemoryFeatures;
8475 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
8476 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008477 uint64_t cgen_var_656;
8478 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_656, 1);
8479 stream->write((uint64_t*)&cgen_var_656, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008480 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
8481 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
8482 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008483 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
8484 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
8485}
8486
8487void VkEncoder::vkCmdSetDeviceMask(
8488 VkCommandBuffer commandBuffer,
8489 uint32_t deviceMask)
8490{
8491 auto stream = mImpl->stream();
8492 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008493 auto resources = mImpl->resources();
8494 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008495 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008496 VkCommandBuffer local_commandBuffer;
8497 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008498 uint32_t local_deviceMask;
8499 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008500 countingStream->rewind();
8501 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008502 uint64_t cgen_var_657;
8503 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_657, 1);
8504 countingStream->write((uint64_t*)&cgen_var_657, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008505 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008506 }
8507 uint32_t packetSize_vkCmdSetDeviceMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8508 countingStream->rewind();
8509 uint32_t opcode_vkCmdSetDeviceMask = OP_vkCmdSetDeviceMask;
8510 stream->write(&opcode_vkCmdSetDeviceMask, sizeof(uint32_t));
8511 stream->write(&packetSize_vkCmdSetDeviceMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008512 uint64_t cgen_var_658;
8513 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_658, 1);
8514 stream->write((uint64_t*)&cgen_var_658, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008515 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008516}
8517
8518void VkEncoder::vkCmdDispatchBase(
8519 VkCommandBuffer commandBuffer,
8520 uint32_t baseGroupX,
8521 uint32_t baseGroupY,
8522 uint32_t baseGroupZ,
8523 uint32_t groupCountX,
8524 uint32_t groupCountY,
8525 uint32_t groupCountZ)
8526{
8527 auto stream = mImpl->stream();
8528 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008529 auto resources = mImpl->resources();
8530 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008531 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008532 VkCommandBuffer local_commandBuffer;
8533 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008534 uint32_t local_baseGroupX;
8535 local_baseGroupX = baseGroupX;
8536 uint32_t local_baseGroupY;
8537 local_baseGroupY = baseGroupY;
8538 uint32_t local_baseGroupZ;
8539 local_baseGroupZ = baseGroupZ;
8540 uint32_t local_groupCountX;
8541 local_groupCountX = groupCountX;
8542 uint32_t local_groupCountY;
8543 local_groupCountY = groupCountY;
8544 uint32_t local_groupCountZ;
8545 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008546 countingStream->rewind();
8547 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008548 uint64_t cgen_var_659;
8549 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_659, 1);
8550 countingStream->write((uint64_t*)&cgen_var_659, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008551 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
8552 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
8553 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
8554 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
8555 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
8556 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008557 }
8558 uint32_t packetSize_vkCmdDispatchBase = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8559 countingStream->rewind();
8560 uint32_t opcode_vkCmdDispatchBase = OP_vkCmdDispatchBase;
8561 stream->write(&opcode_vkCmdDispatchBase, sizeof(uint32_t));
8562 stream->write(&packetSize_vkCmdDispatchBase, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008563 uint64_t cgen_var_660;
8564 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_660, 1);
8565 stream->write((uint64_t*)&cgen_var_660, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008566 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
8567 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
8568 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
8569 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
8570 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
8571 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008572}
8573
8574VkResult VkEncoder::vkEnumeratePhysicalDeviceGroups(
8575 VkInstance instance,
8576 uint32_t* pPhysicalDeviceGroupCount,
8577 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
8578{
8579 auto stream = mImpl->stream();
8580 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008581 auto resources = mImpl->resources();
8582 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008583 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008584 VkInstance local_instance;
8585 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008586 countingStream->rewind();
8587 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008588 uint64_t cgen_var_661;
8589 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_661, 1);
8590 countingStream->write((uint64_t*)&cgen_var_661, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008591 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008592 uint64_t cgen_var_662 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
8593 countingStream->putBe64(cgen_var_662);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008594 if (pPhysicalDeviceGroupCount)
8595 {
8596 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
8597 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008598 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008599 uint64_t cgen_var_663 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
8600 countingStream->putBe64(cgen_var_663);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008601 if (pPhysicalDeviceGroupProperties)
8602 {
8603 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
8604 {
8605 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
8606 }
8607 }
8608 }
8609 uint32_t packetSize_vkEnumeratePhysicalDeviceGroups = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8610 countingStream->rewind();
8611 uint32_t opcode_vkEnumeratePhysicalDeviceGroups = OP_vkEnumeratePhysicalDeviceGroups;
8612 stream->write(&opcode_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
8613 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008614 uint64_t cgen_var_664;
8615 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_664, 1);
8616 stream->write((uint64_t*)&cgen_var_664, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008617 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008618 uint64_t cgen_var_665 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
8619 stream->putBe64(cgen_var_665);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008620 if (pPhysicalDeviceGroupCount)
8621 {
8622 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
8623 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008624 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008625 uint64_t cgen_var_666 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
8626 stream->putBe64(cgen_var_666);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008627 if (pPhysicalDeviceGroupProperties)
8628 {
8629 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
8630 {
8631 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
8632 }
8633 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008634 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008635 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008636 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008637 if (pPhysicalDeviceGroupCount)
8638 {
8639 if (!(check_pPhysicalDeviceGroupCount))
8640 {
8641 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
8642 }
8643 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
8644 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008645 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008646 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008647 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008648 if (pPhysicalDeviceGroupProperties)
8649 {
8650 if (!(check_pPhysicalDeviceGroupProperties))
8651 {
8652 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
8653 }
8654 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
8655 {
8656 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
8657 }
8658 }
8659 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
8660 stream->read(&vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008661 countingStream->clearPool();
8662 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008663 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008664 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
8665}
8666
8667void VkEncoder::vkGetImageMemoryRequirements2(
8668 VkDevice device,
8669 const VkImageMemoryRequirementsInfo2* pInfo,
8670 VkMemoryRequirements2* pMemoryRequirements)
8671{
8672 auto stream = mImpl->stream();
8673 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008674 auto resources = mImpl->resources();
8675 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008676 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008677 VkDevice local_device;
8678 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008679 VkImageMemoryRequirementsInfo2* local_pInfo;
8680 local_pInfo = nullptr;
8681 if (pInfo)
8682 {
8683 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
8684 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
8685 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008686 countingStream->rewind();
8687 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008688 uint64_t cgen_var_669;
8689 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_669, 1);
8690 countingStream->write((uint64_t*)&cgen_var_669, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008691 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008692 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
8693 }
8694 uint32_t packetSize_vkGetImageMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8695 countingStream->rewind();
8696 uint32_t opcode_vkGetImageMemoryRequirements2 = OP_vkGetImageMemoryRequirements2;
8697 stream->write(&opcode_vkGetImageMemoryRequirements2, sizeof(uint32_t));
8698 stream->write(&packetSize_vkGetImageMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008699 uint64_t cgen_var_670;
8700 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_670, 1);
8701 stream->write((uint64_t*)&cgen_var_670, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008702 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008703 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8704 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8705}
8706
8707void VkEncoder::vkGetBufferMemoryRequirements2(
8708 VkDevice device,
8709 const VkBufferMemoryRequirementsInfo2* pInfo,
8710 VkMemoryRequirements2* pMemoryRequirements)
8711{
8712 auto stream = mImpl->stream();
8713 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008714 auto resources = mImpl->resources();
8715 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008716 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008717 VkDevice local_device;
8718 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008719 VkBufferMemoryRequirementsInfo2* local_pInfo;
8720 local_pInfo = nullptr;
8721 if (pInfo)
8722 {
8723 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
8724 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
8725 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008726 countingStream->rewind();
8727 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008728 uint64_t cgen_var_671;
8729 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_671, 1);
8730 countingStream->write((uint64_t*)&cgen_var_671, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008731 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008732 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
8733 }
8734 uint32_t packetSize_vkGetBufferMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8735 countingStream->rewind();
8736 uint32_t opcode_vkGetBufferMemoryRequirements2 = OP_vkGetBufferMemoryRequirements2;
8737 stream->write(&opcode_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
8738 stream->write(&packetSize_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008739 uint64_t cgen_var_672;
8740 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_672, 1);
8741 stream->write((uint64_t*)&cgen_var_672, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008742 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008743 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8744 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8745}
8746
8747void VkEncoder::vkGetImageSparseMemoryRequirements2(
8748 VkDevice device,
8749 const VkImageSparseMemoryRequirementsInfo2* pInfo,
8750 uint32_t* pSparseMemoryRequirementCount,
8751 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
8752{
8753 auto stream = mImpl->stream();
8754 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008755 auto resources = mImpl->resources();
8756 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008757 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008758 VkDevice local_device;
8759 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008760 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
8761 local_pInfo = nullptr;
8762 if (pInfo)
8763 {
8764 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
8765 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
8766 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008767 countingStream->rewind();
8768 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008769 uint64_t cgen_var_673;
8770 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_673, 1);
8771 countingStream->write((uint64_t*)&cgen_var_673, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008772 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008773 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008774 uint64_t cgen_var_674 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
8775 countingStream->putBe64(cgen_var_674);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008776 if (pSparseMemoryRequirementCount)
8777 {
8778 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
8779 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008780 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008781 uint64_t cgen_var_675 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
8782 countingStream->putBe64(cgen_var_675);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008783 if (pSparseMemoryRequirements)
8784 {
8785 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
8786 {
8787 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
8788 }
8789 }
8790 }
8791 uint32_t packetSize_vkGetImageSparseMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8792 countingStream->rewind();
8793 uint32_t opcode_vkGetImageSparseMemoryRequirements2 = OP_vkGetImageSparseMemoryRequirements2;
8794 stream->write(&opcode_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
8795 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008796 uint64_t cgen_var_676;
8797 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_676, 1);
8798 stream->write((uint64_t*)&cgen_var_676, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008799 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008800 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008801 uint64_t cgen_var_677 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
8802 stream->putBe64(cgen_var_677);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008803 if (pSparseMemoryRequirementCount)
8804 {
8805 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
8806 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008807 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008808 uint64_t cgen_var_678 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
8809 stream->putBe64(cgen_var_678);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008810 if (pSparseMemoryRequirements)
8811 {
8812 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
8813 {
8814 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
8815 }
8816 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008817 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008818 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008819 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008820 if (pSparseMemoryRequirementCount)
8821 {
8822 if (!(check_pSparseMemoryRequirementCount))
8823 {
8824 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
8825 }
8826 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
8827 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008828 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008829 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008830 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008831 if (pSparseMemoryRequirements)
8832 {
8833 if (!(check_pSparseMemoryRequirements))
8834 {
8835 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
8836 }
8837 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
8838 {
8839 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
8840 }
8841 }
8842}
8843
8844void VkEncoder::vkGetPhysicalDeviceFeatures2(
8845 VkPhysicalDevice physicalDevice,
8846 VkPhysicalDeviceFeatures2* pFeatures)
8847{
8848 auto stream = mImpl->stream();
8849 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008850 auto resources = mImpl->resources();
8851 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008852 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008853 VkPhysicalDevice local_physicalDevice;
8854 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008855 countingStream->rewind();
8856 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008857 uint64_t cgen_var_681;
8858 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_681, 1);
8859 countingStream->write((uint64_t*)&cgen_var_681, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008860 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
8861 }
8862 uint32_t packetSize_vkGetPhysicalDeviceFeatures2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8863 countingStream->rewind();
8864 uint32_t opcode_vkGetPhysicalDeviceFeatures2 = OP_vkGetPhysicalDeviceFeatures2;
8865 stream->write(&opcode_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
8866 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008867 uint64_t cgen_var_682;
8868 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_682, 1);
8869 stream->write((uint64_t*)&cgen_var_682, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008870 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
8871 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
8872}
8873
8874void VkEncoder::vkGetPhysicalDeviceProperties2(
8875 VkPhysicalDevice physicalDevice,
8876 VkPhysicalDeviceProperties2* pProperties)
8877{
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08008878 goldfish_vkGetPhysicalDeviceProperties2(this, physicalDevice, pProperties);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008879}
8880
8881void VkEncoder::vkGetPhysicalDeviceFormatProperties2(
8882 VkPhysicalDevice physicalDevice,
8883 VkFormat format,
8884 VkFormatProperties2* pFormatProperties)
8885{
8886 auto stream = mImpl->stream();
8887 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008888 auto resources = mImpl->resources();
8889 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008890 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008891 VkPhysicalDevice local_physicalDevice;
8892 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008893 VkFormat local_format;
8894 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008895 countingStream->rewind();
8896 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008897 uint64_t cgen_var_683;
8898 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_683, 1);
8899 countingStream->write((uint64_t*)&cgen_var_683, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008900 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008901 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
8902 }
8903 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8904 countingStream->rewind();
8905 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2 = OP_vkGetPhysicalDeviceFormatProperties2;
8906 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
8907 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008908 uint64_t cgen_var_684;
8909 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_684, 1);
8910 stream->write((uint64_t*)&cgen_var_684, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008911 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008912 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
8913 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
8914}
8915
8916VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2(
8917 VkPhysicalDevice physicalDevice,
8918 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
8919 VkImageFormatProperties2* pImageFormatProperties)
8920{
8921 auto stream = mImpl->stream();
8922 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008923 auto resources = mImpl->resources();
8924 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008925 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008926 VkPhysicalDevice local_physicalDevice;
8927 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008928 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
8929 local_pImageFormatInfo = nullptr;
8930 if (pImageFormatInfo)
8931 {
8932 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
8933 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
8934 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008935 countingStream->rewind();
8936 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008937 uint64_t cgen_var_685;
8938 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_685, 1);
8939 countingStream->write((uint64_t*)&cgen_var_685, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008940 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008941 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
8942 }
8943 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8944 countingStream->rewind();
8945 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2 = OP_vkGetPhysicalDeviceImageFormatProperties2;
8946 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
8947 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008948 uint64_t cgen_var_686;
8949 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_686, 1);
8950 stream->write((uint64_t*)&cgen_var_686, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008951 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008952 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
8953 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
8954 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
8955 stream->read(&vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008956 countingStream->clearPool();
8957 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008958 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008959 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
8960}
8961
8962void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2(
8963 VkPhysicalDevice physicalDevice,
8964 uint32_t* pQueueFamilyPropertyCount,
8965 VkQueueFamilyProperties2* pQueueFamilyProperties)
8966{
8967 auto stream = mImpl->stream();
8968 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008969 auto resources = mImpl->resources();
8970 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008971 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008972 VkPhysicalDevice local_physicalDevice;
8973 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008974 countingStream->rewind();
8975 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008976 uint64_t cgen_var_687;
8977 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_687, 1);
8978 countingStream->write((uint64_t*)&cgen_var_687, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008979 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008980 uint64_t cgen_var_688 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
8981 countingStream->putBe64(cgen_var_688);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008982 if (pQueueFamilyPropertyCount)
8983 {
8984 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
8985 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008986 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008987 uint64_t cgen_var_689 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
8988 countingStream->putBe64(cgen_var_689);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008989 if (pQueueFamilyProperties)
8990 {
8991 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
8992 {
8993 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
8994 }
8995 }
8996 }
8997 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8998 countingStream->rewind();
8999 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2 = OP_vkGetPhysicalDeviceQueueFamilyProperties2;
9000 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
9001 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009002 uint64_t cgen_var_690;
9003 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_690, 1);
9004 stream->write((uint64_t*)&cgen_var_690, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009005 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009006 uint64_t cgen_var_691 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
9007 stream->putBe64(cgen_var_691);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009008 if (pQueueFamilyPropertyCount)
9009 {
9010 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
9011 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009012 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009013 uint64_t cgen_var_692 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
9014 stream->putBe64(cgen_var_692);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009015 if (pQueueFamilyProperties)
9016 {
9017 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9018 {
9019 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9020 }
9021 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009022 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009023 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009024 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009025 if (pQueueFamilyPropertyCount)
9026 {
9027 if (!(check_pQueueFamilyPropertyCount))
9028 {
9029 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
9030 }
9031 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
9032 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009033 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009034 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009035 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009036 if (pQueueFamilyProperties)
9037 {
9038 if (!(check_pQueueFamilyProperties))
9039 {
9040 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
9041 }
9042 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9043 {
9044 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9045 }
9046 }
9047}
9048
9049void VkEncoder::vkGetPhysicalDeviceMemoryProperties2(
9050 VkPhysicalDevice physicalDevice,
9051 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
9052{
9053 auto stream = mImpl->stream();
9054 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009055 auto resources = mImpl->resources();
9056 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009057 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009058 VkPhysicalDevice local_physicalDevice;
9059 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009060 countingStream->rewind();
9061 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009062 uint64_t cgen_var_695;
9063 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_695, 1);
9064 countingStream->write((uint64_t*)&cgen_var_695, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009065 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9066 }
9067 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9068 countingStream->rewind();
9069 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2 = OP_vkGetPhysicalDeviceMemoryProperties2;
9070 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
9071 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009072 uint64_t cgen_var_696;
9073 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_696, 1);
9074 stream->write((uint64_t*)&cgen_var_696, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009075 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9076 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9077}
9078
9079void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2(
9080 VkPhysicalDevice physicalDevice,
9081 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
9082 uint32_t* pPropertyCount,
9083 VkSparseImageFormatProperties2* pProperties)
9084{
9085 auto stream = mImpl->stream();
9086 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009087 auto resources = mImpl->resources();
9088 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009089 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009090 VkPhysicalDevice local_physicalDevice;
9091 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009092 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
9093 local_pFormatInfo = nullptr;
9094 if (pFormatInfo)
9095 {
9096 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
9097 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
9098 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009099 countingStream->rewind();
9100 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009101 uint64_t cgen_var_697;
9102 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_697, 1);
9103 countingStream->write((uint64_t*)&cgen_var_697, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009104 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009105 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009106 uint64_t cgen_var_698 = (uint64_t)(uintptr_t)pPropertyCount;
9107 countingStream->putBe64(cgen_var_698);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009108 if (pPropertyCount)
9109 {
9110 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
9111 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009112 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009113 uint64_t cgen_var_699 = (uint64_t)(uintptr_t)pProperties;
9114 countingStream->putBe64(cgen_var_699);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009115 if (pProperties)
9116 {
9117 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9118 {
9119 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
9120 }
9121 }
9122 }
9123 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9124 countingStream->rewind();
9125 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2 = OP_vkGetPhysicalDeviceSparseImageFormatProperties2;
9126 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
9127 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009128 uint64_t cgen_var_700;
9129 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_700, 1);
9130 stream->write((uint64_t*)&cgen_var_700, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009131 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009132 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009133 uint64_t cgen_var_701 = (uint64_t)(uintptr_t)pPropertyCount;
9134 stream->putBe64(cgen_var_701);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009135 if (pPropertyCount)
9136 {
9137 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
9138 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009139 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009140 uint64_t cgen_var_702 = (uint64_t)(uintptr_t)pProperties;
9141 stream->putBe64(cgen_var_702);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009142 if (pProperties)
9143 {
9144 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9145 {
9146 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
9147 }
9148 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009149 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009150 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009151 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009152 if (pPropertyCount)
9153 {
9154 if (!(check_pPropertyCount))
9155 {
9156 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
9157 }
9158 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
9159 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009160 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009161 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009162 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009163 if (pProperties)
9164 {
9165 if (!(check_pProperties))
9166 {
9167 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
9168 }
9169 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9170 {
9171 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
9172 }
9173 }
9174}
9175
9176void VkEncoder::vkTrimCommandPool(
9177 VkDevice device,
9178 VkCommandPool commandPool,
9179 VkCommandPoolTrimFlags flags)
9180{
9181 auto stream = mImpl->stream();
9182 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009183 auto resources = mImpl->resources();
9184 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009185 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009186 VkDevice local_device;
9187 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009188 VkCommandPool local_commandPool;
9189 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009190 VkCommandPoolTrimFlags local_flags;
9191 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009192 countingStream->rewind();
9193 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009194 uint64_t cgen_var_705;
9195 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_705, 1);
9196 countingStream->write((uint64_t*)&cgen_var_705, 1 * 8);
9197 uint64_t cgen_var_706;
9198 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_706, 1);
9199 countingStream->write((uint64_t*)&cgen_var_706, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009200 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009201 }
9202 uint32_t packetSize_vkTrimCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9203 countingStream->rewind();
9204 uint32_t opcode_vkTrimCommandPool = OP_vkTrimCommandPool;
9205 stream->write(&opcode_vkTrimCommandPool, sizeof(uint32_t));
9206 stream->write(&packetSize_vkTrimCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009207 uint64_t cgen_var_707;
9208 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_707, 1);
9209 stream->write((uint64_t*)&cgen_var_707, 1 * 8);
9210 uint64_t cgen_var_708;
9211 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_708, 1);
9212 stream->write((uint64_t*)&cgen_var_708, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009213 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009214}
9215
9216void VkEncoder::vkGetDeviceQueue2(
9217 VkDevice device,
9218 const VkDeviceQueueInfo2* pQueueInfo,
9219 VkQueue* pQueue)
9220{
9221 auto stream = mImpl->stream();
9222 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009223 auto resources = mImpl->resources();
9224 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009225 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009226 VkDevice local_device;
9227 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009228 VkDeviceQueueInfo2* local_pQueueInfo;
9229 local_pQueueInfo = nullptr;
9230 if (pQueueInfo)
9231 {
9232 local_pQueueInfo = (VkDeviceQueueInfo2*)pool->alloc(sizeof(const VkDeviceQueueInfo2));
9233 deepcopy_VkDeviceQueueInfo2(pool, pQueueInfo, (VkDeviceQueueInfo2*)(local_pQueueInfo));
9234 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009235 countingStream->rewind();
9236 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009237 uint64_t cgen_var_709;
9238 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_709, 1);
9239 countingStream->write((uint64_t*)&cgen_var_709, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009240 marshal_VkDeviceQueueInfo2(countingStream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009241 uint64_t cgen_var_710;
9242 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_710, 1);
9243 countingStream->write((uint64_t*)&cgen_var_710, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009244 }
9245 uint32_t packetSize_vkGetDeviceQueue2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9246 countingStream->rewind();
9247 uint32_t opcode_vkGetDeviceQueue2 = OP_vkGetDeviceQueue2;
9248 stream->write(&opcode_vkGetDeviceQueue2, sizeof(uint32_t));
9249 stream->write(&packetSize_vkGetDeviceQueue2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009250 uint64_t cgen_var_711;
9251 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_711, 1);
9252 stream->write((uint64_t*)&cgen_var_711, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009253 marshal_VkDeviceQueueInfo2(stream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08009254 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009255 uint64_t cgen_var_712;
9256 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_712, 1);
9257 stream->write((uint64_t*)&cgen_var_712, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009258 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009259 uint64_t cgen_var_713;
9260 stream->read((uint64_t*)&cgen_var_713, 8);
9261 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_713, (VkQueue*)pQueue, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009262}
9263
9264VkResult VkEncoder::vkCreateSamplerYcbcrConversion(
9265 VkDevice device,
9266 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
9267 const VkAllocationCallbacks* pAllocator,
9268 VkSamplerYcbcrConversion* pYcbcrConversion)
9269{
9270 auto stream = mImpl->stream();
9271 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009272 auto resources = mImpl->resources();
9273 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009274 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009275 VkDevice local_device;
9276 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009277 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
9278 local_pCreateInfo = nullptr;
9279 if (pCreateInfo)
9280 {
9281 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
9282 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
9283 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009284 VkAllocationCallbacks* local_pAllocator;
9285 local_pAllocator = nullptr;
9286 if (pAllocator)
9287 {
9288 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9289 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9290 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009291 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009292 countingStream->rewind();
9293 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009294 uint64_t cgen_var_714;
9295 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_714, 1);
9296 countingStream->write((uint64_t*)&cgen_var_714, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009297 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009298 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009299 uint64_t cgen_var_715 = (uint64_t)(uintptr_t)local_pAllocator;
9300 countingStream->putBe64(cgen_var_715);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009301 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009302 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009303 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009304 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009305 uint64_t cgen_var_716;
9306 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_716, 1);
9307 countingStream->write((uint64_t*)&cgen_var_716, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009308 }
9309 uint32_t packetSize_vkCreateSamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9310 countingStream->rewind();
9311 uint32_t opcode_vkCreateSamplerYcbcrConversion = OP_vkCreateSamplerYcbcrConversion;
9312 stream->write(&opcode_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
9313 stream->write(&packetSize_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009314 uint64_t cgen_var_717;
9315 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_717, 1);
9316 stream->write((uint64_t*)&cgen_var_717, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009317 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009318 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009319 uint64_t cgen_var_718 = (uint64_t)(uintptr_t)local_pAllocator;
9320 stream->putBe64(cgen_var_718);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009321 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009322 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009323 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009324 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08009325 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009326 uint64_t cgen_var_719;
9327 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_719, 1);
9328 stream->write((uint64_t*)&cgen_var_719, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009329 stream->setHandleMapping(resources->unwrapMapping());
9330 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009331 uint64_t cgen_var_720;
9332 stream->read((uint64_t*)&cgen_var_720, 8);
9333 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_720, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009334 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009335 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
9336 stream->read(&vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009337 countingStream->clearPool();
9338 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009339 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009340 return vkCreateSamplerYcbcrConversion_VkResult_return;
9341}
9342
9343void VkEncoder::vkDestroySamplerYcbcrConversion(
9344 VkDevice device,
9345 VkSamplerYcbcrConversion ycbcrConversion,
9346 const VkAllocationCallbacks* pAllocator)
9347{
9348 auto stream = mImpl->stream();
9349 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009350 auto resources = mImpl->resources();
9351 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009352 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009353 VkDevice local_device;
9354 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009355 VkSamplerYcbcrConversion local_ycbcrConversion;
9356 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009357 VkAllocationCallbacks* local_pAllocator;
9358 local_pAllocator = nullptr;
9359 if (pAllocator)
9360 {
9361 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9362 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9363 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009364 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009365 countingStream->rewind();
9366 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009367 uint64_t cgen_var_721;
9368 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_721, 1);
9369 countingStream->write((uint64_t*)&cgen_var_721, 1 * 8);
9370 uint64_t cgen_var_722;
9371 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_722, 1);
9372 countingStream->write((uint64_t*)&cgen_var_722, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009373 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009374 uint64_t cgen_var_723 = (uint64_t)(uintptr_t)local_pAllocator;
9375 countingStream->putBe64(cgen_var_723);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009376 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009377 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009378 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009379 }
9380 }
9381 uint32_t packetSize_vkDestroySamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9382 countingStream->rewind();
9383 uint32_t opcode_vkDestroySamplerYcbcrConversion = OP_vkDestroySamplerYcbcrConversion;
9384 stream->write(&opcode_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
9385 stream->write(&packetSize_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009386 uint64_t cgen_var_724;
9387 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_724, 1);
9388 stream->write((uint64_t*)&cgen_var_724, 1 * 8);
9389 uint64_t cgen_var_725;
9390 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_725, 1);
9391 stream->write((uint64_t*)&cgen_var_725, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009392 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009393 uint64_t cgen_var_726 = (uint64_t)(uintptr_t)local_pAllocator;
9394 stream->putBe64(cgen_var_726);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009395 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009396 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009397 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009398 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009399 resources->destroyMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&ycbcrConversion);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009400}
9401
9402VkResult VkEncoder::vkCreateDescriptorUpdateTemplate(
9403 VkDevice device,
9404 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
9405 const VkAllocationCallbacks* pAllocator,
9406 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
9407{
9408 auto stream = mImpl->stream();
9409 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009410 auto resources = mImpl->resources();
9411 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009412 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009413 VkDevice local_device;
9414 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009415 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
9416 local_pCreateInfo = nullptr;
9417 if (pCreateInfo)
9418 {
9419 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
9420 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
9421 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009422 VkAllocationCallbacks* local_pAllocator;
9423 local_pAllocator = nullptr;
9424 if (pAllocator)
9425 {
9426 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9427 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9428 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009429 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009430 countingStream->rewind();
9431 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009432 uint64_t cgen_var_727;
9433 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_727, 1);
9434 countingStream->write((uint64_t*)&cgen_var_727, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009435 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009436 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009437 uint64_t cgen_var_728 = (uint64_t)(uintptr_t)local_pAllocator;
9438 countingStream->putBe64(cgen_var_728);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009439 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009440 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009441 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009442 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009443 uint64_t cgen_var_729;
9444 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_729, 1);
9445 countingStream->write((uint64_t*)&cgen_var_729, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009446 }
9447 uint32_t packetSize_vkCreateDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9448 countingStream->rewind();
9449 uint32_t opcode_vkCreateDescriptorUpdateTemplate = OP_vkCreateDescriptorUpdateTemplate;
9450 stream->write(&opcode_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
9451 stream->write(&packetSize_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009452 uint64_t cgen_var_730;
9453 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_730, 1);
9454 stream->write((uint64_t*)&cgen_var_730, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009455 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009456 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009457 uint64_t cgen_var_731 = (uint64_t)(uintptr_t)local_pAllocator;
9458 stream->putBe64(cgen_var_731);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009459 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009460 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009461 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009462 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08009463 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009464 uint64_t cgen_var_732;
9465 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_732, 1);
9466 stream->write((uint64_t*)&cgen_var_732, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009467 stream->setHandleMapping(resources->unwrapMapping());
9468 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009469 uint64_t cgen_var_733;
9470 stream->read((uint64_t*)&cgen_var_733, 8);
9471 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_733, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009472 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009473 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
9474 stream->read(&vkCreateDescriptorUpdateTemplate_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009475 countingStream->clearPool();
9476 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009477 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009478 return vkCreateDescriptorUpdateTemplate_VkResult_return;
9479}
9480
9481void VkEncoder::vkDestroyDescriptorUpdateTemplate(
9482 VkDevice device,
9483 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
9484 const VkAllocationCallbacks* pAllocator)
9485{
9486 auto stream = mImpl->stream();
9487 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009488 auto resources = mImpl->resources();
9489 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009490 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009491 VkDevice local_device;
9492 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009493 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
9494 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009495 VkAllocationCallbacks* local_pAllocator;
9496 local_pAllocator = nullptr;
9497 if (pAllocator)
9498 {
9499 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9500 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9501 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009502 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009503 countingStream->rewind();
9504 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009505 uint64_t cgen_var_734;
9506 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_734, 1);
9507 countingStream->write((uint64_t*)&cgen_var_734, 1 * 8);
9508 uint64_t cgen_var_735;
9509 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_735, 1);
9510 countingStream->write((uint64_t*)&cgen_var_735, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009511 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009512 uint64_t cgen_var_736 = (uint64_t)(uintptr_t)local_pAllocator;
9513 countingStream->putBe64(cgen_var_736);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009514 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009515 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009516 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009517 }
9518 }
9519 uint32_t packetSize_vkDestroyDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9520 countingStream->rewind();
9521 uint32_t opcode_vkDestroyDescriptorUpdateTemplate = OP_vkDestroyDescriptorUpdateTemplate;
9522 stream->write(&opcode_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
9523 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009524 uint64_t cgen_var_737;
9525 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_737, 1);
9526 stream->write((uint64_t*)&cgen_var_737, 1 * 8);
9527 uint64_t cgen_var_738;
9528 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_738, 1);
9529 stream->write((uint64_t*)&cgen_var_738, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009530 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009531 uint64_t cgen_var_739 = (uint64_t)(uintptr_t)local_pAllocator;
9532 stream->putBe64(cgen_var_739);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009533 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009534 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009535 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009536 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009537 resources->destroyMapping()->mapHandles_VkDescriptorUpdateTemplate((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009538}
9539
9540void VkEncoder::vkUpdateDescriptorSetWithTemplate(
9541 VkDevice device,
9542 VkDescriptorSet descriptorSet,
9543 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
9544 const void* pData)
9545{
9546 auto stream = mImpl->stream();
9547 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009548 auto resources = mImpl->resources();
9549 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009550 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009551 VkDevice local_device;
9552 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009553 VkDescriptorSet local_descriptorSet;
9554 local_descriptorSet = descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009555 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
9556 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009557 void* local_pData;
9558 local_pData = nullptr;
9559 if (pData)
9560 {
9561 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
9562 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009563 countingStream->rewind();
9564 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009565 uint64_t cgen_var_740;
9566 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_740, 1);
9567 countingStream->write((uint64_t*)&cgen_var_740, 1 * 8);
9568 uint64_t cgen_var_741;
9569 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_741, 1);
9570 countingStream->write((uint64_t*)&cgen_var_741, 1 * 8);
9571 uint64_t cgen_var_742;
9572 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_742, 1);
9573 countingStream->write((uint64_t*)&cgen_var_742, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009574 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009575 uint64_t cgen_var_743 = (uint64_t)(uintptr_t)local_pData;
9576 countingStream->putBe64(cgen_var_743);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009577 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009578 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009579 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009580 }
9581 }
9582 uint32_t packetSize_vkUpdateDescriptorSetWithTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9583 countingStream->rewind();
9584 uint32_t opcode_vkUpdateDescriptorSetWithTemplate = OP_vkUpdateDescriptorSetWithTemplate;
9585 stream->write(&opcode_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
9586 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009587 uint64_t cgen_var_744;
9588 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_744, 1);
9589 stream->write((uint64_t*)&cgen_var_744, 1 * 8);
9590 uint64_t cgen_var_745;
9591 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_745, 1);
9592 stream->write((uint64_t*)&cgen_var_745, 1 * 8);
9593 uint64_t cgen_var_746;
9594 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_746, 1);
9595 stream->write((uint64_t*)&cgen_var_746, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009596 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009597 uint64_t cgen_var_747 = (uint64_t)(uintptr_t)local_pData;
9598 stream->putBe64(cgen_var_747);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009599 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009600 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009601 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009602 }
9603}
9604
9605void VkEncoder::vkGetPhysicalDeviceExternalBufferProperties(
9606 VkPhysicalDevice physicalDevice,
9607 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
9608 VkExternalBufferProperties* pExternalBufferProperties)
9609{
9610 auto stream = mImpl->stream();
9611 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009612 auto resources = mImpl->resources();
9613 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009614 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009615 VkPhysicalDevice local_physicalDevice;
9616 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009617 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
9618 local_pExternalBufferInfo = nullptr;
9619 if (pExternalBufferInfo)
9620 {
9621 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
9622 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
9623 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009624 countingStream->rewind();
9625 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009626 uint64_t cgen_var_748;
9627 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_748, 1);
9628 countingStream->write((uint64_t*)&cgen_var_748, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009629 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009630 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
9631 }
9632 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9633 countingStream->rewind();
9634 uint32_t opcode_vkGetPhysicalDeviceExternalBufferProperties = OP_vkGetPhysicalDeviceExternalBufferProperties;
9635 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
9636 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009637 uint64_t cgen_var_749;
9638 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_749, 1);
9639 stream->write((uint64_t*)&cgen_var_749, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009640 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009641 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
9642 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
9643}
9644
9645void VkEncoder::vkGetPhysicalDeviceExternalFenceProperties(
9646 VkPhysicalDevice physicalDevice,
9647 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
9648 VkExternalFenceProperties* pExternalFenceProperties)
9649{
9650 auto stream = mImpl->stream();
9651 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009652 auto resources = mImpl->resources();
9653 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009654 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009655 VkPhysicalDevice local_physicalDevice;
9656 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009657 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
9658 local_pExternalFenceInfo = nullptr;
9659 if (pExternalFenceInfo)
9660 {
9661 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
9662 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
9663 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009664 countingStream->rewind();
9665 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009666 uint64_t cgen_var_750;
9667 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_750, 1);
9668 countingStream->write((uint64_t*)&cgen_var_750, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009669 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009670 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
9671 }
9672 uint32_t packetSize_vkGetPhysicalDeviceExternalFenceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9673 countingStream->rewind();
9674 uint32_t opcode_vkGetPhysicalDeviceExternalFenceProperties = OP_vkGetPhysicalDeviceExternalFenceProperties;
9675 stream->write(&opcode_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
9676 stream->write(&packetSize_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009677 uint64_t cgen_var_751;
9678 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_751, 1);
9679 stream->write((uint64_t*)&cgen_var_751, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009680 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009681 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
9682 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
9683}
9684
9685void VkEncoder::vkGetPhysicalDeviceExternalSemaphoreProperties(
9686 VkPhysicalDevice physicalDevice,
9687 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
9688 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
9689{
9690 auto stream = mImpl->stream();
9691 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009692 auto resources = mImpl->resources();
9693 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009694 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009695 VkPhysicalDevice local_physicalDevice;
9696 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009697 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
9698 local_pExternalSemaphoreInfo = nullptr;
9699 if (pExternalSemaphoreInfo)
9700 {
9701 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
9702 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
9703 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009704 countingStream->rewind();
9705 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009706 uint64_t cgen_var_752;
9707 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_752, 1);
9708 countingStream->write((uint64_t*)&cgen_var_752, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009709 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009710 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
9711 }
9712 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9713 countingStream->rewind();
9714 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphoreProperties = OP_vkGetPhysicalDeviceExternalSemaphoreProperties;
9715 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
9716 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009717 uint64_t cgen_var_753;
9718 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_753, 1);
9719 stream->write((uint64_t*)&cgen_var_753, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009720 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009721 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
9722 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
9723}
9724
9725void VkEncoder::vkGetDescriptorSetLayoutSupport(
9726 VkDevice device,
9727 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
9728 VkDescriptorSetLayoutSupport* pSupport)
9729{
9730 auto stream = mImpl->stream();
9731 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009732 auto resources = mImpl->resources();
9733 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009734 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009735 VkDevice local_device;
9736 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009737 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
9738 local_pCreateInfo = nullptr;
9739 if (pCreateInfo)
9740 {
9741 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
9742 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
9743 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009744 countingStream->rewind();
9745 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009746 uint64_t cgen_var_754;
9747 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_754, 1);
9748 countingStream->write((uint64_t*)&cgen_var_754, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009749 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009750 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
9751 }
9752 uint32_t packetSize_vkGetDescriptorSetLayoutSupport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9753 countingStream->rewind();
9754 uint32_t opcode_vkGetDescriptorSetLayoutSupport = OP_vkGetDescriptorSetLayoutSupport;
9755 stream->write(&opcode_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
9756 stream->write(&packetSize_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009757 uint64_t cgen_var_755;
9758 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_755, 1);
9759 stream->write((uint64_t*)&cgen_var_755, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009760 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009761 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
9762 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
9763}
9764
9765#endif
9766#ifdef VK_KHR_surface
9767void VkEncoder::vkDestroySurfaceKHR(
9768 VkInstance instance,
9769 VkSurfaceKHR surface,
9770 const VkAllocationCallbacks* pAllocator)
9771{
9772 auto stream = mImpl->stream();
9773 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009774 auto resources = mImpl->resources();
9775 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009776 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009777 VkInstance local_instance;
9778 local_instance = instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009779 VkSurfaceKHR local_surface;
9780 local_surface = surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009781 VkAllocationCallbacks* local_pAllocator;
9782 local_pAllocator = nullptr;
9783 if (pAllocator)
9784 {
9785 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9786 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9787 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009788 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009789 countingStream->rewind();
9790 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009791 uint64_t cgen_var_756;
9792 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_756, 1);
9793 countingStream->write((uint64_t*)&cgen_var_756, 1 * 8);
9794 uint64_t cgen_var_757;
9795 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_757, 1);
9796 countingStream->write((uint64_t*)&cgen_var_757, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009797 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009798 uint64_t cgen_var_758 = (uint64_t)(uintptr_t)local_pAllocator;
9799 countingStream->putBe64(cgen_var_758);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009800 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009801 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009802 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009803 }
9804 }
9805 uint32_t packetSize_vkDestroySurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9806 countingStream->rewind();
9807 uint32_t opcode_vkDestroySurfaceKHR = OP_vkDestroySurfaceKHR;
9808 stream->write(&opcode_vkDestroySurfaceKHR, sizeof(uint32_t));
9809 stream->write(&packetSize_vkDestroySurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009810 uint64_t cgen_var_759;
9811 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_759, 1);
9812 stream->write((uint64_t*)&cgen_var_759, 1 * 8);
9813 uint64_t cgen_var_760;
9814 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_760, 1);
9815 stream->write((uint64_t*)&cgen_var_760, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009816 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009817 uint64_t cgen_var_761 = (uint64_t)(uintptr_t)local_pAllocator;
9818 stream->putBe64(cgen_var_761);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009819 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009820 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009821 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009822 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009823 resources->destroyMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&surface);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009824}
9825
9826VkResult VkEncoder::vkGetPhysicalDeviceSurfaceSupportKHR(
9827 VkPhysicalDevice physicalDevice,
9828 uint32_t queueFamilyIndex,
9829 VkSurfaceKHR surface,
9830 VkBool32* pSupported)
9831{
9832 auto stream = mImpl->stream();
9833 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009834 auto resources = mImpl->resources();
9835 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009836 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009837 VkPhysicalDevice local_physicalDevice;
9838 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009839 uint32_t local_queueFamilyIndex;
9840 local_queueFamilyIndex = queueFamilyIndex;
9841 VkSurfaceKHR local_surface;
9842 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009843 countingStream->rewind();
9844 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009845 uint64_t cgen_var_762;
9846 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_762, 1);
9847 countingStream->write((uint64_t*)&cgen_var_762, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009848 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009849 uint64_t cgen_var_763;
9850 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_763, 1);
9851 countingStream->write((uint64_t*)&cgen_var_763, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009852 countingStream->write((VkBool32*)pSupported, sizeof(VkBool32));
9853 }
9854 uint32_t packetSize_vkGetPhysicalDeviceSurfaceSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9855 countingStream->rewind();
9856 uint32_t opcode_vkGetPhysicalDeviceSurfaceSupportKHR = OP_vkGetPhysicalDeviceSurfaceSupportKHR;
9857 stream->write(&opcode_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
9858 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009859 uint64_t cgen_var_764;
9860 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_764, 1);
9861 stream->write((uint64_t*)&cgen_var_764, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009862 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009863 uint64_t cgen_var_765;
9864 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_765, 1);
9865 stream->write((uint64_t*)&cgen_var_765, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009866 stream->write((VkBool32*)pSupported, sizeof(VkBool32));
9867 stream->read((VkBool32*)pSupported, sizeof(VkBool32));
9868 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
9869 stream->read(&vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009870 countingStream->clearPool();
9871 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009872 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009873 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
9874}
9875
9876VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
9877 VkPhysicalDevice physicalDevice,
9878 VkSurfaceKHR surface,
9879 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
9880{
9881 auto stream = mImpl->stream();
9882 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009883 auto resources = mImpl->resources();
9884 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009885 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009886 VkPhysicalDevice local_physicalDevice;
9887 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009888 VkSurfaceKHR local_surface;
9889 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009890 countingStream->rewind();
9891 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009892 uint64_t cgen_var_766;
9893 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_766, 1);
9894 countingStream->write((uint64_t*)&cgen_var_766, 1 * 8);
9895 uint64_t cgen_var_767;
9896 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_767, 1);
9897 countingStream->write((uint64_t*)&cgen_var_767, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009898 marshal_VkSurfaceCapabilitiesKHR(countingStream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
9899 }
9900 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9901 countingStream->rewind();
9902 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
9903 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
9904 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009905 uint64_t cgen_var_768;
9906 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_768, 1);
9907 stream->write((uint64_t*)&cgen_var_768, 1 * 8);
9908 uint64_t cgen_var_769;
9909 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_769, 1);
9910 stream->write((uint64_t*)&cgen_var_769, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009911 marshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
9912 unmarshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
9913 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
9914 stream->read(&vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009915 countingStream->clearPool();
9916 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009917 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009918 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
9919}
9920
9921VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormatsKHR(
9922 VkPhysicalDevice physicalDevice,
9923 VkSurfaceKHR surface,
9924 uint32_t* pSurfaceFormatCount,
9925 VkSurfaceFormatKHR* pSurfaceFormats)
9926{
9927 auto stream = mImpl->stream();
9928 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009929 auto resources = mImpl->resources();
9930 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009931 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009932 VkPhysicalDevice local_physicalDevice;
9933 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009934 VkSurfaceKHR local_surface;
9935 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009936 countingStream->rewind();
9937 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009938 uint64_t cgen_var_770;
9939 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_770, 1);
9940 countingStream->write((uint64_t*)&cgen_var_770, 1 * 8);
9941 uint64_t cgen_var_771;
9942 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_771, 1);
9943 countingStream->write((uint64_t*)&cgen_var_771, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009944 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009945 uint64_t cgen_var_772 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
9946 countingStream->putBe64(cgen_var_772);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009947 if (pSurfaceFormatCount)
9948 {
9949 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
9950 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009951 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009952 uint64_t cgen_var_773 = (uint64_t)(uintptr_t)pSurfaceFormats;
9953 countingStream->putBe64(cgen_var_773);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009954 if (pSurfaceFormats)
9955 {
9956 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
9957 {
9958 marshal_VkSurfaceFormatKHR(countingStream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
9959 }
9960 }
9961 }
9962 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9963 countingStream->rewind();
9964 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormatsKHR = OP_vkGetPhysicalDeviceSurfaceFormatsKHR;
9965 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
9966 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009967 uint64_t cgen_var_774;
9968 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_774, 1);
9969 stream->write((uint64_t*)&cgen_var_774, 1 * 8);
9970 uint64_t cgen_var_775;
9971 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_775, 1);
9972 stream->write((uint64_t*)&cgen_var_775, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009973 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009974 uint64_t cgen_var_776 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
9975 stream->putBe64(cgen_var_776);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009976 if (pSurfaceFormatCount)
9977 {
9978 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
9979 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009980 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009981 uint64_t cgen_var_777 = (uint64_t)(uintptr_t)pSurfaceFormats;
9982 stream->putBe64(cgen_var_777);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009983 if (pSurfaceFormats)
9984 {
9985 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
9986 {
9987 marshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
9988 }
9989 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009990 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009991 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009992 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009993 if (pSurfaceFormatCount)
9994 {
9995 if (!(check_pSurfaceFormatCount))
9996 {
9997 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
9998 }
9999 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
10000 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010001 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010002 VkSurfaceFormatKHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010003 check_pSurfaceFormats = (VkSurfaceFormatKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010004 if (pSurfaceFormats)
10005 {
10006 if (!(check_pSurfaceFormats))
10007 {
10008 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
10009 }
10010 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
10011 {
10012 unmarshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
10013 }
10014 }
10015 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
10016 stream->read(&vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010017 countingStream->clearPool();
10018 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010019 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010020 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
10021}
10022
10023VkResult VkEncoder::vkGetPhysicalDeviceSurfacePresentModesKHR(
10024 VkPhysicalDevice physicalDevice,
10025 VkSurfaceKHR surface,
10026 uint32_t* pPresentModeCount,
10027 VkPresentModeKHR* pPresentModes)
10028{
10029 auto stream = mImpl->stream();
10030 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010031 auto resources = mImpl->resources();
10032 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010033 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010034 VkPhysicalDevice local_physicalDevice;
10035 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010036 VkSurfaceKHR local_surface;
10037 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010038 countingStream->rewind();
10039 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010040 uint64_t cgen_var_780;
10041 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_780, 1);
10042 countingStream->write((uint64_t*)&cgen_var_780, 1 * 8);
10043 uint64_t cgen_var_781;
10044 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_781, 1);
10045 countingStream->write((uint64_t*)&cgen_var_781, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010046 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010047 uint64_t cgen_var_782 = (uint64_t)(uintptr_t)pPresentModeCount;
10048 countingStream->putBe64(cgen_var_782);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010049 if (pPresentModeCount)
10050 {
10051 countingStream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10052 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010053 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010054 uint64_t cgen_var_783 = (uint64_t)(uintptr_t)pPresentModes;
10055 countingStream->putBe64(cgen_var_783);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010056 if (pPresentModes)
10057 {
10058 countingStream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10059 }
10060 }
10061 uint32_t packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10062 countingStream->rewind();
10063 uint32_t opcode_vkGetPhysicalDeviceSurfacePresentModesKHR = OP_vkGetPhysicalDeviceSurfacePresentModesKHR;
10064 stream->write(&opcode_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
10065 stream->write(&packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010066 uint64_t cgen_var_784;
10067 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_784, 1);
10068 stream->write((uint64_t*)&cgen_var_784, 1 * 8);
10069 uint64_t cgen_var_785;
10070 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_785, 1);
10071 stream->write((uint64_t*)&cgen_var_785, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010072 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010073 uint64_t cgen_var_786 = (uint64_t)(uintptr_t)pPresentModeCount;
10074 stream->putBe64(cgen_var_786);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010075 if (pPresentModeCount)
10076 {
10077 stream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10078 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010079 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010080 uint64_t cgen_var_787 = (uint64_t)(uintptr_t)pPresentModes;
10081 stream->putBe64(cgen_var_787);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010082 if (pPresentModes)
10083 {
10084 stream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10085 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010086 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010087 uint32_t* check_pPresentModeCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010088 check_pPresentModeCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010089 if (pPresentModeCount)
10090 {
10091 if (!(check_pPresentModeCount))
10092 {
10093 fprintf(stderr, "fatal: pPresentModeCount inconsistent between guest and host\n");
10094 }
10095 stream->read((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10096 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010097 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010098 VkPresentModeKHR* check_pPresentModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010099 check_pPresentModes = (VkPresentModeKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010100 if (pPresentModes)
10101 {
10102 if (!(check_pPresentModes))
10103 {
10104 fprintf(stderr, "fatal: pPresentModes inconsistent between guest and host\n");
10105 }
10106 stream->read((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10107 }
10108 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
10109 stream->read(&vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010110 countingStream->clearPool();
10111 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010112 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010113 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
10114}
10115
10116#endif
10117#ifdef VK_KHR_swapchain
10118VkResult VkEncoder::vkCreateSwapchainKHR(
10119 VkDevice device,
10120 const VkSwapchainCreateInfoKHR* pCreateInfo,
10121 const VkAllocationCallbacks* pAllocator,
10122 VkSwapchainKHR* pSwapchain)
10123{
10124 auto stream = mImpl->stream();
10125 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010126 auto resources = mImpl->resources();
10127 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010128 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010129 VkDevice local_device;
10130 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010131 VkSwapchainCreateInfoKHR* local_pCreateInfo;
10132 local_pCreateInfo = nullptr;
10133 if (pCreateInfo)
10134 {
10135 local_pCreateInfo = (VkSwapchainCreateInfoKHR*)pool->alloc(sizeof(const VkSwapchainCreateInfoKHR));
10136 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfo, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
10137 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010138 VkAllocationCallbacks* local_pAllocator;
10139 local_pAllocator = nullptr;
10140 if (pAllocator)
10141 {
10142 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10143 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10144 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010145 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010146 countingStream->rewind();
10147 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010148 uint64_t cgen_var_790;
10149 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_790, 1);
10150 countingStream->write((uint64_t*)&cgen_var_790, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010151 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010152 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010153 uint64_t cgen_var_791 = (uint64_t)(uintptr_t)local_pAllocator;
10154 countingStream->putBe64(cgen_var_791);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010155 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010156 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010157 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010158 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010159 uint64_t cgen_var_792;
10160 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_792, 1);
10161 countingStream->write((uint64_t*)&cgen_var_792, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010162 }
10163 uint32_t packetSize_vkCreateSwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10164 countingStream->rewind();
10165 uint32_t opcode_vkCreateSwapchainKHR = OP_vkCreateSwapchainKHR;
10166 stream->write(&opcode_vkCreateSwapchainKHR, sizeof(uint32_t));
10167 stream->write(&packetSize_vkCreateSwapchainKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010168 uint64_t cgen_var_793;
10169 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_793, 1);
10170 stream->write((uint64_t*)&cgen_var_793, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010171 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010172 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010173 uint64_t cgen_var_794 = (uint64_t)(uintptr_t)local_pAllocator;
10174 stream->putBe64(cgen_var_794);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010175 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010176 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010177 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010178 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010179 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010180 uint64_t cgen_var_795;
10181 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_795, 1);
10182 stream->write((uint64_t*)&cgen_var_795, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010183 stream->setHandleMapping(resources->unwrapMapping());
10184 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010185 uint64_t cgen_var_796;
10186 stream->read((uint64_t*)&cgen_var_796, 8);
10187 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(&cgen_var_796, (VkSwapchainKHR*)pSwapchain, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010188 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010189 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
10190 stream->read(&vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010191 countingStream->clearPool();
10192 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010193 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010194 return vkCreateSwapchainKHR_VkResult_return;
10195}
10196
10197void VkEncoder::vkDestroySwapchainKHR(
10198 VkDevice device,
10199 VkSwapchainKHR swapchain,
10200 const VkAllocationCallbacks* pAllocator)
10201{
10202 auto stream = mImpl->stream();
10203 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010204 auto resources = mImpl->resources();
10205 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010206 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010207 VkDevice local_device;
10208 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010209 VkSwapchainKHR local_swapchain;
10210 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010211 VkAllocationCallbacks* local_pAllocator;
10212 local_pAllocator = nullptr;
10213 if (pAllocator)
10214 {
10215 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10216 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10217 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010218 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010219 countingStream->rewind();
10220 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010221 uint64_t cgen_var_797;
10222 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_797, 1);
10223 countingStream->write((uint64_t*)&cgen_var_797, 1 * 8);
10224 uint64_t cgen_var_798;
10225 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_798, 1);
10226 countingStream->write((uint64_t*)&cgen_var_798, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010227 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010228 uint64_t cgen_var_799 = (uint64_t)(uintptr_t)local_pAllocator;
10229 countingStream->putBe64(cgen_var_799);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010230 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010231 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010232 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010233 }
10234 }
10235 uint32_t packetSize_vkDestroySwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10236 countingStream->rewind();
10237 uint32_t opcode_vkDestroySwapchainKHR = OP_vkDestroySwapchainKHR;
10238 stream->write(&opcode_vkDestroySwapchainKHR, sizeof(uint32_t));
10239 stream->write(&packetSize_vkDestroySwapchainKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010240 uint64_t cgen_var_800;
10241 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_800, 1);
10242 stream->write((uint64_t*)&cgen_var_800, 1 * 8);
10243 uint64_t cgen_var_801;
10244 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_801, 1);
10245 stream->write((uint64_t*)&cgen_var_801, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010246 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010247 uint64_t cgen_var_802 = (uint64_t)(uintptr_t)local_pAllocator;
10248 stream->putBe64(cgen_var_802);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010249 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010250 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010251 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010252 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010253 resources->destroyMapping()->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&swapchain);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010254}
10255
10256VkResult VkEncoder::vkGetSwapchainImagesKHR(
10257 VkDevice device,
10258 VkSwapchainKHR swapchain,
10259 uint32_t* pSwapchainImageCount,
10260 VkImage* pSwapchainImages)
10261{
10262 auto stream = mImpl->stream();
10263 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010264 auto resources = mImpl->resources();
10265 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010266 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010267 VkDevice local_device;
10268 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010269 VkSwapchainKHR local_swapchain;
10270 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010271 countingStream->rewind();
10272 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010273 uint64_t cgen_var_803;
10274 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_803, 1);
10275 countingStream->write((uint64_t*)&cgen_var_803, 1 * 8);
10276 uint64_t cgen_var_804;
10277 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_804, 1);
10278 countingStream->write((uint64_t*)&cgen_var_804, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010279 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010280 uint64_t cgen_var_805 = (uint64_t)(uintptr_t)pSwapchainImageCount;
10281 countingStream->putBe64(cgen_var_805);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010282 if (pSwapchainImageCount)
10283 {
10284 countingStream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
10285 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010286 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010287 uint64_t cgen_var_806 = (uint64_t)(uintptr_t)pSwapchainImages;
10288 countingStream->putBe64(cgen_var_806);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010289 if (pSwapchainImages)
10290 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010291 if ((*(pSwapchainImageCount)))
10292 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010293 uint64_t* cgen_var_807;
10294 countingStream->alloc((void**)&cgen_var_807, (*(pSwapchainImageCount)) * 8);
10295 countingStream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_807, (*(pSwapchainImageCount)));
10296 countingStream->write((uint64_t*)cgen_var_807, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010297 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010298 }
10299 }
10300 uint32_t packetSize_vkGetSwapchainImagesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10301 countingStream->rewind();
10302 uint32_t opcode_vkGetSwapchainImagesKHR = OP_vkGetSwapchainImagesKHR;
10303 stream->write(&opcode_vkGetSwapchainImagesKHR, sizeof(uint32_t));
10304 stream->write(&packetSize_vkGetSwapchainImagesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010305 uint64_t cgen_var_808;
10306 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_808, 1);
10307 stream->write((uint64_t*)&cgen_var_808, 1 * 8);
10308 uint64_t cgen_var_809;
10309 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_809, 1);
10310 stream->write((uint64_t*)&cgen_var_809, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010311 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010312 uint64_t cgen_var_810 = (uint64_t)(uintptr_t)pSwapchainImageCount;
10313 stream->putBe64(cgen_var_810);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010314 if (pSwapchainImageCount)
10315 {
10316 stream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
10317 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010318 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010319 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010320 uint64_t cgen_var_811 = (uint64_t)(uintptr_t)pSwapchainImages;
10321 stream->putBe64(cgen_var_811);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010322 if (pSwapchainImages)
10323 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010324 if ((*(pSwapchainImageCount)))
10325 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010326 uint64_t* cgen_var_812;
10327 stream->alloc((void**)&cgen_var_812, (*(pSwapchainImageCount)) * 8);
10328 stream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_812, (*(pSwapchainImageCount)));
10329 stream->write((uint64_t*)cgen_var_812, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010330 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010331 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010332 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010333 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010334 uint32_t* check_pSwapchainImageCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010335 check_pSwapchainImageCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010336 if (pSwapchainImageCount)
10337 {
10338 if (!(check_pSwapchainImageCount))
10339 {
10340 fprintf(stderr, "fatal: pSwapchainImageCount inconsistent between guest and host\n");
10341 }
10342 stream->read((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
10343 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010344 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010345 VkImage* check_pSwapchainImages;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010346 check_pSwapchainImages = (VkImage*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010347 if (pSwapchainImages)
10348 {
10349 if (!(check_pSwapchainImages))
10350 {
10351 fprintf(stderr, "fatal: pSwapchainImages inconsistent between guest and host\n");
10352 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080010353 if ((*(pSwapchainImageCount)))
10354 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010355 uint64_t* cgen_var_815;
10356 stream->alloc((void**)&cgen_var_815, (*(pSwapchainImageCount)) * 8);
10357 stream->read((uint64_t*)cgen_var_815, (*(pSwapchainImageCount)) * 8);
10358 stream->handleMapping()->mapHandles_u64_VkImage(cgen_var_815, (VkImage*)pSwapchainImages, (*(pSwapchainImageCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010359 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010360 }
10361 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
10362 stream->read(&vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010363 countingStream->clearPool();
10364 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010365 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010366 return vkGetSwapchainImagesKHR_VkResult_return;
10367}
10368
10369VkResult VkEncoder::vkAcquireNextImageKHR(
10370 VkDevice device,
10371 VkSwapchainKHR swapchain,
10372 uint64_t timeout,
10373 VkSemaphore semaphore,
10374 VkFence fence,
10375 uint32_t* pImageIndex)
10376{
10377 auto stream = mImpl->stream();
10378 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010379 auto resources = mImpl->resources();
10380 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010381 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010382 VkDevice local_device;
10383 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010384 VkSwapchainKHR local_swapchain;
10385 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010386 uint64_t local_timeout;
10387 local_timeout = timeout;
10388 VkSemaphore local_semaphore;
10389 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010390 VkFence local_fence;
10391 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010392 countingStream->rewind();
10393 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010394 uint64_t cgen_var_816;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010395 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_816, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010396 countingStream->write((uint64_t*)&cgen_var_816, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010397 uint64_t cgen_var_817;
10398 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_817, 1);
10399 countingStream->write((uint64_t*)&cgen_var_817, 1 * 8);
10400 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
10401 uint64_t cgen_var_818;
10402 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_818, 1);
10403 countingStream->write((uint64_t*)&cgen_var_818, 1 * 8);
10404 uint64_t cgen_var_819;
10405 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_819, 1);
10406 countingStream->write((uint64_t*)&cgen_var_819, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010407 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10408 }
10409 uint32_t packetSize_vkAcquireNextImageKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10410 countingStream->rewind();
10411 uint32_t opcode_vkAcquireNextImageKHR = OP_vkAcquireNextImageKHR;
10412 stream->write(&opcode_vkAcquireNextImageKHR, sizeof(uint32_t));
10413 stream->write(&packetSize_vkAcquireNextImageKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010414 uint64_t cgen_var_820;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010415 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_820, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010416 stream->write((uint64_t*)&cgen_var_820, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010417 uint64_t cgen_var_821;
10418 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_821, 1);
10419 stream->write((uint64_t*)&cgen_var_821, 1 * 8);
10420 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
10421 uint64_t cgen_var_822;
10422 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_822, 1);
10423 stream->write((uint64_t*)&cgen_var_822, 1 * 8);
10424 uint64_t cgen_var_823;
10425 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_823, 1);
10426 stream->write((uint64_t*)&cgen_var_823, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010427 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10428 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
10429 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
10430 stream->read(&vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010431 countingStream->clearPool();
10432 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010433 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010434 return vkAcquireNextImageKHR_VkResult_return;
10435}
10436
10437VkResult VkEncoder::vkQueuePresentKHR(
10438 VkQueue queue,
10439 const VkPresentInfoKHR* pPresentInfo)
10440{
10441 auto stream = mImpl->stream();
10442 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010443 auto resources = mImpl->resources();
10444 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010445 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010446 VkQueue local_queue;
10447 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010448 VkPresentInfoKHR* local_pPresentInfo;
10449 local_pPresentInfo = nullptr;
10450 if (pPresentInfo)
10451 {
10452 local_pPresentInfo = (VkPresentInfoKHR*)pool->alloc(sizeof(const VkPresentInfoKHR));
10453 deepcopy_VkPresentInfoKHR(pool, pPresentInfo, (VkPresentInfoKHR*)(local_pPresentInfo));
10454 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010455 countingStream->rewind();
10456 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010457 uint64_t cgen_var_824;
10458 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_824, 1);
10459 countingStream->write((uint64_t*)&cgen_var_824, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010460 marshal_VkPresentInfoKHR(countingStream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010461 }
10462 uint32_t packetSize_vkQueuePresentKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10463 countingStream->rewind();
10464 uint32_t opcode_vkQueuePresentKHR = OP_vkQueuePresentKHR;
10465 stream->write(&opcode_vkQueuePresentKHR, sizeof(uint32_t));
10466 stream->write(&packetSize_vkQueuePresentKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010467 uint64_t cgen_var_825;
10468 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_825, 1);
10469 stream->write((uint64_t*)&cgen_var_825, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010470 marshal_VkPresentInfoKHR(stream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010471 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
10472 stream->read(&vkQueuePresentKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010473 countingStream->clearPool();
10474 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010475 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010476 return vkQueuePresentKHR_VkResult_return;
10477}
10478
10479VkResult VkEncoder::vkGetDeviceGroupPresentCapabilitiesKHR(
10480 VkDevice device,
10481 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
10482{
10483 auto stream = mImpl->stream();
10484 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010485 auto resources = mImpl->resources();
10486 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010487 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010488 VkDevice local_device;
10489 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010490 countingStream->rewind();
10491 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010492 uint64_t cgen_var_826;
10493 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_826, 1);
10494 countingStream->write((uint64_t*)&cgen_var_826, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010495 marshal_VkDeviceGroupPresentCapabilitiesKHR(countingStream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
10496 }
10497 uint32_t packetSize_vkGetDeviceGroupPresentCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10498 countingStream->rewind();
10499 uint32_t opcode_vkGetDeviceGroupPresentCapabilitiesKHR = OP_vkGetDeviceGroupPresentCapabilitiesKHR;
10500 stream->write(&opcode_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
10501 stream->write(&packetSize_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010502 uint64_t cgen_var_827;
10503 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_827, 1);
10504 stream->write((uint64_t*)&cgen_var_827, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010505 marshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
10506 unmarshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
10507 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
10508 stream->read(&vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010509 countingStream->clearPool();
10510 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010511 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010512 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
10513}
10514
10515VkResult VkEncoder::vkGetDeviceGroupSurfacePresentModesKHR(
10516 VkDevice device,
10517 VkSurfaceKHR surface,
10518 VkDeviceGroupPresentModeFlagsKHR* pModes)
10519{
10520 auto stream = mImpl->stream();
10521 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010522 auto resources = mImpl->resources();
10523 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010524 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010525 VkDevice local_device;
10526 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010527 VkSurfaceKHR local_surface;
10528 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010529 countingStream->rewind();
10530 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010531 uint64_t cgen_var_828;
10532 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_828, 1);
10533 countingStream->write((uint64_t*)&cgen_var_828, 1 * 8);
10534 uint64_t cgen_var_829;
10535 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_829, 1);
10536 countingStream->write((uint64_t*)&cgen_var_829, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010537 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010538 uint64_t cgen_var_830 = (uint64_t)(uintptr_t)pModes;
10539 countingStream->putBe64(cgen_var_830);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010540 if (pModes)
10541 {
10542 countingStream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
10543 }
10544 }
10545 uint32_t packetSize_vkGetDeviceGroupSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10546 countingStream->rewind();
10547 uint32_t opcode_vkGetDeviceGroupSurfacePresentModesKHR = OP_vkGetDeviceGroupSurfacePresentModesKHR;
10548 stream->write(&opcode_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
10549 stream->write(&packetSize_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010550 uint64_t cgen_var_831;
10551 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_831, 1);
10552 stream->write((uint64_t*)&cgen_var_831, 1 * 8);
10553 uint64_t cgen_var_832;
10554 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_832, 1);
10555 stream->write((uint64_t*)&cgen_var_832, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010556 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010557 uint64_t cgen_var_833 = (uint64_t)(uintptr_t)pModes;
10558 stream->putBe64(cgen_var_833);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010559 if (pModes)
10560 {
10561 stream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
10562 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010563 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010564 VkDeviceGroupPresentModeFlagsKHR* check_pModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010565 check_pModes = (VkDeviceGroupPresentModeFlagsKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010566 if (pModes)
10567 {
10568 if (!(check_pModes))
10569 {
10570 fprintf(stderr, "fatal: pModes inconsistent between guest and host\n");
10571 }
10572 stream->read((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
10573 }
10574 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
10575 stream->read(&vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010576 countingStream->clearPool();
10577 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010578 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010579 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
10580}
10581
10582VkResult VkEncoder::vkGetPhysicalDevicePresentRectanglesKHR(
10583 VkPhysicalDevice physicalDevice,
10584 VkSurfaceKHR surface,
10585 uint32_t* pRectCount,
10586 VkRect2D* pRects)
10587{
10588 auto stream = mImpl->stream();
10589 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010590 auto resources = mImpl->resources();
10591 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010592 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010593 VkPhysicalDevice local_physicalDevice;
10594 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010595 VkSurfaceKHR local_surface;
10596 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010597 countingStream->rewind();
10598 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010599 uint64_t cgen_var_835;
10600 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_835, 1);
10601 countingStream->write((uint64_t*)&cgen_var_835, 1 * 8);
10602 uint64_t cgen_var_836;
10603 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_836, 1);
10604 countingStream->write((uint64_t*)&cgen_var_836, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010605 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010606 uint64_t cgen_var_837 = (uint64_t)(uintptr_t)pRectCount;
10607 countingStream->putBe64(cgen_var_837);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010608 if (pRectCount)
10609 {
10610 countingStream->write((uint32_t*)pRectCount, sizeof(uint32_t));
10611 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010612 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010613 uint64_t cgen_var_838 = (uint64_t)(uintptr_t)pRects;
10614 countingStream->putBe64(cgen_var_838);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010615 if (pRects)
10616 {
10617 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
10618 {
10619 marshal_VkRect2D(countingStream, (VkRect2D*)(pRects + i));
10620 }
10621 }
10622 }
10623 uint32_t packetSize_vkGetPhysicalDevicePresentRectanglesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10624 countingStream->rewind();
10625 uint32_t opcode_vkGetPhysicalDevicePresentRectanglesKHR = OP_vkGetPhysicalDevicePresentRectanglesKHR;
10626 stream->write(&opcode_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
10627 stream->write(&packetSize_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010628 uint64_t cgen_var_839;
10629 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_839, 1);
10630 stream->write((uint64_t*)&cgen_var_839, 1 * 8);
10631 uint64_t cgen_var_840;
10632 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_840, 1);
10633 stream->write((uint64_t*)&cgen_var_840, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010634 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010635 uint64_t cgen_var_841 = (uint64_t)(uintptr_t)pRectCount;
10636 stream->putBe64(cgen_var_841);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010637 if (pRectCount)
10638 {
10639 stream->write((uint32_t*)pRectCount, sizeof(uint32_t));
10640 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010641 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010642 uint64_t cgen_var_842 = (uint64_t)(uintptr_t)pRects;
10643 stream->putBe64(cgen_var_842);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010644 if (pRects)
10645 {
10646 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
10647 {
10648 marshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
10649 }
10650 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010651 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010652 uint32_t* check_pRectCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010653 check_pRectCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010654 if (pRectCount)
10655 {
10656 if (!(check_pRectCount))
10657 {
10658 fprintf(stderr, "fatal: pRectCount inconsistent between guest and host\n");
10659 }
10660 stream->read((uint32_t*)pRectCount, sizeof(uint32_t));
10661 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010662 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010663 VkRect2D* check_pRects;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010664 check_pRects = (VkRect2D*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010665 if (pRects)
10666 {
10667 if (!(check_pRects))
10668 {
10669 fprintf(stderr, "fatal: pRects inconsistent between guest and host\n");
10670 }
10671 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
10672 {
10673 unmarshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
10674 }
10675 }
10676 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
10677 stream->read(&vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010678 countingStream->clearPool();
10679 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010680 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010681 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
10682}
10683
10684VkResult VkEncoder::vkAcquireNextImage2KHR(
10685 VkDevice device,
10686 const VkAcquireNextImageInfoKHR* pAcquireInfo,
10687 uint32_t* pImageIndex)
10688{
10689 auto stream = mImpl->stream();
10690 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010691 auto resources = mImpl->resources();
10692 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010693 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010694 VkDevice local_device;
10695 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010696 VkAcquireNextImageInfoKHR* local_pAcquireInfo;
10697 local_pAcquireInfo = nullptr;
10698 if (pAcquireInfo)
10699 {
10700 local_pAcquireInfo = (VkAcquireNextImageInfoKHR*)pool->alloc(sizeof(const VkAcquireNextImageInfoKHR));
10701 deepcopy_VkAcquireNextImageInfoKHR(pool, pAcquireInfo, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
10702 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010703 countingStream->rewind();
10704 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010705 uint64_t cgen_var_845;
10706 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_845, 1);
10707 countingStream->write((uint64_t*)&cgen_var_845, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010708 marshal_VkAcquireNextImageInfoKHR(countingStream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010709 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10710 }
10711 uint32_t packetSize_vkAcquireNextImage2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10712 countingStream->rewind();
10713 uint32_t opcode_vkAcquireNextImage2KHR = OP_vkAcquireNextImage2KHR;
10714 stream->write(&opcode_vkAcquireNextImage2KHR, sizeof(uint32_t));
10715 stream->write(&packetSize_vkAcquireNextImage2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010716 uint64_t cgen_var_846;
10717 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_846, 1);
10718 stream->write((uint64_t*)&cgen_var_846, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010719 marshal_VkAcquireNextImageInfoKHR(stream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010720 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10721 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
10722 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
10723 stream->read(&vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010724 countingStream->clearPool();
10725 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010726 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010727 return vkAcquireNextImage2KHR_VkResult_return;
10728}
10729
10730#endif
10731#ifdef VK_KHR_display
10732VkResult VkEncoder::vkGetPhysicalDeviceDisplayPropertiesKHR(
10733 VkPhysicalDevice physicalDevice,
10734 uint32_t* pPropertyCount,
10735 VkDisplayPropertiesKHR* pProperties)
10736{
10737 auto stream = mImpl->stream();
10738 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010739 auto resources = mImpl->resources();
10740 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010741 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010742 VkPhysicalDevice local_physicalDevice;
10743 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010744 countingStream->rewind();
10745 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010746 uint64_t cgen_var_847;
10747 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_847, 1);
10748 countingStream->write((uint64_t*)&cgen_var_847, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010749 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010750 uint64_t cgen_var_848 = (uint64_t)(uintptr_t)pPropertyCount;
10751 countingStream->putBe64(cgen_var_848);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010752 if (pPropertyCount)
10753 {
10754 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10755 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010756 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010757 uint64_t cgen_var_849 = (uint64_t)(uintptr_t)pProperties;
10758 countingStream->putBe64(cgen_var_849);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010759 if (pProperties)
10760 {
10761 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10762 {
10763 marshal_VkDisplayPropertiesKHR(countingStream, (VkDisplayPropertiesKHR*)(pProperties + i));
10764 }
10765 }
10766 }
10767 uint32_t packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10768 countingStream->rewind();
10769 uint32_t opcode_vkGetPhysicalDeviceDisplayPropertiesKHR = OP_vkGetPhysicalDeviceDisplayPropertiesKHR;
10770 stream->write(&opcode_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
10771 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010772 uint64_t cgen_var_850;
10773 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_850, 1);
10774 stream->write((uint64_t*)&cgen_var_850, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010775 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010776 uint64_t cgen_var_851 = (uint64_t)(uintptr_t)pPropertyCount;
10777 stream->putBe64(cgen_var_851);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010778 if (pPropertyCount)
10779 {
10780 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10781 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010782 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010783 uint64_t cgen_var_852 = (uint64_t)(uintptr_t)pProperties;
10784 stream->putBe64(cgen_var_852);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010785 if (pProperties)
10786 {
10787 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10788 {
10789 marshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
10790 }
10791 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010792 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010793 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010794 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010795 if (pPropertyCount)
10796 {
10797 if (!(check_pPropertyCount))
10798 {
10799 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
10800 }
10801 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
10802 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010803 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010804 VkDisplayPropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010805 check_pProperties = (VkDisplayPropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010806 if (pProperties)
10807 {
10808 if (!(check_pProperties))
10809 {
10810 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
10811 }
10812 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10813 {
10814 unmarshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
10815 }
10816 }
10817 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
10818 stream->read(&vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010819 countingStream->clearPool();
10820 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010821 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010822 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
10823}
10824
10825VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
10826 VkPhysicalDevice physicalDevice,
10827 uint32_t* pPropertyCount,
10828 VkDisplayPlanePropertiesKHR* pProperties)
10829{
10830 auto stream = mImpl->stream();
10831 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010832 auto resources = mImpl->resources();
10833 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010834 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010835 VkPhysicalDevice local_physicalDevice;
10836 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010837 countingStream->rewind();
10838 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010839 uint64_t cgen_var_855;
10840 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_855, 1);
10841 countingStream->write((uint64_t*)&cgen_var_855, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010842 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010843 uint64_t cgen_var_856 = (uint64_t)(uintptr_t)pPropertyCount;
10844 countingStream->putBe64(cgen_var_856);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010845 if (pPropertyCount)
10846 {
10847 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10848 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010849 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010850 uint64_t cgen_var_857 = (uint64_t)(uintptr_t)pProperties;
10851 countingStream->putBe64(cgen_var_857);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010852 if (pProperties)
10853 {
10854 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10855 {
10856 marshal_VkDisplayPlanePropertiesKHR(countingStream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
10857 }
10858 }
10859 }
10860 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10861 countingStream->rewind();
10862 uint32_t opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = OP_vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
10863 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
10864 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010865 uint64_t cgen_var_858;
10866 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_858, 1);
10867 stream->write((uint64_t*)&cgen_var_858, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010868 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010869 uint64_t cgen_var_859 = (uint64_t)(uintptr_t)pPropertyCount;
10870 stream->putBe64(cgen_var_859);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010871 if (pPropertyCount)
10872 {
10873 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10874 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010875 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010876 uint64_t cgen_var_860 = (uint64_t)(uintptr_t)pProperties;
10877 stream->putBe64(cgen_var_860);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010878 if (pProperties)
10879 {
10880 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10881 {
10882 marshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
10883 }
10884 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010885 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010886 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010887 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010888 if (pPropertyCount)
10889 {
10890 if (!(check_pPropertyCount))
10891 {
10892 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
10893 }
10894 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
10895 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010896 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010897 VkDisplayPlanePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010898 check_pProperties = (VkDisplayPlanePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010899 if (pProperties)
10900 {
10901 if (!(check_pProperties))
10902 {
10903 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
10904 }
10905 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10906 {
10907 unmarshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
10908 }
10909 }
10910 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
10911 stream->read(&vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010912 countingStream->clearPool();
10913 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010914 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010915 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
10916}
10917
10918VkResult VkEncoder::vkGetDisplayPlaneSupportedDisplaysKHR(
10919 VkPhysicalDevice physicalDevice,
10920 uint32_t planeIndex,
10921 uint32_t* pDisplayCount,
10922 VkDisplayKHR* pDisplays)
10923{
10924 auto stream = mImpl->stream();
10925 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010926 auto resources = mImpl->resources();
10927 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010928 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010929 VkPhysicalDevice local_physicalDevice;
10930 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010931 uint32_t local_planeIndex;
10932 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010933 countingStream->rewind();
10934 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010935 uint64_t cgen_var_863;
10936 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_863, 1);
10937 countingStream->write((uint64_t*)&cgen_var_863, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010938 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010939 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010940 uint64_t cgen_var_864 = (uint64_t)(uintptr_t)pDisplayCount;
10941 countingStream->putBe64(cgen_var_864);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010942 if (pDisplayCount)
10943 {
10944 countingStream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
10945 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010946 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010947 uint64_t cgen_var_865 = (uint64_t)(uintptr_t)pDisplays;
10948 countingStream->putBe64(cgen_var_865);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010949 if (pDisplays)
10950 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010951 if ((*(pDisplayCount)))
10952 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010953 uint64_t* cgen_var_866;
10954 countingStream->alloc((void**)&cgen_var_866, (*(pDisplayCount)) * 8);
10955 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_866, (*(pDisplayCount)));
10956 countingStream->write((uint64_t*)cgen_var_866, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010957 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010958 }
10959 }
10960 uint32_t packetSize_vkGetDisplayPlaneSupportedDisplaysKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10961 countingStream->rewind();
10962 uint32_t opcode_vkGetDisplayPlaneSupportedDisplaysKHR = OP_vkGetDisplayPlaneSupportedDisplaysKHR;
10963 stream->write(&opcode_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
10964 stream->write(&packetSize_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010965 uint64_t cgen_var_867;
10966 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_867, 1);
10967 stream->write((uint64_t*)&cgen_var_867, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010968 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010969 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010970 uint64_t cgen_var_868 = (uint64_t)(uintptr_t)pDisplayCount;
10971 stream->putBe64(cgen_var_868);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010972 if (pDisplayCount)
10973 {
10974 stream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
10975 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010976 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010977 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010978 uint64_t cgen_var_869 = (uint64_t)(uintptr_t)pDisplays;
10979 stream->putBe64(cgen_var_869);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010980 if (pDisplays)
10981 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010982 if ((*(pDisplayCount)))
10983 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010984 uint64_t* cgen_var_870;
10985 stream->alloc((void**)&cgen_var_870, (*(pDisplayCount)) * 8);
10986 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_870, (*(pDisplayCount)));
10987 stream->write((uint64_t*)cgen_var_870, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010988 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010989 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010990 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010991 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010992 uint32_t* check_pDisplayCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010993 check_pDisplayCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010994 if (pDisplayCount)
10995 {
10996 if (!(check_pDisplayCount))
10997 {
10998 fprintf(stderr, "fatal: pDisplayCount inconsistent between guest and host\n");
10999 }
11000 stream->read((uint32_t*)pDisplayCount, sizeof(uint32_t));
11001 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011002 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011003 VkDisplayKHR* check_pDisplays;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011004 check_pDisplays = (VkDisplayKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011005 if (pDisplays)
11006 {
11007 if (!(check_pDisplays))
11008 {
11009 fprintf(stderr, "fatal: pDisplays inconsistent between guest and host\n");
11010 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080011011 if ((*(pDisplayCount)))
11012 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011013 uint64_t* cgen_var_873;
11014 stream->alloc((void**)&cgen_var_873, (*(pDisplayCount)) * 8);
11015 stream->read((uint64_t*)cgen_var_873, (*(pDisplayCount)) * 8);
11016 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(cgen_var_873, (VkDisplayKHR*)pDisplays, (*(pDisplayCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011017 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011018 }
11019 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
11020 stream->read(&vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011021 countingStream->clearPool();
11022 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011023 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011024 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
11025}
11026
11027VkResult VkEncoder::vkGetDisplayModePropertiesKHR(
11028 VkPhysicalDevice physicalDevice,
11029 VkDisplayKHR display,
11030 uint32_t* pPropertyCount,
11031 VkDisplayModePropertiesKHR* pProperties)
11032{
11033 auto stream = mImpl->stream();
11034 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011035 auto resources = mImpl->resources();
11036 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011037 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011038 VkPhysicalDevice local_physicalDevice;
11039 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011040 VkDisplayKHR local_display;
11041 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011042 countingStream->rewind();
11043 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011044 uint64_t cgen_var_874;
11045 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_874, 1);
11046 countingStream->write((uint64_t*)&cgen_var_874, 1 * 8);
11047 uint64_t cgen_var_875;
11048 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_875, 1);
11049 countingStream->write((uint64_t*)&cgen_var_875, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011050 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011051 uint64_t cgen_var_876 = (uint64_t)(uintptr_t)pPropertyCount;
11052 countingStream->putBe64(cgen_var_876);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011053 if (pPropertyCount)
11054 {
11055 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11056 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011057 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011058 uint64_t cgen_var_877 = (uint64_t)(uintptr_t)pProperties;
11059 countingStream->putBe64(cgen_var_877);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011060 if (pProperties)
11061 {
11062 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11063 {
11064 marshal_VkDisplayModePropertiesKHR(countingStream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11065 }
11066 }
11067 }
11068 uint32_t packetSize_vkGetDisplayModePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11069 countingStream->rewind();
11070 uint32_t opcode_vkGetDisplayModePropertiesKHR = OP_vkGetDisplayModePropertiesKHR;
11071 stream->write(&opcode_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
11072 stream->write(&packetSize_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011073 uint64_t cgen_var_878;
11074 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_878, 1);
11075 stream->write((uint64_t*)&cgen_var_878, 1 * 8);
11076 uint64_t cgen_var_879;
11077 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_879, 1);
11078 stream->write((uint64_t*)&cgen_var_879, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011079 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011080 uint64_t cgen_var_880 = (uint64_t)(uintptr_t)pPropertyCount;
11081 stream->putBe64(cgen_var_880);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011082 if (pPropertyCount)
11083 {
11084 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11085 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011086 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011087 uint64_t cgen_var_881 = (uint64_t)(uintptr_t)pProperties;
11088 stream->putBe64(cgen_var_881);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011089 if (pProperties)
11090 {
11091 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11092 {
11093 marshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11094 }
11095 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011096 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011097 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011098 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011099 if (pPropertyCount)
11100 {
11101 if (!(check_pPropertyCount))
11102 {
11103 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
11104 }
11105 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
11106 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011107 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011108 VkDisplayModePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011109 check_pProperties = (VkDisplayModePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011110 if (pProperties)
11111 {
11112 if (!(check_pProperties))
11113 {
11114 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
11115 }
11116 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11117 {
11118 unmarshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11119 }
11120 }
11121 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
11122 stream->read(&vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011123 countingStream->clearPool();
11124 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011125 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011126 return vkGetDisplayModePropertiesKHR_VkResult_return;
11127}
11128
11129VkResult VkEncoder::vkCreateDisplayModeKHR(
11130 VkPhysicalDevice physicalDevice,
11131 VkDisplayKHR display,
11132 const VkDisplayModeCreateInfoKHR* pCreateInfo,
11133 const VkAllocationCallbacks* pAllocator,
11134 VkDisplayModeKHR* pMode)
11135{
11136 auto stream = mImpl->stream();
11137 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011138 auto resources = mImpl->resources();
11139 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011140 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011141 VkPhysicalDevice local_physicalDevice;
11142 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011143 VkDisplayKHR local_display;
11144 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011145 VkDisplayModeCreateInfoKHR* local_pCreateInfo;
11146 local_pCreateInfo = nullptr;
11147 if (pCreateInfo)
11148 {
11149 local_pCreateInfo = (VkDisplayModeCreateInfoKHR*)pool->alloc(sizeof(const VkDisplayModeCreateInfoKHR));
11150 deepcopy_VkDisplayModeCreateInfoKHR(pool, pCreateInfo, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
11151 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011152 VkAllocationCallbacks* local_pAllocator;
11153 local_pAllocator = nullptr;
11154 if (pAllocator)
11155 {
11156 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11157 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11158 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011159 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011160 countingStream->rewind();
11161 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011162 uint64_t cgen_var_884;
11163 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_884, 1);
11164 countingStream->write((uint64_t*)&cgen_var_884, 1 * 8);
11165 uint64_t cgen_var_885;
11166 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_885, 1);
11167 countingStream->write((uint64_t*)&cgen_var_885, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011168 marshal_VkDisplayModeCreateInfoKHR(countingStream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011169 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011170 uint64_t cgen_var_886 = (uint64_t)(uintptr_t)local_pAllocator;
11171 countingStream->putBe64(cgen_var_886);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011172 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011173 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011174 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011175 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011176 uint64_t cgen_var_887;
11177 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_887, 1);
11178 countingStream->write((uint64_t*)&cgen_var_887, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011179 }
11180 uint32_t packetSize_vkCreateDisplayModeKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11181 countingStream->rewind();
11182 uint32_t opcode_vkCreateDisplayModeKHR = OP_vkCreateDisplayModeKHR;
11183 stream->write(&opcode_vkCreateDisplayModeKHR, sizeof(uint32_t));
11184 stream->write(&packetSize_vkCreateDisplayModeKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011185 uint64_t cgen_var_888;
11186 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_888, 1);
11187 stream->write((uint64_t*)&cgen_var_888, 1 * 8);
11188 uint64_t cgen_var_889;
11189 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_889, 1);
11190 stream->write((uint64_t*)&cgen_var_889, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011191 marshal_VkDisplayModeCreateInfoKHR(stream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011192 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011193 uint64_t cgen_var_890 = (uint64_t)(uintptr_t)local_pAllocator;
11194 stream->putBe64(cgen_var_890);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011195 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011196 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011197 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011198 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011199 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011200 uint64_t cgen_var_891;
11201 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_891, 1);
11202 stream->write((uint64_t*)&cgen_var_891, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011203 stream->setHandleMapping(resources->unwrapMapping());
11204 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011205 uint64_t cgen_var_892;
11206 stream->read((uint64_t*)&cgen_var_892, 8);
11207 stream->handleMapping()->mapHandles_u64_VkDisplayModeKHR(&cgen_var_892, (VkDisplayModeKHR*)pMode, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011208 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011209 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
11210 stream->read(&vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011211 countingStream->clearPool();
11212 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011213 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011214 return vkCreateDisplayModeKHR_VkResult_return;
11215}
11216
11217VkResult VkEncoder::vkGetDisplayPlaneCapabilitiesKHR(
11218 VkPhysicalDevice physicalDevice,
11219 VkDisplayModeKHR mode,
11220 uint32_t planeIndex,
11221 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
11222{
11223 auto stream = mImpl->stream();
11224 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011225 auto resources = mImpl->resources();
11226 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011227 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011228 VkPhysicalDevice local_physicalDevice;
11229 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011230 VkDisplayModeKHR local_mode;
11231 local_mode = mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011232 uint32_t local_planeIndex;
11233 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011234 countingStream->rewind();
11235 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011236 uint64_t cgen_var_893;
11237 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_893, 1);
11238 countingStream->write((uint64_t*)&cgen_var_893, 1 * 8);
11239 uint64_t cgen_var_894;
11240 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_894, 1);
11241 countingStream->write((uint64_t*)&cgen_var_894, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011242 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011243 marshal_VkDisplayPlaneCapabilitiesKHR(countingStream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
11244 }
11245 uint32_t packetSize_vkGetDisplayPlaneCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11246 countingStream->rewind();
11247 uint32_t opcode_vkGetDisplayPlaneCapabilitiesKHR = OP_vkGetDisplayPlaneCapabilitiesKHR;
11248 stream->write(&opcode_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
11249 stream->write(&packetSize_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011250 uint64_t cgen_var_895;
11251 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_895, 1);
11252 stream->write((uint64_t*)&cgen_var_895, 1 * 8);
11253 uint64_t cgen_var_896;
11254 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_896, 1);
11255 stream->write((uint64_t*)&cgen_var_896, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011256 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011257 marshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
11258 unmarshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
11259 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
11260 stream->read(&vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011261 countingStream->clearPool();
11262 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011263 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011264 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
11265}
11266
11267VkResult VkEncoder::vkCreateDisplayPlaneSurfaceKHR(
11268 VkInstance instance,
11269 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
11270 const VkAllocationCallbacks* pAllocator,
11271 VkSurfaceKHR* pSurface)
11272{
11273 auto stream = mImpl->stream();
11274 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011275 auto resources = mImpl->resources();
11276 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011277 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011278 VkInstance local_instance;
11279 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011280 VkDisplaySurfaceCreateInfoKHR* local_pCreateInfo;
11281 local_pCreateInfo = nullptr;
11282 if (pCreateInfo)
11283 {
11284 local_pCreateInfo = (VkDisplaySurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkDisplaySurfaceCreateInfoKHR));
11285 deepcopy_VkDisplaySurfaceCreateInfoKHR(pool, pCreateInfo, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
11286 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011287 VkAllocationCallbacks* local_pAllocator;
11288 local_pAllocator = nullptr;
11289 if (pAllocator)
11290 {
11291 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11292 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11293 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011294 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011295 countingStream->rewind();
11296 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011297 uint64_t cgen_var_897;
11298 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_897, 1);
11299 countingStream->write((uint64_t*)&cgen_var_897, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011300 marshal_VkDisplaySurfaceCreateInfoKHR(countingStream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011301 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011302 uint64_t cgen_var_898 = (uint64_t)(uintptr_t)local_pAllocator;
11303 countingStream->putBe64(cgen_var_898);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011304 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011305 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011306 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011307 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011308 uint64_t cgen_var_899;
11309 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_899, 1);
11310 countingStream->write((uint64_t*)&cgen_var_899, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011311 }
11312 uint32_t packetSize_vkCreateDisplayPlaneSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11313 countingStream->rewind();
11314 uint32_t opcode_vkCreateDisplayPlaneSurfaceKHR = OP_vkCreateDisplayPlaneSurfaceKHR;
11315 stream->write(&opcode_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
11316 stream->write(&packetSize_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011317 uint64_t cgen_var_900;
11318 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_900, 1);
11319 stream->write((uint64_t*)&cgen_var_900, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011320 marshal_VkDisplaySurfaceCreateInfoKHR(stream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011321 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011322 uint64_t cgen_var_901 = (uint64_t)(uintptr_t)local_pAllocator;
11323 stream->putBe64(cgen_var_901);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011324 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011325 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011326 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011327 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011328 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011329 uint64_t cgen_var_902;
11330 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_902, 1);
11331 stream->write((uint64_t*)&cgen_var_902, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011332 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011333 uint64_t cgen_var_903;
11334 stream->read((uint64_t*)&cgen_var_903, 8);
11335 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_903, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011336 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
11337 stream->read(&vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011338 countingStream->clearPool();
11339 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011340 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011341 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
11342}
11343
11344#endif
11345#ifdef VK_KHR_display_swapchain
11346VkResult VkEncoder::vkCreateSharedSwapchainsKHR(
11347 VkDevice device,
11348 uint32_t swapchainCount,
11349 const VkSwapchainCreateInfoKHR* pCreateInfos,
11350 const VkAllocationCallbacks* pAllocator,
11351 VkSwapchainKHR* pSwapchains)
11352{
11353 auto stream = mImpl->stream();
11354 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011355 auto resources = mImpl->resources();
11356 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011357 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011358 VkDevice local_device;
11359 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011360 uint32_t local_swapchainCount;
11361 local_swapchainCount = swapchainCount;
11362 VkSwapchainCreateInfoKHR* local_pCreateInfos;
11363 local_pCreateInfos = nullptr;
11364 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011365 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011366 local_pCreateInfos = (VkSwapchainCreateInfoKHR*)pool->alloc(((swapchainCount)) * sizeof(const VkSwapchainCreateInfoKHR));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011367 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
11368 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011369 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfos + i, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011370 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011371 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011372 VkAllocationCallbacks* local_pAllocator;
11373 local_pAllocator = nullptr;
11374 if (pAllocator)
11375 {
11376 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11377 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11378 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011379 local_pAllocator = nullptr;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011380 countingStream->rewind();
11381 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011382 uint64_t cgen_var_904;
11383 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_904, 1);
11384 countingStream->write((uint64_t*)&cgen_var_904, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011385 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
11386 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
11387 {
11388 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
11389 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011390 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011391 uint64_t cgen_var_905 = (uint64_t)(uintptr_t)local_pAllocator;
11392 countingStream->putBe64(cgen_var_905);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011393 if (local_pAllocator)
11394 {
11395 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011396 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080011397 if (((swapchainCount)))
11398 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011399 uint64_t* cgen_var_906;
11400 countingStream->alloc((void**)&cgen_var_906, ((swapchainCount)) * 8);
11401 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_906, ((swapchainCount)));
11402 countingStream->write((uint64_t*)cgen_var_906, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011403 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011404 }
11405 uint32_t packetSize_vkCreateSharedSwapchainsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11406 countingStream->rewind();
11407 uint32_t opcode_vkCreateSharedSwapchainsKHR = OP_vkCreateSharedSwapchainsKHR;
11408 stream->write(&opcode_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
11409 stream->write(&packetSize_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011410 uint64_t cgen_var_907;
11411 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_907, 1);
11412 stream->write((uint64_t*)&cgen_var_907, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011413 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011414 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
11415 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011416 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011417 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011418 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011419 uint64_t cgen_var_908 = (uint64_t)(uintptr_t)local_pAllocator;
11420 stream->putBe64(cgen_var_908);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011421 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011422 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011423 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011424 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011425 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -080011426 if (((swapchainCount)))
11427 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011428 uint64_t* cgen_var_909;
11429 stream->alloc((void**)&cgen_var_909, ((swapchainCount)) * 8);
11430 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_909, ((swapchainCount)));
11431 stream->write((uint64_t*)cgen_var_909, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011432 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011433 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -080011434 if (((swapchainCount)))
11435 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011436 uint64_t* cgen_var_910;
11437 stream->alloc((void**)&cgen_var_910, ((swapchainCount)) * 8);
11438 stream->read((uint64_t*)cgen_var_910, ((swapchainCount)) * 8);
11439 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(cgen_var_910, (VkSwapchainKHR*)pSwapchains, ((swapchainCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011440 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011441 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
11442 stream->read(&vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011443 countingStream->clearPool();
11444 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011445 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011446 return vkCreateSharedSwapchainsKHR_VkResult_return;
11447}
11448
11449#endif
11450#ifdef VK_KHR_xlib_surface
11451VkResult VkEncoder::vkCreateXlibSurfaceKHR(
11452 VkInstance instance,
11453 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
11454 const VkAllocationCallbacks* pAllocator,
11455 VkSurfaceKHR* pSurface)
11456{
11457 auto stream = mImpl->stream();
11458 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011459 auto resources = mImpl->resources();
11460 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011461 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011462 VkInstance local_instance;
11463 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011464 VkXlibSurfaceCreateInfoKHR* local_pCreateInfo;
11465 local_pCreateInfo = nullptr;
11466 if (pCreateInfo)
11467 {
11468 local_pCreateInfo = (VkXlibSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXlibSurfaceCreateInfoKHR));
11469 deepcopy_VkXlibSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
11470 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011471 VkAllocationCallbacks* local_pAllocator;
11472 local_pAllocator = nullptr;
11473 if (pAllocator)
11474 {
11475 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11476 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11477 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011478 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011479 countingStream->rewind();
11480 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011481 uint64_t cgen_var_911;
11482 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_911, 1);
11483 countingStream->write((uint64_t*)&cgen_var_911, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011484 marshal_VkXlibSurfaceCreateInfoKHR(countingStream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011485 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011486 uint64_t cgen_var_912 = (uint64_t)(uintptr_t)local_pAllocator;
11487 countingStream->putBe64(cgen_var_912);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011488 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011489 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011490 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011491 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011492 uint64_t cgen_var_913;
11493 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_913, 1);
11494 countingStream->write((uint64_t*)&cgen_var_913, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011495 }
11496 uint32_t packetSize_vkCreateXlibSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11497 countingStream->rewind();
11498 uint32_t opcode_vkCreateXlibSurfaceKHR = OP_vkCreateXlibSurfaceKHR;
11499 stream->write(&opcode_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
11500 stream->write(&packetSize_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011501 uint64_t cgen_var_914;
11502 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_914, 1);
11503 stream->write((uint64_t*)&cgen_var_914, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011504 marshal_VkXlibSurfaceCreateInfoKHR(stream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011505 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011506 uint64_t cgen_var_915 = (uint64_t)(uintptr_t)local_pAllocator;
11507 stream->putBe64(cgen_var_915);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011508 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011509 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011510 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011511 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011512 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011513 uint64_t cgen_var_916;
11514 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_916, 1);
11515 stream->write((uint64_t*)&cgen_var_916, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011516 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011517 uint64_t cgen_var_917;
11518 stream->read((uint64_t*)&cgen_var_917, 8);
11519 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_917, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011520 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
11521 stream->read(&vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011522 countingStream->clearPool();
11523 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011524 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011525 return vkCreateXlibSurfaceKHR_VkResult_return;
11526}
11527
11528VkBool32 VkEncoder::vkGetPhysicalDeviceXlibPresentationSupportKHR(
11529 VkPhysicalDevice physicalDevice,
11530 uint32_t queueFamilyIndex,
11531 Display* dpy,
11532 VisualID visualID)
11533{
11534 auto stream = mImpl->stream();
11535 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011536 auto resources = mImpl->resources();
11537 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011538 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011539 VkPhysicalDevice local_physicalDevice;
11540 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011541 uint32_t local_queueFamilyIndex;
11542 local_queueFamilyIndex = queueFamilyIndex;
11543 VisualID local_visualID;
11544 local_visualID = visualID;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011545 countingStream->rewind();
11546 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011547 uint64_t cgen_var_918;
11548 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_918, 1);
11549 countingStream->write((uint64_t*)&cgen_var_918, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011550 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011551 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011552 countingStream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011553 }
11554 uint32_t packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11555 countingStream->rewind();
11556 uint32_t opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR = OP_vkGetPhysicalDeviceXlibPresentationSupportKHR;
11557 stream->write(&opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
11558 stream->write(&packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011559 uint64_t cgen_var_919;
11560 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_919, 1);
11561 stream->write((uint64_t*)&cgen_var_919, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011562 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011563 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011564 stream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011565 stream->read((Display*)dpy, sizeof(Display));
11566 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11567 stream->read(&vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011568 countingStream->clearPool();
11569 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011570 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011571 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
11572}
11573
11574#endif
11575#ifdef VK_KHR_xcb_surface
11576VkResult VkEncoder::vkCreateXcbSurfaceKHR(
11577 VkInstance instance,
11578 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
11579 const VkAllocationCallbacks* pAllocator,
11580 VkSurfaceKHR* pSurface)
11581{
11582 auto stream = mImpl->stream();
11583 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011584 auto resources = mImpl->resources();
11585 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011586 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011587 VkInstance local_instance;
11588 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011589 VkXcbSurfaceCreateInfoKHR* local_pCreateInfo;
11590 local_pCreateInfo = nullptr;
11591 if (pCreateInfo)
11592 {
11593 local_pCreateInfo = (VkXcbSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXcbSurfaceCreateInfoKHR));
11594 deepcopy_VkXcbSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
11595 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011596 VkAllocationCallbacks* local_pAllocator;
11597 local_pAllocator = nullptr;
11598 if (pAllocator)
11599 {
11600 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11601 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11602 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011603 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011604 countingStream->rewind();
11605 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011606 uint64_t cgen_var_920;
11607 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_920, 1);
11608 countingStream->write((uint64_t*)&cgen_var_920, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011609 marshal_VkXcbSurfaceCreateInfoKHR(countingStream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011610 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011611 uint64_t cgen_var_921 = (uint64_t)(uintptr_t)local_pAllocator;
11612 countingStream->putBe64(cgen_var_921);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011613 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011614 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011615 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011616 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011617 uint64_t cgen_var_922;
11618 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_922, 1);
11619 countingStream->write((uint64_t*)&cgen_var_922, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011620 }
11621 uint32_t packetSize_vkCreateXcbSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11622 countingStream->rewind();
11623 uint32_t opcode_vkCreateXcbSurfaceKHR = OP_vkCreateXcbSurfaceKHR;
11624 stream->write(&opcode_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
11625 stream->write(&packetSize_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011626 uint64_t cgen_var_923;
11627 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_923, 1);
11628 stream->write((uint64_t*)&cgen_var_923, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011629 marshal_VkXcbSurfaceCreateInfoKHR(stream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011630 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011631 uint64_t cgen_var_924 = (uint64_t)(uintptr_t)local_pAllocator;
11632 stream->putBe64(cgen_var_924);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011633 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011634 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011635 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011636 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011637 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011638 uint64_t cgen_var_925;
11639 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_925, 1);
11640 stream->write((uint64_t*)&cgen_var_925, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011641 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011642 uint64_t cgen_var_926;
11643 stream->read((uint64_t*)&cgen_var_926, 8);
11644 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_926, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011645 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
11646 stream->read(&vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011647 countingStream->clearPool();
11648 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011649 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011650 return vkCreateXcbSurfaceKHR_VkResult_return;
11651}
11652
11653VkBool32 VkEncoder::vkGetPhysicalDeviceXcbPresentationSupportKHR(
11654 VkPhysicalDevice physicalDevice,
11655 uint32_t queueFamilyIndex,
11656 xcb_connection_t* connection,
11657 xcb_visualid_t visual_id)
11658{
11659 auto stream = mImpl->stream();
11660 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011661 auto resources = mImpl->resources();
11662 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011663 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011664 VkPhysicalDevice local_physicalDevice;
11665 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011666 uint32_t local_queueFamilyIndex;
11667 local_queueFamilyIndex = queueFamilyIndex;
11668 xcb_visualid_t local_visual_id;
11669 local_visual_id = visual_id;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011670 countingStream->rewind();
11671 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011672 uint64_t cgen_var_927;
11673 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_927, 1);
11674 countingStream->write((uint64_t*)&cgen_var_927, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011675 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011676 countingStream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011677 countingStream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011678 }
11679 uint32_t packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11680 countingStream->rewind();
11681 uint32_t opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR = OP_vkGetPhysicalDeviceXcbPresentationSupportKHR;
11682 stream->write(&opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
11683 stream->write(&packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011684 uint64_t cgen_var_928;
11685 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_928, 1);
11686 stream->write((uint64_t*)&cgen_var_928, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011687 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011688 stream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011689 stream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011690 stream->read((xcb_connection_t*)connection, sizeof(xcb_connection_t));
11691 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11692 stream->read(&vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011693 countingStream->clearPool();
11694 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011695 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011696 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
11697}
11698
11699#endif
11700#ifdef VK_KHR_wayland_surface
11701VkResult VkEncoder::vkCreateWaylandSurfaceKHR(
11702 VkInstance instance,
11703 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
11704 const VkAllocationCallbacks* pAllocator,
11705 VkSurfaceKHR* pSurface)
11706{
11707 auto stream = mImpl->stream();
11708 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011709 auto resources = mImpl->resources();
11710 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011711 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011712 VkInstance local_instance;
11713 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011714 VkWaylandSurfaceCreateInfoKHR* local_pCreateInfo;
11715 local_pCreateInfo = nullptr;
11716 if (pCreateInfo)
11717 {
11718 local_pCreateInfo = (VkWaylandSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWaylandSurfaceCreateInfoKHR));
11719 deepcopy_VkWaylandSurfaceCreateInfoKHR(pool, pCreateInfo, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
11720 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011721 VkAllocationCallbacks* local_pAllocator;
11722 local_pAllocator = nullptr;
11723 if (pAllocator)
11724 {
11725 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11726 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11727 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011728 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011729 countingStream->rewind();
11730 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011731 uint64_t cgen_var_929;
11732 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_929, 1);
11733 countingStream->write((uint64_t*)&cgen_var_929, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011734 marshal_VkWaylandSurfaceCreateInfoKHR(countingStream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011735 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011736 uint64_t cgen_var_930 = (uint64_t)(uintptr_t)local_pAllocator;
11737 countingStream->putBe64(cgen_var_930);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011738 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011739 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011740 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011741 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011742 uint64_t cgen_var_931;
11743 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_931, 1);
11744 countingStream->write((uint64_t*)&cgen_var_931, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011745 }
11746 uint32_t packetSize_vkCreateWaylandSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11747 countingStream->rewind();
11748 uint32_t opcode_vkCreateWaylandSurfaceKHR = OP_vkCreateWaylandSurfaceKHR;
11749 stream->write(&opcode_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
11750 stream->write(&packetSize_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011751 uint64_t cgen_var_932;
11752 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_932, 1);
11753 stream->write((uint64_t*)&cgen_var_932, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011754 marshal_VkWaylandSurfaceCreateInfoKHR(stream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011755 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011756 uint64_t cgen_var_933 = (uint64_t)(uintptr_t)local_pAllocator;
11757 stream->putBe64(cgen_var_933);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011758 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011759 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011760 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011761 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011762 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011763 uint64_t cgen_var_934;
11764 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_934, 1);
11765 stream->write((uint64_t*)&cgen_var_934, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011766 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011767 uint64_t cgen_var_935;
11768 stream->read((uint64_t*)&cgen_var_935, 8);
11769 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_935, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011770 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
11771 stream->read(&vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011772 countingStream->clearPool();
11773 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011774 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011775 return vkCreateWaylandSurfaceKHR_VkResult_return;
11776}
11777
11778VkBool32 VkEncoder::vkGetPhysicalDeviceWaylandPresentationSupportKHR(
11779 VkPhysicalDevice physicalDevice,
11780 uint32_t queueFamilyIndex,
11781 wl_display* display)
11782{
11783 auto stream = mImpl->stream();
11784 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011785 auto resources = mImpl->resources();
11786 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011787 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011788 VkPhysicalDevice local_physicalDevice;
11789 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011790 uint32_t local_queueFamilyIndex;
11791 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011792 countingStream->rewind();
11793 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011794 uint64_t cgen_var_936;
11795 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_936, 1);
11796 countingStream->write((uint64_t*)&cgen_var_936, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011797 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011798 countingStream->write((wl_display*)display, sizeof(wl_display));
11799 }
11800 uint32_t packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11801 countingStream->rewind();
11802 uint32_t opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR = OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR;
11803 stream->write(&opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
11804 stream->write(&packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011805 uint64_t cgen_var_937;
11806 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_937, 1);
11807 stream->write((uint64_t*)&cgen_var_937, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011808 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011809 stream->write((wl_display*)display, sizeof(wl_display));
11810 stream->read((wl_display*)display, sizeof(wl_display));
11811 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11812 stream->read(&vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011813 countingStream->clearPool();
11814 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011815 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011816 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
11817}
11818
11819#endif
11820#ifdef VK_KHR_mir_surface
11821VkResult VkEncoder::vkCreateMirSurfaceKHR(
11822 VkInstance instance,
11823 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
11824 const VkAllocationCallbacks* pAllocator,
11825 VkSurfaceKHR* pSurface)
11826{
11827 auto stream = mImpl->stream();
11828 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011829 auto resources = mImpl->resources();
11830 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011831 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011832 VkInstance local_instance;
11833 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011834 VkMirSurfaceCreateInfoKHR* local_pCreateInfo;
11835 local_pCreateInfo = nullptr;
11836 if (pCreateInfo)
11837 {
11838 local_pCreateInfo = (VkMirSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkMirSurfaceCreateInfoKHR));
11839 deepcopy_VkMirSurfaceCreateInfoKHR(pool, pCreateInfo, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
11840 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011841 VkAllocationCallbacks* local_pAllocator;
11842 local_pAllocator = nullptr;
11843 if (pAllocator)
11844 {
11845 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11846 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11847 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011848 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011849 countingStream->rewind();
11850 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011851 uint64_t cgen_var_938;
11852 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_938, 1);
11853 countingStream->write((uint64_t*)&cgen_var_938, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011854 marshal_VkMirSurfaceCreateInfoKHR(countingStream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011855 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011856 uint64_t cgen_var_939 = (uint64_t)(uintptr_t)local_pAllocator;
11857 countingStream->putBe64(cgen_var_939);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011858 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011859 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011860 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011861 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011862 uint64_t cgen_var_940;
11863 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_940, 1);
11864 countingStream->write((uint64_t*)&cgen_var_940, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011865 }
11866 uint32_t packetSize_vkCreateMirSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11867 countingStream->rewind();
11868 uint32_t opcode_vkCreateMirSurfaceKHR = OP_vkCreateMirSurfaceKHR;
11869 stream->write(&opcode_vkCreateMirSurfaceKHR, sizeof(uint32_t));
11870 stream->write(&packetSize_vkCreateMirSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011871 uint64_t cgen_var_941;
11872 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_941, 1);
11873 stream->write((uint64_t*)&cgen_var_941, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011874 marshal_VkMirSurfaceCreateInfoKHR(stream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011875 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011876 uint64_t cgen_var_942 = (uint64_t)(uintptr_t)local_pAllocator;
11877 stream->putBe64(cgen_var_942);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011878 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011879 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011880 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011881 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011882 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011883 uint64_t cgen_var_943;
11884 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_943, 1);
11885 stream->write((uint64_t*)&cgen_var_943, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011886 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011887 uint64_t cgen_var_944;
11888 stream->read((uint64_t*)&cgen_var_944, 8);
11889 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_944, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011890 VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
11891 stream->read(&vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011892 countingStream->clearPool();
11893 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011894 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011895 return vkCreateMirSurfaceKHR_VkResult_return;
11896}
11897
11898VkBool32 VkEncoder::vkGetPhysicalDeviceMirPresentationSupportKHR(
11899 VkPhysicalDevice physicalDevice,
11900 uint32_t queueFamilyIndex,
11901 MirConnection* connection)
11902{
11903 auto stream = mImpl->stream();
11904 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011905 auto resources = mImpl->resources();
11906 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011907 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011908 VkPhysicalDevice local_physicalDevice;
11909 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011910 uint32_t local_queueFamilyIndex;
11911 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011912 countingStream->rewind();
11913 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011914 uint64_t cgen_var_945;
11915 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_945, 1);
11916 countingStream->write((uint64_t*)&cgen_var_945, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011917 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011918 countingStream->write((MirConnection*)connection, sizeof(MirConnection));
11919 }
11920 uint32_t packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11921 countingStream->rewind();
11922 uint32_t opcode_vkGetPhysicalDeviceMirPresentationSupportKHR = OP_vkGetPhysicalDeviceMirPresentationSupportKHR;
11923 stream->write(&opcode_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
11924 stream->write(&packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011925 uint64_t cgen_var_946;
11926 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_946, 1);
11927 stream->write((uint64_t*)&cgen_var_946, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011928 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011929 stream->write((MirConnection*)connection, sizeof(MirConnection));
11930 stream->read((MirConnection*)connection, sizeof(MirConnection));
11931 VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11932 stream->read(&vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011933 countingStream->clearPool();
11934 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011935 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011936 return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
11937}
11938
11939#endif
11940#ifdef VK_KHR_android_surface
11941VkResult VkEncoder::vkCreateAndroidSurfaceKHR(
11942 VkInstance instance,
11943 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
11944 const VkAllocationCallbacks* pAllocator,
11945 VkSurfaceKHR* pSurface)
11946{
11947 auto stream = mImpl->stream();
11948 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011949 auto resources = mImpl->resources();
11950 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011951 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011952 VkInstance local_instance;
11953 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011954 VkAndroidSurfaceCreateInfoKHR* local_pCreateInfo;
11955 local_pCreateInfo = nullptr;
11956 if (pCreateInfo)
11957 {
11958 local_pCreateInfo = (VkAndroidSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkAndroidSurfaceCreateInfoKHR));
11959 deepcopy_VkAndroidSurfaceCreateInfoKHR(pool, pCreateInfo, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
11960 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011961 VkAllocationCallbacks* local_pAllocator;
11962 local_pAllocator = nullptr;
11963 if (pAllocator)
11964 {
11965 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11966 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11967 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011968 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011969 countingStream->rewind();
11970 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011971 uint64_t cgen_var_947;
11972 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_947, 1);
11973 countingStream->write((uint64_t*)&cgen_var_947, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011974 marshal_VkAndroidSurfaceCreateInfoKHR(countingStream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011975 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011976 uint64_t cgen_var_948 = (uint64_t)(uintptr_t)local_pAllocator;
11977 countingStream->putBe64(cgen_var_948);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011978 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011979 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011980 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011981 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011982 uint64_t cgen_var_949;
11983 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_949, 1);
11984 countingStream->write((uint64_t*)&cgen_var_949, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011985 }
11986 uint32_t packetSize_vkCreateAndroidSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11987 countingStream->rewind();
11988 uint32_t opcode_vkCreateAndroidSurfaceKHR = OP_vkCreateAndroidSurfaceKHR;
11989 stream->write(&opcode_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
11990 stream->write(&packetSize_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011991 uint64_t cgen_var_950;
11992 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_950, 1);
11993 stream->write((uint64_t*)&cgen_var_950, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011994 marshal_VkAndroidSurfaceCreateInfoKHR(stream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011995 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011996 uint64_t cgen_var_951 = (uint64_t)(uintptr_t)local_pAllocator;
11997 stream->putBe64(cgen_var_951);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011998 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011999 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012000 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012001 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012002 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012003 uint64_t cgen_var_952;
12004 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_952, 1);
12005 stream->write((uint64_t*)&cgen_var_952, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012006 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012007 uint64_t cgen_var_953;
12008 stream->read((uint64_t*)&cgen_var_953, 8);
12009 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_953, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012010 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
12011 stream->read(&vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012012 countingStream->clearPool();
12013 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012014 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012015 return vkCreateAndroidSurfaceKHR_VkResult_return;
12016}
12017
12018#endif
12019#ifdef VK_KHR_win32_surface
12020VkResult VkEncoder::vkCreateWin32SurfaceKHR(
12021 VkInstance instance,
12022 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
12023 const VkAllocationCallbacks* pAllocator,
12024 VkSurfaceKHR* pSurface)
12025{
12026 auto stream = mImpl->stream();
12027 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012028 auto resources = mImpl->resources();
12029 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012030 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012031 VkInstance local_instance;
12032 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012033 VkWin32SurfaceCreateInfoKHR* local_pCreateInfo;
12034 local_pCreateInfo = nullptr;
12035 if (pCreateInfo)
12036 {
12037 local_pCreateInfo = (VkWin32SurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWin32SurfaceCreateInfoKHR));
12038 deepcopy_VkWin32SurfaceCreateInfoKHR(pool, pCreateInfo, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
12039 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012040 VkAllocationCallbacks* local_pAllocator;
12041 local_pAllocator = nullptr;
12042 if (pAllocator)
12043 {
12044 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12045 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12046 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012047 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012048 countingStream->rewind();
12049 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012050 uint64_t cgen_var_954;
12051 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_954, 1);
12052 countingStream->write((uint64_t*)&cgen_var_954, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012053 marshal_VkWin32SurfaceCreateInfoKHR(countingStream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012054 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012055 uint64_t cgen_var_955 = (uint64_t)(uintptr_t)local_pAllocator;
12056 countingStream->putBe64(cgen_var_955);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012057 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012058 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012059 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012060 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012061 uint64_t cgen_var_956;
12062 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_956, 1);
12063 countingStream->write((uint64_t*)&cgen_var_956, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012064 }
12065 uint32_t packetSize_vkCreateWin32SurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12066 countingStream->rewind();
12067 uint32_t opcode_vkCreateWin32SurfaceKHR = OP_vkCreateWin32SurfaceKHR;
12068 stream->write(&opcode_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
12069 stream->write(&packetSize_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012070 uint64_t cgen_var_957;
12071 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_957, 1);
12072 stream->write((uint64_t*)&cgen_var_957, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012073 marshal_VkWin32SurfaceCreateInfoKHR(stream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012074 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012075 uint64_t cgen_var_958 = (uint64_t)(uintptr_t)local_pAllocator;
12076 stream->putBe64(cgen_var_958);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012077 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012078 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012079 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012080 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012081 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012082 uint64_t cgen_var_959;
12083 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_959, 1);
12084 stream->write((uint64_t*)&cgen_var_959, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012085 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012086 uint64_t cgen_var_960;
12087 stream->read((uint64_t*)&cgen_var_960, 8);
12088 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_960, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012089 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
12090 stream->read(&vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012091 countingStream->clearPool();
12092 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012093 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012094 return vkCreateWin32SurfaceKHR_VkResult_return;
12095}
12096
12097VkBool32 VkEncoder::vkGetPhysicalDeviceWin32PresentationSupportKHR(
12098 VkPhysicalDevice physicalDevice,
12099 uint32_t queueFamilyIndex)
12100{
12101 auto stream = mImpl->stream();
12102 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012103 auto resources = mImpl->resources();
12104 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012105 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012106 VkPhysicalDevice local_physicalDevice;
12107 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012108 uint32_t local_queueFamilyIndex;
12109 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012110 countingStream->rewind();
12111 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012112 uint64_t cgen_var_961;
12113 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_961, 1);
12114 countingStream->write((uint64_t*)&cgen_var_961, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012115 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012116 }
12117 uint32_t packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12118 countingStream->rewind();
12119 uint32_t opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR = OP_vkGetPhysicalDeviceWin32PresentationSupportKHR;
12120 stream->write(&opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
12121 stream->write(&packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012122 uint64_t cgen_var_962;
12123 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_962, 1);
12124 stream->write((uint64_t*)&cgen_var_962, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012125 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012126 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
12127 stream->read(&vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012128 countingStream->clearPool();
12129 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012130 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012131 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
12132}
12133
12134#endif
12135#ifdef VK_KHR_sampler_mirror_clamp_to_edge
12136#endif
12137#ifdef VK_KHR_multiview
12138#endif
12139#ifdef VK_KHR_get_physical_device_properties2
12140void VkEncoder::vkGetPhysicalDeviceFeatures2KHR(
12141 VkPhysicalDevice physicalDevice,
12142 VkPhysicalDeviceFeatures2* pFeatures)
12143{
12144 auto stream = mImpl->stream();
12145 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012146 auto resources = mImpl->resources();
12147 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012148 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012149 VkPhysicalDevice local_physicalDevice;
12150 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012151 countingStream->rewind();
12152 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012153 uint64_t cgen_var_963;
12154 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_963, 1);
12155 countingStream->write((uint64_t*)&cgen_var_963, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012156 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
12157 }
12158 uint32_t packetSize_vkGetPhysicalDeviceFeatures2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12159 countingStream->rewind();
12160 uint32_t opcode_vkGetPhysicalDeviceFeatures2KHR = OP_vkGetPhysicalDeviceFeatures2KHR;
12161 stream->write(&opcode_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
12162 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012163 uint64_t cgen_var_964;
12164 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_964, 1);
12165 stream->write((uint64_t*)&cgen_var_964, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012166 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
12167 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
12168}
12169
12170void VkEncoder::vkGetPhysicalDeviceProperties2KHR(
12171 VkPhysicalDevice physicalDevice,
12172 VkPhysicalDeviceProperties2* pProperties)
12173{
12174 auto stream = mImpl->stream();
12175 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012176 auto resources = mImpl->resources();
12177 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012178 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012179 VkPhysicalDevice local_physicalDevice;
12180 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012181 countingStream->rewind();
12182 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012183 uint64_t cgen_var_965;
12184 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_965, 1);
12185 countingStream->write((uint64_t*)&cgen_var_965, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012186 marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
12187 }
12188 uint32_t packetSize_vkGetPhysicalDeviceProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12189 countingStream->rewind();
12190 uint32_t opcode_vkGetPhysicalDeviceProperties2KHR = OP_vkGetPhysicalDeviceProperties2KHR;
12191 stream->write(&opcode_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
12192 stream->write(&packetSize_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012193 uint64_t cgen_var_966;
12194 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_966, 1);
12195 stream->write((uint64_t*)&cgen_var_966, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012196 marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
12197 unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
12198}
12199
12200void VkEncoder::vkGetPhysicalDeviceFormatProperties2KHR(
12201 VkPhysicalDevice physicalDevice,
12202 VkFormat format,
12203 VkFormatProperties2* pFormatProperties)
12204{
12205 auto stream = mImpl->stream();
12206 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012207 auto resources = mImpl->resources();
12208 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012209 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012210 VkPhysicalDevice local_physicalDevice;
12211 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012212 VkFormat local_format;
12213 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012214 countingStream->rewind();
12215 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012216 uint64_t cgen_var_967;
12217 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_967, 1);
12218 countingStream->write((uint64_t*)&cgen_var_967, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012219 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012220 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
12221 }
12222 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12223 countingStream->rewind();
12224 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2KHR = OP_vkGetPhysicalDeviceFormatProperties2KHR;
12225 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
12226 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012227 uint64_t cgen_var_968;
12228 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_968, 1);
12229 stream->write((uint64_t*)&cgen_var_968, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012230 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012231 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
12232 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
12233}
12234
12235VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2KHR(
12236 VkPhysicalDevice physicalDevice,
12237 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
12238 VkImageFormatProperties2* pImageFormatProperties)
12239{
12240 auto stream = mImpl->stream();
12241 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012242 auto resources = mImpl->resources();
12243 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012244 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012245 VkPhysicalDevice local_physicalDevice;
12246 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012247 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
12248 local_pImageFormatInfo = nullptr;
12249 if (pImageFormatInfo)
12250 {
12251 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
12252 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
12253 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012254 countingStream->rewind();
12255 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012256 uint64_t cgen_var_969;
12257 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_969, 1);
12258 countingStream->write((uint64_t*)&cgen_var_969, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012259 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012260 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
12261 }
12262 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12263 countingStream->rewind();
12264 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2KHR = OP_vkGetPhysicalDeviceImageFormatProperties2KHR;
12265 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
12266 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012267 uint64_t cgen_var_970;
12268 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_970, 1);
12269 stream->write((uint64_t*)&cgen_var_970, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012270 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012271 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
12272 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
12273 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
12274 stream->read(&vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012275 countingStream->clearPool();
12276 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012277 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012278 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
12279}
12280
12281void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2KHR(
12282 VkPhysicalDevice physicalDevice,
12283 uint32_t* pQueueFamilyPropertyCount,
12284 VkQueueFamilyProperties2* pQueueFamilyProperties)
12285{
12286 auto stream = mImpl->stream();
12287 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012288 auto resources = mImpl->resources();
12289 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012290 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012291 VkPhysicalDevice local_physicalDevice;
12292 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012293 countingStream->rewind();
12294 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012295 uint64_t cgen_var_971;
12296 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_971, 1);
12297 countingStream->write((uint64_t*)&cgen_var_971, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012298 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012299 uint64_t cgen_var_972 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
12300 countingStream->putBe64(cgen_var_972);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012301 if (pQueueFamilyPropertyCount)
12302 {
12303 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
12304 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012305 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012306 uint64_t cgen_var_973 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
12307 countingStream->putBe64(cgen_var_973);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012308 if (pQueueFamilyProperties)
12309 {
12310 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
12311 {
12312 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
12313 }
12314 }
12315 }
12316 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12317 countingStream->rewind();
12318 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR = OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR;
12319 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
12320 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012321 uint64_t cgen_var_974;
12322 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_974, 1);
12323 stream->write((uint64_t*)&cgen_var_974, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012324 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012325 uint64_t cgen_var_975 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
12326 stream->putBe64(cgen_var_975);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012327 if (pQueueFamilyPropertyCount)
12328 {
12329 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
12330 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012331 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012332 uint64_t cgen_var_976 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
12333 stream->putBe64(cgen_var_976);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012334 if (pQueueFamilyProperties)
12335 {
12336 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
12337 {
12338 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
12339 }
12340 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012341 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012342 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012343 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012344 if (pQueueFamilyPropertyCount)
12345 {
12346 if (!(check_pQueueFamilyPropertyCount))
12347 {
12348 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
12349 }
12350 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
12351 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012352 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012353 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012354 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012355 if (pQueueFamilyProperties)
12356 {
12357 if (!(check_pQueueFamilyProperties))
12358 {
12359 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
12360 }
12361 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
12362 {
12363 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
12364 }
12365 }
12366}
12367
12368void VkEncoder::vkGetPhysicalDeviceMemoryProperties2KHR(
12369 VkPhysicalDevice physicalDevice,
12370 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
12371{
12372 auto stream = mImpl->stream();
12373 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012374 auto resources = mImpl->resources();
12375 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012376 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012377 VkPhysicalDevice local_physicalDevice;
12378 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012379 countingStream->rewind();
12380 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012381 uint64_t cgen_var_979;
12382 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_979, 1);
12383 countingStream->write((uint64_t*)&cgen_var_979, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012384 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
12385 }
12386 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12387 countingStream->rewind();
12388 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2KHR = OP_vkGetPhysicalDeviceMemoryProperties2KHR;
12389 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
12390 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012391 uint64_t cgen_var_980;
12392 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_980, 1);
12393 stream->write((uint64_t*)&cgen_var_980, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012394 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
12395 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
12396}
12397
12398void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
12399 VkPhysicalDevice physicalDevice,
12400 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
12401 uint32_t* pPropertyCount,
12402 VkSparseImageFormatProperties2* pProperties)
12403{
12404 auto stream = mImpl->stream();
12405 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012406 auto resources = mImpl->resources();
12407 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012408 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012409 VkPhysicalDevice local_physicalDevice;
12410 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012411 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
12412 local_pFormatInfo = nullptr;
12413 if (pFormatInfo)
12414 {
12415 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
12416 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
12417 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012418 countingStream->rewind();
12419 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012420 uint64_t cgen_var_981;
12421 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_981, 1);
12422 countingStream->write((uint64_t*)&cgen_var_981, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012423 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012424 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012425 uint64_t cgen_var_982 = (uint64_t)(uintptr_t)pPropertyCount;
12426 countingStream->putBe64(cgen_var_982);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012427 if (pPropertyCount)
12428 {
12429 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12430 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012431 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012432 uint64_t cgen_var_983 = (uint64_t)(uintptr_t)pProperties;
12433 countingStream->putBe64(cgen_var_983);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012434 if (pProperties)
12435 {
12436 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12437 {
12438 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
12439 }
12440 }
12441 }
12442 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12443 countingStream->rewind();
12444 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
12445 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
12446 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012447 uint64_t cgen_var_984;
12448 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_984, 1);
12449 stream->write((uint64_t*)&cgen_var_984, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012450 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012451 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012452 uint64_t cgen_var_985 = (uint64_t)(uintptr_t)pPropertyCount;
12453 stream->putBe64(cgen_var_985);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012454 if (pPropertyCount)
12455 {
12456 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12457 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012458 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012459 uint64_t cgen_var_986 = (uint64_t)(uintptr_t)pProperties;
12460 stream->putBe64(cgen_var_986);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012461 if (pProperties)
12462 {
12463 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12464 {
12465 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
12466 }
12467 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012468 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012469 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012470 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012471 if (pPropertyCount)
12472 {
12473 if (!(check_pPropertyCount))
12474 {
12475 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12476 }
12477 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12478 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012479 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012480 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012481 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012482 if (pProperties)
12483 {
12484 if (!(check_pProperties))
12485 {
12486 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12487 }
12488 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12489 {
12490 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
12491 }
12492 }
12493}
12494
12495#endif
12496#ifdef VK_KHR_device_group
12497void VkEncoder::vkGetDeviceGroupPeerMemoryFeaturesKHR(
12498 VkDevice device,
12499 uint32_t heapIndex,
12500 uint32_t localDeviceIndex,
12501 uint32_t remoteDeviceIndex,
12502 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
12503{
12504 auto stream = mImpl->stream();
12505 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012506 auto resources = mImpl->resources();
12507 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012508 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012509 VkDevice local_device;
12510 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012511 uint32_t local_heapIndex;
12512 local_heapIndex = heapIndex;
12513 uint32_t local_localDeviceIndex;
12514 local_localDeviceIndex = localDeviceIndex;
12515 uint32_t local_remoteDeviceIndex;
12516 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012517 countingStream->rewind();
12518 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012519 uint64_t cgen_var_989;
12520 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_989, 1);
12521 countingStream->write((uint64_t*)&cgen_var_989, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012522 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
12523 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
12524 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012525 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
12526 }
12527 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12528 countingStream->rewind();
12529 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR = OP_vkGetDeviceGroupPeerMemoryFeaturesKHR;
12530 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
12531 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012532 uint64_t cgen_var_990;
12533 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_990, 1);
12534 stream->write((uint64_t*)&cgen_var_990, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012535 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
12536 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
12537 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012538 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
12539 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
12540}
12541
12542void VkEncoder::vkCmdSetDeviceMaskKHR(
12543 VkCommandBuffer commandBuffer,
12544 uint32_t deviceMask)
12545{
12546 auto stream = mImpl->stream();
12547 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012548 auto resources = mImpl->resources();
12549 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012550 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012551 VkCommandBuffer local_commandBuffer;
12552 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012553 uint32_t local_deviceMask;
12554 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012555 countingStream->rewind();
12556 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012557 uint64_t cgen_var_991;
12558 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_991, 1);
12559 countingStream->write((uint64_t*)&cgen_var_991, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012560 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012561 }
12562 uint32_t packetSize_vkCmdSetDeviceMaskKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12563 countingStream->rewind();
12564 uint32_t opcode_vkCmdSetDeviceMaskKHR = OP_vkCmdSetDeviceMaskKHR;
12565 stream->write(&opcode_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
12566 stream->write(&packetSize_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012567 uint64_t cgen_var_992;
12568 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_992, 1);
12569 stream->write((uint64_t*)&cgen_var_992, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012570 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012571}
12572
12573void VkEncoder::vkCmdDispatchBaseKHR(
12574 VkCommandBuffer commandBuffer,
12575 uint32_t baseGroupX,
12576 uint32_t baseGroupY,
12577 uint32_t baseGroupZ,
12578 uint32_t groupCountX,
12579 uint32_t groupCountY,
12580 uint32_t groupCountZ)
12581{
12582 auto stream = mImpl->stream();
12583 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012584 auto resources = mImpl->resources();
12585 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012586 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012587 VkCommandBuffer local_commandBuffer;
12588 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012589 uint32_t local_baseGroupX;
12590 local_baseGroupX = baseGroupX;
12591 uint32_t local_baseGroupY;
12592 local_baseGroupY = baseGroupY;
12593 uint32_t local_baseGroupZ;
12594 local_baseGroupZ = baseGroupZ;
12595 uint32_t local_groupCountX;
12596 local_groupCountX = groupCountX;
12597 uint32_t local_groupCountY;
12598 local_groupCountY = groupCountY;
12599 uint32_t local_groupCountZ;
12600 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012601 countingStream->rewind();
12602 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012603 uint64_t cgen_var_993;
12604 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_993, 1);
12605 countingStream->write((uint64_t*)&cgen_var_993, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012606 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
12607 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
12608 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
12609 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
12610 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
12611 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012612 }
12613 uint32_t packetSize_vkCmdDispatchBaseKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12614 countingStream->rewind();
12615 uint32_t opcode_vkCmdDispatchBaseKHR = OP_vkCmdDispatchBaseKHR;
12616 stream->write(&opcode_vkCmdDispatchBaseKHR, sizeof(uint32_t));
12617 stream->write(&packetSize_vkCmdDispatchBaseKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012618 uint64_t cgen_var_994;
12619 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_994, 1);
12620 stream->write((uint64_t*)&cgen_var_994, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012621 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
12622 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
12623 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
12624 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
12625 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
12626 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012627}
12628
12629#endif
12630#ifdef VK_KHR_shader_draw_parameters
12631#endif
12632#ifdef VK_KHR_maintenance1
12633void VkEncoder::vkTrimCommandPoolKHR(
12634 VkDevice device,
12635 VkCommandPool commandPool,
12636 VkCommandPoolTrimFlags flags)
12637{
12638 auto stream = mImpl->stream();
12639 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012640 auto resources = mImpl->resources();
12641 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012642 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012643 VkDevice local_device;
12644 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012645 VkCommandPool local_commandPool;
12646 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012647 VkCommandPoolTrimFlags local_flags;
12648 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012649 countingStream->rewind();
12650 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012651 uint64_t cgen_var_995;
12652 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_995, 1);
12653 countingStream->write((uint64_t*)&cgen_var_995, 1 * 8);
12654 uint64_t cgen_var_996;
12655 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_996, 1);
12656 countingStream->write((uint64_t*)&cgen_var_996, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012657 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012658 }
12659 uint32_t packetSize_vkTrimCommandPoolKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12660 countingStream->rewind();
12661 uint32_t opcode_vkTrimCommandPoolKHR = OP_vkTrimCommandPoolKHR;
12662 stream->write(&opcode_vkTrimCommandPoolKHR, sizeof(uint32_t));
12663 stream->write(&packetSize_vkTrimCommandPoolKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012664 uint64_t cgen_var_997;
12665 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_997, 1);
12666 stream->write((uint64_t*)&cgen_var_997, 1 * 8);
12667 uint64_t cgen_var_998;
12668 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_998, 1);
12669 stream->write((uint64_t*)&cgen_var_998, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012670 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012671}
12672
12673#endif
12674#ifdef VK_KHR_device_group_creation
12675VkResult VkEncoder::vkEnumeratePhysicalDeviceGroupsKHR(
12676 VkInstance instance,
12677 uint32_t* pPhysicalDeviceGroupCount,
12678 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
12679{
12680 auto stream = mImpl->stream();
12681 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012682 auto resources = mImpl->resources();
12683 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012684 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012685 VkInstance local_instance;
12686 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012687 countingStream->rewind();
12688 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012689 uint64_t cgen_var_999;
12690 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_999, 1);
12691 countingStream->write((uint64_t*)&cgen_var_999, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012692 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012693 uint64_t cgen_var_1000 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
12694 countingStream->putBe64(cgen_var_1000);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012695 if (pPhysicalDeviceGroupCount)
12696 {
12697 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
12698 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012699 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012700 uint64_t cgen_var_1001 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
12701 countingStream->putBe64(cgen_var_1001);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012702 if (pPhysicalDeviceGroupProperties)
12703 {
12704 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
12705 {
12706 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
12707 }
12708 }
12709 }
12710 uint32_t packetSize_vkEnumeratePhysicalDeviceGroupsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12711 countingStream->rewind();
12712 uint32_t opcode_vkEnumeratePhysicalDeviceGroupsKHR = OP_vkEnumeratePhysicalDeviceGroupsKHR;
12713 stream->write(&opcode_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
12714 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012715 uint64_t cgen_var_1002;
12716 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1002, 1);
12717 stream->write((uint64_t*)&cgen_var_1002, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012718 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012719 uint64_t cgen_var_1003 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
12720 stream->putBe64(cgen_var_1003);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012721 if (pPhysicalDeviceGroupCount)
12722 {
12723 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
12724 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012725 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012726 uint64_t cgen_var_1004 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
12727 stream->putBe64(cgen_var_1004);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012728 if (pPhysicalDeviceGroupProperties)
12729 {
12730 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
12731 {
12732 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
12733 }
12734 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012735 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012736 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012737 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012738 if (pPhysicalDeviceGroupCount)
12739 {
12740 if (!(check_pPhysicalDeviceGroupCount))
12741 {
12742 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
12743 }
12744 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
12745 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012746 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012747 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012748 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012749 if (pPhysicalDeviceGroupProperties)
12750 {
12751 if (!(check_pPhysicalDeviceGroupProperties))
12752 {
12753 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
12754 }
12755 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
12756 {
12757 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
12758 }
12759 }
12760 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
12761 stream->read(&vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012762 countingStream->clearPool();
12763 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012764 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012765 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
12766}
12767
12768#endif
12769#ifdef VK_KHR_external_memory_capabilities
12770void VkEncoder::vkGetPhysicalDeviceExternalBufferPropertiesKHR(
12771 VkPhysicalDevice physicalDevice,
12772 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
12773 VkExternalBufferProperties* pExternalBufferProperties)
12774{
12775 auto stream = mImpl->stream();
12776 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012777 auto resources = mImpl->resources();
12778 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012779 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012780 VkPhysicalDevice local_physicalDevice;
12781 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012782 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
12783 local_pExternalBufferInfo = nullptr;
12784 if (pExternalBufferInfo)
12785 {
12786 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
12787 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
12788 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012789 countingStream->rewind();
12790 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012791 uint64_t cgen_var_1007;
12792 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1007, 1);
12793 countingStream->write((uint64_t*)&cgen_var_1007, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012794 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012795 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
12796 }
12797 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12798 countingStream->rewind();
12799 uint32_t opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR = OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR;
12800 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
12801 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012802 uint64_t cgen_var_1008;
12803 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1008, 1);
12804 stream->write((uint64_t*)&cgen_var_1008, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012805 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012806 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
12807 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
12808}
12809
12810#endif
12811#ifdef VK_KHR_external_memory
12812#endif
12813#ifdef VK_KHR_external_memory_win32
12814VkResult VkEncoder::vkGetMemoryWin32HandleKHR(
12815 VkDevice device,
12816 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
12817 HANDLE* pHandle)
12818{
12819 auto stream = mImpl->stream();
12820 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012821 auto resources = mImpl->resources();
12822 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012823 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012824 VkDevice local_device;
12825 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012826 VkMemoryGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
12827 local_pGetWin32HandleInfo = nullptr;
12828 if (pGetWin32HandleInfo)
12829 {
12830 local_pGetWin32HandleInfo = (VkMemoryGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkMemoryGetWin32HandleInfoKHR));
12831 deepcopy_VkMemoryGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
12832 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012833 countingStream->rewind();
12834 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012835 uint64_t cgen_var_1009;
12836 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1009, 1);
12837 countingStream->write((uint64_t*)&cgen_var_1009, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012838 marshal_VkMemoryGetWin32HandleInfoKHR(countingStream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012839 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
12840 }
12841 uint32_t packetSize_vkGetMemoryWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12842 countingStream->rewind();
12843 uint32_t opcode_vkGetMemoryWin32HandleKHR = OP_vkGetMemoryWin32HandleKHR;
12844 stream->write(&opcode_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
12845 stream->write(&packetSize_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012846 uint64_t cgen_var_1010;
12847 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1010, 1);
12848 stream->write((uint64_t*)&cgen_var_1010, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012849 marshal_VkMemoryGetWin32HandleInfoKHR(stream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012850 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
12851 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
12852 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
12853 stream->read(&vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012854 countingStream->clearPool();
12855 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012856 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012857 return vkGetMemoryWin32HandleKHR_VkResult_return;
12858}
12859
12860VkResult VkEncoder::vkGetMemoryWin32HandlePropertiesKHR(
12861 VkDevice device,
12862 VkExternalMemoryHandleTypeFlagBits handleType,
12863 HANDLE handle,
12864 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
12865{
12866 auto stream = mImpl->stream();
12867 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012868 auto resources = mImpl->resources();
12869 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012870 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012871 VkDevice local_device;
12872 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012873 VkExternalMemoryHandleTypeFlagBits local_handleType;
12874 local_handleType = handleType;
12875 HANDLE local_handle;
12876 local_handle = handle;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012877 countingStream->rewind();
12878 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012879 uint64_t cgen_var_1011;
12880 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1011, 1);
12881 countingStream->write((uint64_t*)&cgen_var_1011, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012882 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12883 countingStream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012884 marshal_VkMemoryWin32HandlePropertiesKHR(countingStream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
12885 }
12886 uint32_t packetSize_vkGetMemoryWin32HandlePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12887 countingStream->rewind();
12888 uint32_t opcode_vkGetMemoryWin32HandlePropertiesKHR = OP_vkGetMemoryWin32HandlePropertiesKHR;
12889 stream->write(&opcode_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
12890 stream->write(&packetSize_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012891 uint64_t cgen_var_1012;
12892 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1012, 1);
12893 stream->write((uint64_t*)&cgen_var_1012, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012894 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12895 stream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012896 marshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
12897 unmarshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
12898 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
12899 stream->read(&vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012900 countingStream->clearPool();
12901 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012902 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012903 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
12904}
12905
12906#endif
12907#ifdef VK_KHR_external_memory_fd
12908VkResult VkEncoder::vkGetMemoryFdKHR(
12909 VkDevice device,
12910 const VkMemoryGetFdInfoKHR* pGetFdInfo,
12911 int* pFd)
12912{
12913 auto stream = mImpl->stream();
12914 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012915 auto resources = mImpl->resources();
12916 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012917 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012918 VkDevice local_device;
12919 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012920 VkMemoryGetFdInfoKHR* local_pGetFdInfo;
12921 local_pGetFdInfo = nullptr;
12922 if (pGetFdInfo)
12923 {
12924 local_pGetFdInfo = (VkMemoryGetFdInfoKHR*)pool->alloc(sizeof(const VkMemoryGetFdInfoKHR));
12925 deepcopy_VkMemoryGetFdInfoKHR(pool, pGetFdInfo, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
12926 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012927 countingStream->rewind();
12928 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012929 uint64_t cgen_var_1013;
12930 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1013, 1);
12931 countingStream->write((uint64_t*)&cgen_var_1013, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012932 marshal_VkMemoryGetFdInfoKHR(countingStream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012933 countingStream->write((int*)pFd, sizeof(int));
12934 }
12935 uint32_t packetSize_vkGetMemoryFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12936 countingStream->rewind();
12937 uint32_t opcode_vkGetMemoryFdKHR = OP_vkGetMemoryFdKHR;
12938 stream->write(&opcode_vkGetMemoryFdKHR, sizeof(uint32_t));
12939 stream->write(&packetSize_vkGetMemoryFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012940 uint64_t cgen_var_1014;
12941 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1014, 1);
12942 stream->write((uint64_t*)&cgen_var_1014, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012943 marshal_VkMemoryGetFdInfoKHR(stream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012944 stream->write((int*)pFd, sizeof(int));
12945 stream->read((int*)pFd, sizeof(int));
12946 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
12947 stream->read(&vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012948 countingStream->clearPool();
12949 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012950 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012951 return vkGetMemoryFdKHR_VkResult_return;
12952}
12953
12954VkResult VkEncoder::vkGetMemoryFdPropertiesKHR(
12955 VkDevice device,
12956 VkExternalMemoryHandleTypeFlagBits handleType,
12957 int fd,
12958 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
12959{
12960 auto stream = mImpl->stream();
12961 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012962 auto resources = mImpl->resources();
12963 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012964 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012965 VkDevice local_device;
12966 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012967 VkExternalMemoryHandleTypeFlagBits local_handleType;
12968 local_handleType = handleType;
12969 int local_fd;
12970 local_fd = fd;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012971 countingStream->rewind();
12972 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012973 uint64_t cgen_var_1015;
12974 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1015, 1);
12975 countingStream->write((uint64_t*)&cgen_var_1015, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012976 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12977 countingStream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012978 marshal_VkMemoryFdPropertiesKHR(countingStream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
12979 }
12980 uint32_t packetSize_vkGetMemoryFdPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12981 countingStream->rewind();
12982 uint32_t opcode_vkGetMemoryFdPropertiesKHR = OP_vkGetMemoryFdPropertiesKHR;
12983 stream->write(&opcode_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
12984 stream->write(&packetSize_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012985 uint64_t cgen_var_1016;
12986 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1016, 1);
12987 stream->write((uint64_t*)&cgen_var_1016, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012988 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12989 stream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012990 marshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
12991 unmarshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
12992 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
12993 stream->read(&vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012994 countingStream->clearPool();
12995 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012996 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012997 return vkGetMemoryFdPropertiesKHR_VkResult_return;
12998}
12999
13000#endif
13001#ifdef VK_KHR_win32_keyed_mutex
13002#endif
13003#ifdef VK_KHR_external_semaphore_capabilities
13004void VkEncoder::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
13005 VkPhysicalDevice physicalDevice,
13006 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
13007 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
13008{
13009 auto stream = mImpl->stream();
13010 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013011 auto resources = mImpl->resources();
13012 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013013 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013014 VkPhysicalDevice local_physicalDevice;
13015 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013016 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
13017 local_pExternalSemaphoreInfo = nullptr;
13018 if (pExternalSemaphoreInfo)
13019 {
13020 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
13021 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
13022 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013023 countingStream->rewind();
13024 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013025 uint64_t cgen_var_1017;
13026 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1017, 1);
13027 countingStream->write((uint64_t*)&cgen_var_1017, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013028 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013029 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13030 }
13031 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13032 countingStream->rewind();
13033 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
13034 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
13035 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013036 uint64_t cgen_var_1018;
13037 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1018, 1);
13038 stream->write((uint64_t*)&cgen_var_1018, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013039 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013040 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13041 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13042}
13043
13044#endif
13045#ifdef VK_KHR_external_semaphore
13046#endif
13047#ifdef VK_KHR_external_semaphore_win32
13048VkResult VkEncoder::vkImportSemaphoreWin32HandleKHR(
13049 VkDevice device,
13050 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
13051{
13052 auto stream = mImpl->stream();
13053 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013054 auto resources = mImpl->resources();
13055 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013056 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013057 VkDevice local_device;
13058 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013059 VkImportSemaphoreWin32HandleInfoKHR* local_pImportSemaphoreWin32HandleInfo;
13060 local_pImportSemaphoreWin32HandleInfo = nullptr;
13061 if (pImportSemaphoreWin32HandleInfo)
13062 {
13063 local_pImportSemaphoreWin32HandleInfo = (VkImportSemaphoreWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreWin32HandleInfoKHR));
13064 deepcopy_VkImportSemaphoreWin32HandleInfoKHR(pool, pImportSemaphoreWin32HandleInfo, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
13065 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013066 countingStream->rewind();
13067 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013068 uint64_t cgen_var_1019;
13069 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1019, 1);
13070 countingStream->write((uint64_t*)&cgen_var_1019, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013071 marshal_VkImportSemaphoreWin32HandleInfoKHR(countingStream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013072 }
13073 uint32_t packetSize_vkImportSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13074 countingStream->rewind();
13075 uint32_t opcode_vkImportSemaphoreWin32HandleKHR = OP_vkImportSemaphoreWin32HandleKHR;
13076 stream->write(&opcode_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
13077 stream->write(&packetSize_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013078 uint64_t cgen_var_1020;
13079 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1020, 1);
13080 stream->write((uint64_t*)&cgen_var_1020, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013081 marshal_VkImportSemaphoreWin32HandleInfoKHR(stream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013082 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
13083 stream->read(&vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013084 countingStream->clearPool();
13085 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013086 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013087 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
13088}
13089
13090VkResult VkEncoder::vkGetSemaphoreWin32HandleKHR(
13091 VkDevice device,
13092 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
13093 HANDLE* pHandle)
13094{
13095 auto stream = mImpl->stream();
13096 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013097 auto resources = mImpl->resources();
13098 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013099 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013100 VkDevice local_device;
13101 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013102 VkSemaphoreGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
13103 local_pGetWin32HandleInfo = nullptr;
13104 if (pGetWin32HandleInfo)
13105 {
13106 local_pGetWin32HandleInfo = (VkSemaphoreGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetWin32HandleInfoKHR));
13107 deepcopy_VkSemaphoreGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
13108 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013109 countingStream->rewind();
13110 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013111 uint64_t cgen_var_1021;
13112 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1021, 1);
13113 countingStream->write((uint64_t*)&cgen_var_1021, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013114 marshal_VkSemaphoreGetWin32HandleInfoKHR(countingStream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013115 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
13116 }
13117 uint32_t packetSize_vkGetSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13118 countingStream->rewind();
13119 uint32_t opcode_vkGetSemaphoreWin32HandleKHR = OP_vkGetSemaphoreWin32HandleKHR;
13120 stream->write(&opcode_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
13121 stream->write(&packetSize_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013122 uint64_t cgen_var_1022;
13123 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1022, 1);
13124 stream->write((uint64_t*)&cgen_var_1022, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013125 marshal_VkSemaphoreGetWin32HandleInfoKHR(stream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013126 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
13127 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
13128 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
13129 stream->read(&vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013130 countingStream->clearPool();
13131 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013132 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013133 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
13134}
13135
13136#endif
13137#ifdef VK_KHR_external_semaphore_fd
13138VkResult VkEncoder::vkImportSemaphoreFdKHR(
13139 VkDevice device,
13140 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
13141{
13142 auto stream = mImpl->stream();
13143 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013144 auto resources = mImpl->resources();
13145 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013146 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013147 VkDevice local_device;
13148 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013149 VkImportSemaphoreFdInfoKHR* local_pImportSemaphoreFdInfo;
13150 local_pImportSemaphoreFdInfo = nullptr;
13151 if (pImportSemaphoreFdInfo)
13152 {
13153 local_pImportSemaphoreFdInfo = (VkImportSemaphoreFdInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreFdInfoKHR));
13154 deepcopy_VkImportSemaphoreFdInfoKHR(pool, pImportSemaphoreFdInfo, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
13155 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013156 countingStream->rewind();
13157 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013158 uint64_t cgen_var_1023;
13159 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1023, 1);
13160 countingStream->write((uint64_t*)&cgen_var_1023, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013161 marshal_VkImportSemaphoreFdInfoKHR(countingStream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013162 }
13163 uint32_t packetSize_vkImportSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13164 countingStream->rewind();
13165 uint32_t opcode_vkImportSemaphoreFdKHR = OP_vkImportSemaphoreFdKHR;
13166 stream->write(&opcode_vkImportSemaphoreFdKHR, sizeof(uint32_t));
13167 stream->write(&packetSize_vkImportSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013168 uint64_t cgen_var_1024;
13169 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1024, 1);
13170 stream->write((uint64_t*)&cgen_var_1024, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013171 marshal_VkImportSemaphoreFdInfoKHR(stream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013172 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
13173 stream->read(&vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013174 countingStream->clearPool();
13175 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013176 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013177 return vkImportSemaphoreFdKHR_VkResult_return;
13178}
13179
13180VkResult VkEncoder::vkGetSemaphoreFdKHR(
13181 VkDevice device,
13182 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
13183 int* pFd)
13184{
13185 auto stream = mImpl->stream();
13186 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013187 auto resources = mImpl->resources();
13188 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013189 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013190 VkDevice local_device;
13191 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013192 VkSemaphoreGetFdInfoKHR* local_pGetFdInfo;
13193 local_pGetFdInfo = nullptr;
13194 if (pGetFdInfo)
13195 {
13196 local_pGetFdInfo = (VkSemaphoreGetFdInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetFdInfoKHR));
13197 deepcopy_VkSemaphoreGetFdInfoKHR(pool, pGetFdInfo, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
13198 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013199 countingStream->rewind();
13200 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013201 uint64_t cgen_var_1025;
13202 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1025, 1);
13203 countingStream->write((uint64_t*)&cgen_var_1025, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013204 marshal_VkSemaphoreGetFdInfoKHR(countingStream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013205 countingStream->write((int*)pFd, sizeof(int));
13206 }
13207 uint32_t packetSize_vkGetSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13208 countingStream->rewind();
13209 uint32_t opcode_vkGetSemaphoreFdKHR = OP_vkGetSemaphoreFdKHR;
13210 stream->write(&opcode_vkGetSemaphoreFdKHR, sizeof(uint32_t));
13211 stream->write(&packetSize_vkGetSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013212 uint64_t cgen_var_1026;
13213 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1026, 1);
13214 stream->write((uint64_t*)&cgen_var_1026, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013215 marshal_VkSemaphoreGetFdInfoKHR(stream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013216 stream->write((int*)pFd, sizeof(int));
13217 stream->read((int*)pFd, sizeof(int));
13218 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
13219 stream->read(&vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013220 countingStream->clearPool();
13221 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013222 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013223 return vkGetSemaphoreFdKHR_VkResult_return;
13224}
13225
13226#endif
13227#ifdef VK_KHR_push_descriptor
13228void VkEncoder::vkCmdPushDescriptorSetKHR(
13229 VkCommandBuffer commandBuffer,
13230 VkPipelineBindPoint pipelineBindPoint,
13231 VkPipelineLayout layout,
13232 uint32_t set,
13233 uint32_t descriptorWriteCount,
13234 const VkWriteDescriptorSet* pDescriptorWrites)
13235{
13236 auto stream = mImpl->stream();
13237 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013238 auto resources = mImpl->resources();
13239 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013240 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013241 VkCommandBuffer local_commandBuffer;
13242 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013243 VkPipelineBindPoint local_pipelineBindPoint;
13244 local_pipelineBindPoint = pipelineBindPoint;
13245 VkPipelineLayout local_layout;
13246 local_layout = layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013247 uint32_t local_set;
13248 local_set = set;
13249 uint32_t local_descriptorWriteCount;
13250 local_descriptorWriteCount = descriptorWriteCount;
13251 VkWriteDescriptorSet* local_pDescriptorWrites;
13252 local_pDescriptorWrites = nullptr;
13253 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013254 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013255 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013256 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
13257 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013258 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
13259 }
13260 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013261 countingStream->rewind();
13262 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013263 uint64_t cgen_var_1027;
13264 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1027, 1);
13265 countingStream->write((uint64_t*)&cgen_var_1027, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013266 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013267 uint64_t cgen_var_1028;
13268 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1028, 1);
13269 countingStream->write((uint64_t*)&cgen_var_1028, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013270 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
13271 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
13272 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
13273 {
13274 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013275 }
13276 }
13277 uint32_t packetSize_vkCmdPushDescriptorSetKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13278 countingStream->rewind();
13279 uint32_t opcode_vkCmdPushDescriptorSetKHR = OP_vkCmdPushDescriptorSetKHR;
13280 stream->write(&opcode_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
13281 stream->write(&packetSize_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013282 uint64_t cgen_var_1029;
13283 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1029, 1);
13284 stream->write((uint64_t*)&cgen_var_1029, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013285 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013286 uint64_t cgen_var_1030;
13287 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1030, 1);
13288 stream->write((uint64_t*)&cgen_var_1030, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013289 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
13290 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013291 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
13292 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013293 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013294 }
13295}
13296
13297void VkEncoder::vkCmdPushDescriptorSetWithTemplateKHR(
13298 VkCommandBuffer commandBuffer,
13299 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
13300 VkPipelineLayout layout,
13301 uint32_t set,
13302 const void* pData)
13303{
13304 auto stream = mImpl->stream();
13305 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013306 auto resources = mImpl->resources();
13307 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013308 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013309 VkCommandBuffer local_commandBuffer;
13310 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013311 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
13312 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013313 VkPipelineLayout local_layout;
13314 local_layout = layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013315 uint32_t local_set;
13316 local_set = set;
13317 void* local_pData;
13318 local_pData = nullptr;
13319 if (pData)
13320 {
13321 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
13322 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013323 countingStream->rewind();
13324 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013325 uint64_t cgen_var_1031;
13326 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1031, 1);
13327 countingStream->write((uint64_t*)&cgen_var_1031, 1 * 8);
13328 uint64_t cgen_var_1032;
13329 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1032, 1);
13330 countingStream->write((uint64_t*)&cgen_var_1032, 1 * 8);
13331 uint64_t cgen_var_1033;
13332 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1033, 1);
13333 countingStream->write((uint64_t*)&cgen_var_1033, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013334 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013335 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013336 uint64_t cgen_var_1034 = (uint64_t)(uintptr_t)local_pData;
13337 countingStream->putBe64(cgen_var_1034);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013338 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013339 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013340 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013341 }
13342 }
13343 uint32_t packetSize_vkCmdPushDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13344 countingStream->rewind();
13345 uint32_t opcode_vkCmdPushDescriptorSetWithTemplateKHR = OP_vkCmdPushDescriptorSetWithTemplateKHR;
13346 stream->write(&opcode_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
13347 stream->write(&packetSize_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013348 uint64_t cgen_var_1035;
13349 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1035, 1);
13350 stream->write((uint64_t*)&cgen_var_1035, 1 * 8);
13351 uint64_t cgen_var_1036;
13352 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1036, 1);
13353 stream->write((uint64_t*)&cgen_var_1036, 1 * 8);
13354 uint64_t cgen_var_1037;
13355 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1037, 1);
13356 stream->write((uint64_t*)&cgen_var_1037, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013357 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013358 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013359 uint64_t cgen_var_1038 = (uint64_t)(uintptr_t)local_pData;
13360 stream->putBe64(cgen_var_1038);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013361 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013362 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013363 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013364 }
13365}
13366
13367#endif
13368#ifdef VK_KHR_16bit_storage
13369#endif
13370#ifdef VK_KHR_incremental_present
13371#endif
13372#ifdef VK_KHR_descriptor_update_template
13373VkResult VkEncoder::vkCreateDescriptorUpdateTemplateKHR(
13374 VkDevice device,
13375 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
13376 const VkAllocationCallbacks* pAllocator,
13377 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
13378{
13379 auto stream = mImpl->stream();
13380 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013381 auto resources = mImpl->resources();
13382 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013383 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013384 VkDevice local_device;
13385 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013386 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
13387 local_pCreateInfo = nullptr;
13388 if (pCreateInfo)
13389 {
13390 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
13391 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
13392 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013393 VkAllocationCallbacks* local_pAllocator;
13394 local_pAllocator = nullptr;
13395 if (pAllocator)
13396 {
13397 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13398 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13399 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013400 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013401 countingStream->rewind();
13402 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013403 uint64_t cgen_var_1039;
13404 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1039, 1);
13405 countingStream->write((uint64_t*)&cgen_var_1039, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013406 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013407 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013408 uint64_t cgen_var_1040 = (uint64_t)(uintptr_t)local_pAllocator;
13409 countingStream->putBe64(cgen_var_1040);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013410 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013411 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013412 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013413 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013414 uint64_t cgen_var_1041;
13415 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1041, 1);
13416 countingStream->write((uint64_t*)&cgen_var_1041, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013417 }
13418 uint32_t packetSize_vkCreateDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13419 countingStream->rewind();
13420 uint32_t opcode_vkCreateDescriptorUpdateTemplateKHR = OP_vkCreateDescriptorUpdateTemplateKHR;
13421 stream->write(&opcode_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
13422 stream->write(&packetSize_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013423 uint64_t cgen_var_1042;
13424 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1042, 1);
13425 stream->write((uint64_t*)&cgen_var_1042, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013426 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013427 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013428 uint64_t cgen_var_1043 = (uint64_t)(uintptr_t)local_pAllocator;
13429 stream->putBe64(cgen_var_1043);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013430 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013431 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013432 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013433 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013434 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013435 uint64_t cgen_var_1044;
13436 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1044, 1);
13437 stream->write((uint64_t*)&cgen_var_1044, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013438 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013439 uint64_t cgen_var_1045;
13440 stream->read((uint64_t*)&cgen_var_1045, 8);
13441 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_1045, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013442 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
13443 stream->read(&vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013444 countingStream->clearPool();
13445 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013446 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013447 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
13448}
13449
13450void VkEncoder::vkDestroyDescriptorUpdateTemplateKHR(
13451 VkDevice device,
13452 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
13453 const VkAllocationCallbacks* pAllocator)
13454{
13455 auto stream = mImpl->stream();
13456 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013457 auto resources = mImpl->resources();
13458 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013459 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013460 VkDevice local_device;
13461 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013462 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
13463 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013464 VkAllocationCallbacks* local_pAllocator;
13465 local_pAllocator = nullptr;
13466 if (pAllocator)
13467 {
13468 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13469 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13470 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013471 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013472 countingStream->rewind();
13473 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013474 uint64_t cgen_var_1046;
13475 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1046, 1);
13476 countingStream->write((uint64_t*)&cgen_var_1046, 1 * 8);
13477 uint64_t cgen_var_1047;
13478 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1047, 1);
13479 countingStream->write((uint64_t*)&cgen_var_1047, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013480 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013481 uint64_t cgen_var_1048 = (uint64_t)(uintptr_t)local_pAllocator;
13482 countingStream->putBe64(cgen_var_1048);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013483 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013484 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013485 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013486 }
13487 }
13488 uint32_t packetSize_vkDestroyDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13489 countingStream->rewind();
13490 uint32_t opcode_vkDestroyDescriptorUpdateTemplateKHR = OP_vkDestroyDescriptorUpdateTemplateKHR;
13491 stream->write(&opcode_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
13492 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013493 uint64_t cgen_var_1049;
13494 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1049, 1);
13495 stream->write((uint64_t*)&cgen_var_1049, 1 * 8);
13496 uint64_t cgen_var_1050;
13497 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1050, 1);
13498 stream->write((uint64_t*)&cgen_var_1050, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013499 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013500 uint64_t cgen_var_1051 = (uint64_t)(uintptr_t)local_pAllocator;
13501 stream->putBe64(cgen_var_1051);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013502 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013503 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013504 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013505 }
13506}
13507
13508void VkEncoder::vkUpdateDescriptorSetWithTemplateKHR(
13509 VkDevice device,
13510 VkDescriptorSet descriptorSet,
13511 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
13512 const void* pData)
13513{
13514 auto stream = mImpl->stream();
13515 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013516 auto resources = mImpl->resources();
13517 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013518 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013519 VkDevice local_device;
13520 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013521 VkDescriptorSet local_descriptorSet;
13522 local_descriptorSet = descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013523 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
13524 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013525 void* local_pData;
13526 local_pData = nullptr;
13527 if (pData)
13528 {
13529 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
13530 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013531 countingStream->rewind();
13532 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013533 uint64_t cgen_var_1052;
13534 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1052, 1);
13535 countingStream->write((uint64_t*)&cgen_var_1052, 1 * 8);
13536 uint64_t cgen_var_1053;
13537 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1053, 1);
13538 countingStream->write((uint64_t*)&cgen_var_1053, 1 * 8);
13539 uint64_t cgen_var_1054;
13540 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1054, 1);
13541 countingStream->write((uint64_t*)&cgen_var_1054, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013542 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013543 uint64_t cgen_var_1055 = (uint64_t)(uintptr_t)local_pData;
13544 countingStream->putBe64(cgen_var_1055);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013545 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013546 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013547 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013548 }
13549 }
13550 uint32_t packetSize_vkUpdateDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13551 countingStream->rewind();
13552 uint32_t opcode_vkUpdateDescriptorSetWithTemplateKHR = OP_vkUpdateDescriptorSetWithTemplateKHR;
13553 stream->write(&opcode_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
13554 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013555 uint64_t cgen_var_1056;
13556 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1056, 1);
13557 stream->write((uint64_t*)&cgen_var_1056, 1 * 8);
13558 uint64_t cgen_var_1057;
13559 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1057, 1);
13560 stream->write((uint64_t*)&cgen_var_1057, 1 * 8);
13561 uint64_t cgen_var_1058;
13562 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1058, 1);
13563 stream->write((uint64_t*)&cgen_var_1058, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013564 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013565 uint64_t cgen_var_1059 = (uint64_t)(uintptr_t)local_pData;
13566 stream->putBe64(cgen_var_1059);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013567 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013568 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013569 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013570 }
13571}
13572
13573#endif
13574#ifdef VK_KHR_create_renderpass2
13575VkResult VkEncoder::vkCreateRenderPass2KHR(
13576 VkDevice device,
13577 const VkRenderPassCreateInfo2KHR* pCreateInfo,
13578 const VkAllocationCallbacks* pAllocator,
13579 VkRenderPass* pRenderPass)
13580{
13581 auto stream = mImpl->stream();
13582 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013583 auto resources = mImpl->resources();
13584 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013585 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013586 VkDevice local_device;
13587 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013588 VkRenderPassCreateInfo2KHR* local_pCreateInfo;
13589 local_pCreateInfo = nullptr;
13590 if (pCreateInfo)
13591 {
13592 local_pCreateInfo = (VkRenderPassCreateInfo2KHR*)pool->alloc(sizeof(const VkRenderPassCreateInfo2KHR));
13593 deepcopy_VkRenderPassCreateInfo2KHR(pool, pCreateInfo, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
13594 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013595 VkAllocationCallbacks* local_pAllocator;
13596 local_pAllocator = nullptr;
13597 if (pAllocator)
13598 {
13599 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13600 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13601 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013602 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013603 countingStream->rewind();
13604 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013605 uint64_t cgen_var_1060;
13606 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1060, 1);
13607 countingStream->write((uint64_t*)&cgen_var_1060, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013608 marshal_VkRenderPassCreateInfo2KHR(countingStream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013609 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013610 uint64_t cgen_var_1061 = (uint64_t)(uintptr_t)local_pAllocator;
13611 countingStream->putBe64(cgen_var_1061);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013612 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013613 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013614 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013615 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013616 uint64_t cgen_var_1062;
13617 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1062, 1);
13618 countingStream->write((uint64_t*)&cgen_var_1062, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013619 }
13620 uint32_t packetSize_vkCreateRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13621 countingStream->rewind();
13622 uint32_t opcode_vkCreateRenderPass2KHR = OP_vkCreateRenderPass2KHR;
13623 stream->write(&opcode_vkCreateRenderPass2KHR, sizeof(uint32_t));
13624 stream->write(&packetSize_vkCreateRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013625 uint64_t cgen_var_1063;
13626 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1063, 1);
13627 stream->write((uint64_t*)&cgen_var_1063, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013628 marshal_VkRenderPassCreateInfo2KHR(stream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013629 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013630 uint64_t cgen_var_1064 = (uint64_t)(uintptr_t)local_pAllocator;
13631 stream->putBe64(cgen_var_1064);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013632 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013633 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013634 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013635 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013636 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013637 uint64_t cgen_var_1065;
13638 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1065, 1);
13639 stream->write((uint64_t*)&cgen_var_1065, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013640 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013641 uint64_t cgen_var_1066;
13642 stream->read((uint64_t*)&cgen_var_1066, 8);
13643 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_1066, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013644 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
13645 stream->read(&vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013646 countingStream->clearPool();
13647 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013648 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013649 return vkCreateRenderPass2KHR_VkResult_return;
13650}
13651
13652void VkEncoder::vkCmdBeginRenderPass2KHR(
13653 VkCommandBuffer commandBuffer,
13654 const VkRenderPassBeginInfo* pRenderPassBegin,
13655 const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
13656{
13657 auto stream = mImpl->stream();
13658 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013659 auto resources = mImpl->resources();
13660 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013661 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013662 VkCommandBuffer local_commandBuffer;
13663 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013664 VkRenderPassBeginInfo* local_pRenderPassBegin;
13665 local_pRenderPassBegin = nullptr;
13666 if (pRenderPassBegin)
13667 {
13668 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
13669 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
13670 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013671 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
13672 local_pSubpassBeginInfo = nullptr;
13673 if (pSubpassBeginInfo)
13674 {
13675 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
13676 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13677 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013678 countingStream->rewind();
13679 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013680 uint64_t cgen_var_1067;
13681 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1067, 1);
13682 countingStream->write((uint64_t*)&cgen_var_1067, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013683 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
13684 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013685 }
13686 uint32_t packetSize_vkCmdBeginRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13687 countingStream->rewind();
13688 uint32_t opcode_vkCmdBeginRenderPass2KHR = OP_vkCmdBeginRenderPass2KHR;
13689 stream->write(&opcode_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
13690 stream->write(&packetSize_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013691 uint64_t cgen_var_1068;
13692 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1068, 1);
13693 stream->write((uint64_t*)&cgen_var_1068, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013694 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
13695 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013696}
13697
13698void VkEncoder::vkCmdNextSubpass2KHR(
13699 VkCommandBuffer commandBuffer,
13700 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
13701 const VkSubpassEndInfoKHR* pSubpassEndInfo)
13702{
13703 auto stream = mImpl->stream();
13704 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013705 auto resources = mImpl->resources();
13706 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013707 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013708 VkCommandBuffer local_commandBuffer;
13709 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013710 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
13711 local_pSubpassBeginInfo = nullptr;
13712 if (pSubpassBeginInfo)
13713 {
13714 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
13715 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13716 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013717 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
13718 local_pSubpassEndInfo = nullptr;
13719 if (pSubpassEndInfo)
13720 {
13721 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
13722 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
13723 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013724 countingStream->rewind();
13725 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013726 uint64_t cgen_var_1069;
13727 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1069, 1);
13728 countingStream->write((uint64_t*)&cgen_var_1069, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013729 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13730 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013731 }
13732 uint32_t packetSize_vkCmdNextSubpass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13733 countingStream->rewind();
13734 uint32_t opcode_vkCmdNextSubpass2KHR = OP_vkCmdNextSubpass2KHR;
13735 stream->write(&opcode_vkCmdNextSubpass2KHR, sizeof(uint32_t));
13736 stream->write(&packetSize_vkCmdNextSubpass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013737 uint64_t cgen_var_1070;
13738 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1070, 1);
13739 stream->write((uint64_t*)&cgen_var_1070, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013740 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13741 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013742}
13743
13744void VkEncoder::vkCmdEndRenderPass2KHR(
13745 VkCommandBuffer commandBuffer,
13746 const VkSubpassEndInfoKHR* pSubpassEndInfo)
13747{
13748 auto stream = mImpl->stream();
13749 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013750 auto resources = mImpl->resources();
13751 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013752 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013753 VkCommandBuffer local_commandBuffer;
13754 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013755 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
13756 local_pSubpassEndInfo = nullptr;
13757 if (pSubpassEndInfo)
13758 {
13759 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
13760 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
13761 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013762 countingStream->rewind();
13763 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013764 uint64_t cgen_var_1071;
13765 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1071, 1);
13766 countingStream->write((uint64_t*)&cgen_var_1071, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013767 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013768 }
13769 uint32_t packetSize_vkCmdEndRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13770 countingStream->rewind();
13771 uint32_t opcode_vkCmdEndRenderPass2KHR = OP_vkCmdEndRenderPass2KHR;
13772 stream->write(&opcode_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
13773 stream->write(&packetSize_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013774 uint64_t cgen_var_1072;
13775 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1072, 1);
13776 stream->write((uint64_t*)&cgen_var_1072, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013777 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013778}
13779
13780#endif
13781#ifdef VK_KHR_shared_presentable_image
13782VkResult VkEncoder::vkGetSwapchainStatusKHR(
13783 VkDevice device,
13784 VkSwapchainKHR swapchain)
13785{
13786 auto stream = mImpl->stream();
13787 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013788 auto resources = mImpl->resources();
13789 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013790 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013791 VkDevice local_device;
13792 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013793 VkSwapchainKHR local_swapchain;
13794 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013795 countingStream->rewind();
13796 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013797 uint64_t cgen_var_1073;
13798 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1073, 1);
13799 countingStream->write((uint64_t*)&cgen_var_1073, 1 * 8);
13800 uint64_t cgen_var_1074;
13801 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1074, 1);
13802 countingStream->write((uint64_t*)&cgen_var_1074, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013803 }
13804 uint32_t packetSize_vkGetSwapchainStatusKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13805 countingStream->rewind();
13806 uint32_t opcode_vkGetSwapchainStatusKHR = OP_vkGetSwapchainStatusKHR;
13807 stream->write(&opcode_vkGetSwapchainStatusKHR, sizeof(uint32_t));
13808 stream->write(&packetSize_vkGetSwapchainStatusKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013809 uint64_t cgen_var_1075;
13810 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1075, 1);
13811 stream->write((uint64_t*)&cgen_var_1075, 1 * 8);
13812 uint64_t cgen_var_1076;
13813 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1076, 1);
13814 stream->write((uint64_t*)&cgen_var_1076, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013815 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
13816 stream->read(&vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013817 countingStream->clearPool();
13818 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013819 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013820 return vkGetSwapchainStatusKHR_VkResult_return;
13821}
13822
13823#endif
13824#ifdef VK_KHR_external_fence_capabilities
13825void VkEncoder::vkGetPhysicalDeviceExternalFencePropertiesKHR(
13826 VkPhysicalDevice physicalDevice,
13827 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
13828 VkExternalFenceProperties* pExternalFenceProperties)
13829{
13830 auto stream = mImpl->stream();
13831 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013832 auto resources = mImpl->resources();
13833 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013834 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013835 VkPhysicalDevice local_physicalDevice;
13836 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013837 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
13838 local_pExternalFenceInfo = nullptr;
13839 if (pExternalFenceInfo)
13840 {
13841 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
13842 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
13843 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013844 countingStream->rewind();
13845 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013846 uint64_t cgen_var_1077;
13847 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1077, 1);
13848 countingStream->write((uint64_t*)&cgen_var_1077, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013849 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013850 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
13851 }
13852 uint32_t packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13853 countingStream->rewind();
13854 uint32_t opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR = OP_vkGetPhysicalDeviceExternalFencePropertiesKHR;
13855 stream->write(&opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
13856 stream->write(&packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013857 uint64_t cgen_var_1078;
13858 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1078, 1);
13859 stream->write((uint64_t*)&cgen_var_1078, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013860 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013861 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
13862 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
13863}
13864
13865#endif
13866#ifdef VK_KHR_external_fence
13867#endif
13868#ifdef VK_KHR_external_fence_win32
13869VkResult VkEncoder::vkImportFenceWin32HandleKHR(
13870 VkDevice device,
13871 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
13872{
13873 auto stream = mImpl->stream();
13874 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013875 auto resources = mImpl->resources();
13876 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013877 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013878 VkDevice local_device;
13879 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013880 VkImportFenceWin32HandleInfoKHR* local_pImportFenceWin32HandleInfo;
13881 local_pImportFenceWin32HandleInfo = nullptr;
13882 if (pImportFenceWin32HandleInfo)
13883 {
13884 local_pImportFenceWin32HandleInfo = (VkImportFenceWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportFenceWin32HandleInfoKHR));
13885 deepcopy_VkImportFenceWin32HandleInfoKHR(pool, pImportFenceWin32HandleInfo, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
13886 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013887 countingStream->rewind();
13888 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013889 uint64_t cgen_var_1079;
13890 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1079, 1);
13891 countingStream->write((uint64_t*)&cgen_var_1079, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013892 marshal_VkImportFenceWin32HandleInfoKHR(countingStream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013893 }
13894 uint32_t packetSize_vkImportFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13895 countingStream->rewind();
13896 uint32_t opcode_vkImportFenceWin32HandleKHR = OP_vkImportFenceWin32HandleKHR;
13897 stream->write(&opcode_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
13898 stream->write(&packetSize_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013899 uint64_t cgen_var_1080;
13900 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1080, 1);
13901 stream->write((uint64_t*)&cgen_var_1080, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013902 marshal_VkImportFenceWin32HandleInfoKHR(stream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013903 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
13904 stream->read(&vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013905 countingStream->clearPool();
13906 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013907 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013908 return vkImportFenceWin32HandleKHR_VkResult_return;
13909}
13910
13911VkResult VkEncoder::vkGetFenceWin32HandleKHR(
13912 VkDevice device,
13913 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
13914 HANDLE* pHandle)
13915{
13916 auto stream = mImpl->stream();
13917 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013918 auto resources = mImpl->resources();
13919 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013920 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013921 VkDevice local_device;
13922 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013923 VkFenceGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
13924 local_pGetWin32HandleInfo = nullptr;
13925 if (pGetWin32HandleInfo)
13926 {
13927 local_pGetWin32HandleInfo = (VkFenceGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkFenceGetWin32HandleInfoKHR));
13928 deepcopy_VkFenceGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
13929 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013930 countingStream->rewind();
13931 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013932 uint64_t cgen_var_1081;
13933 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1081, 1);
13934 countingStream->write((uint64_t*)&cgen_var_1081, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013935 marshal_VkFenceGetWin32HandleInfoKHR(countingStream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013936 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
13937 }
13938 uint32_t packetSize_vkGetFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13939 countingStream->rewind();
13940 uint32_t opcode_vkGetFenceWin32HandleKHR = OP_vkGetFenceWin32HandleKHR;
13941 stream->write(&opcode_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
13942 stream->write(&packetSize_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013943 uint64_t cgen_var_1082;
13944 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1082, 1);
13945 stream->write((uint64_t*)&cgen_var_1082, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013946 marshal_VkFenceGetWin32HandleInfoKHR(stream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013947 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
13948 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
13949 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
13950 stream->read(&vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013951 countingStream->clearPool();
13952 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013953 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013954 return vkGetFenceWin32HandleKHR_VkResult_return;
13955}
13956
13957#endif
13958#ifdef VK_KHR_external_fence_fd
13959VkResult VkEncoder::vkImportFenceFdKHR(
13960 VkDevice device,
13961 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
13962{
13963 auto stream = mImpl->stream();
13964 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013965 auto resources = mImpl->resources();
13966 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013967 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013968 VkDevice local_device;
13969 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013970 VkImportFenceFdInfoKHR* local_pImportFenceFdInfo;
13971 local_pImportFenceFdInfo = nullptr;
13972 if (pImportFenceFdInfo)
13973 {
13974 local_pImportFenceFdInfo = (VkImportFenceFdInfoKHR*)pool->alloc(sizeof(const VkImportFenceFdInfoKHR));
13975 deepcopy_VkImportFenceFdInfoKHR(pool, pImportFenceFdInfo, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
13976 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013977 countingStream->rewind();
13978 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013979 uint64_t cgen_var_1083;
13980 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1083, 1);
13981 countingStream->write((uint64_t*)&cgen_var_1083, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013982 marshal_VkImportFenceFdInfoKHR(countingStream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013983 }
13984 uint32_t packetSize_vkImportFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13985 countingStream->rewind();
13986 uint32_t opcode_vkImportFenceFdKHR = OP_vkImportFenceFdKHR;
13987 stream->write(&opcode_vkImportFenceFdKHR, sizeof(uint32_t));
13988 stream->write(&packetSize_vkImportFenceFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013989 uint64_t cgen_var_1084;
13990 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1084, 1);
13991 stream->write((uint64_t*)&cgen_var_1084, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013992 marshal_VkImportFenceFdInfoKHR(stream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013993 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
13994 stream->read(&vkImportFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013995 countingStream->clearPool();
13996 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013997 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013998 return vkImportFenceFdKHR_VkResult_return;
13999}
14000
14001VkResult VkEncoder::vkGetFenceFdKHR(
14002 VkDevice device,
14003 const VkFenceGetFdInfoKHR* pGetFdInfo,
14004 int* pFd)
14005{
14006 auto stream = mImpl->stream();
14007 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014008 auto resources = mImpl->resources();
14009 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014010 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014011 VkDevice local_device;
14012 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014013 VkFenceGetFdInfoKHR* local_pGetFdInfo;
14014 local_pGetFdInfo = nullptr;
14015 if (pGetFdInfo)
14016 {
14017 local_pGetFdInfo = (VkFenceGetFdInfoKHR*)pool->alloc(sizeof(const VkFenceGetFdInfoKHR));
14018 deepcopy_VkFenceGetFdInfoKHR(pool, pGetFdInfo, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
14019 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014020 countingStream->rewind();
14021 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014022 uint64_t cgen_var_1085;
14023 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1085, 1);
14024 countingStream->write((uint64_t*)&cgen_var_1085, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014025 marshal_VkFenceGetFdInfoKHR(countingStream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014026 countingStream->write((int*)pFd, sizeof(int));
14027 }
14028 uint32_t packetSize_vkGetFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14029 countingStream->rewind();
14030 uint32_t opcode_vkGetFenceFdKHR = OP_vkGetFenceFdKHR;
14031 stream->write(&opcode_vkGetFenceFdKHR, sizeof(uint32_t));
14032 stream->write(&packetSize_vkGetFenceFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014033 uint64_t cgen_var_1086;
14034 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1086, 1);
14035 stream->write((uint64_t*)&cgen_var_1086, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014036 marshal_VkFenceGetFdInfoKHR(stream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014037 stream->write((int*)pFd, sizeof(int));
14038 stream->read((int*)pFd, sizeof(int));
14039 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
14040 stream->read(&vkGetFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014041 countingStream->clearPool();
14042 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014043 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014044 return vkGetFenceFdKHR_VkResult_return;
14045}
14046
14047#endif
14048#ifdef VK_KHR_maintenance2
14049#endif
14050#ifdef VK_KHR_get_surface_capabilities2
14051VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2KHR(
14052 VkPhysicalDevice physicalDevice,
14053 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
14054 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
14055{
14056 auto stream = mImpl->stream();
14057 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014058 auto resources = mImpl->resources();
14059 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014060 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014061 VkPhysicalDevice local_physicalDevice;
14062 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014063 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
14064 local_pSurfaceInfo = nullptr;
14065 if (pSurfaceInfo)
14066 {
14067 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
14068 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
14069 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014070 countingStream->rewind();
14071 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014072 uint64_t cgen_var_1087;
14073 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1087, 1);
14074 countingStream->write((uint64_t*)&cgen_var_1087, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014075 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014076 marshal_VkSurfaceCapabilities2KHR(countingStream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
14077 }
14078 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14079 countingStream->rewind();
14080 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR = OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR;
14081 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
14082 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014083 uint64_t cgen_var_1088;
14084 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1088, 1);
14085 stream->write((uint64_t*)&cgen_var_1088, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014086 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014087 marshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
14088 unmarshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
14089 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
14090 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014091 countingStream->clearPool();
14092 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014093 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014094 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
14095}
14096
14097VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormats2KHR(
14098 VkPhysicalDevice physicalDevice,
14099 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
14100 uint32_t* pSurfaceFormatCount,
14101 VkSurfaceFormat2KHR* pSurfaceFormats)
14102{
14103 auto stream = mImpl->stream();
14104 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014105 auto resources = mImpl->resources();
14106 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014107 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014108 VkPhysicalDevice local_physicalDevice;
14109 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014110 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
14111 local_pSurfaceInfo = nullptr;
14112 if (pSurfaceInfo)
14113 {
14114 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
14115 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
14116 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014117 countingStream->rewind();
14118 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014119 uint64_t cgen_var_1089;
14120 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1089, 1);
14121 countingStream->write((uint64_t*)&cgen_var_1089, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014122 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014123 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014124 uint64_t cgen_var_1090 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
14125 countingStream->putBe64(cgen_var_1090);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014126 if (pSurfaceFormatCount)
14127 {
14128 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
14129 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014130 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014131 uint64_t cgen_var_1091 = (uint64_t)(uintptr_t)pSurfaceFormats;
14132 countingStream->putBe64(cgen_var_1091);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014133 if (pSurfaceFormats)
14134 {
14135 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
14136 {
14137 marshal_VkSurfaceFormat2KHR(countingStream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
14138 }
14139 }
14140 }
14141 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14142 countingStream->rewind();
14143 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormats2KHR = OP_vkGetPhysicalDeviceSurfaceFormats2KHR;
14144 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
14145 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014146 uint64_t cgen_var_1092;
14147 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1092, 1);
14148 stream->write((uint64_t*)&cgen_var_1092, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014149 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014150 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014151 uint64_t cgen_var_1093 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
14152 stream->putBe64(cgen_var_1093);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014153 if (pSurfaceFormatCount)
14154 {
14155 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
14156 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014157 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014158 uint64_t cgen_var_1094 = (uint64_t)(uintptr_t)pSurfaceFormats;
14159 stream->putBe64(cgen_var_1094);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014160 if (pSurfaceFormats)
14161 {
14162 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
14163 {
14164 marshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
14165 }
14166 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014167 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014168 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014169 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014170 if (pSurfaceFormatCount)
14171 {
14172 if (!(check_pSurfaceFormatCount))
14173 {
14174 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
14175 }
14176 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
14177 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014178 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014179 VkSurfaceFormat2KHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014180 check_pSurfaceFormats = (VkSurfaceFormat2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014181 if (pSurfaceFormats)
14182 {
14183 if (!(check_pSurfaceFormats))
14184 {
14185 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
14186 }
14187 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
14188 {
14189 unmarshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
14190 }
14191 }
14192 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
14193 stream->read(&vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014194 countingStream->clearPool();
14195 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014196 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014197 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
14198}
14199
14200#endif
14201#ifdef VK_KHR_variable_pointers
14202#endif
14203#ifdef VK_KHR_get_display_properties2
14204VkResult VkEncoder::vkGetPhysicalDeviceDisplayProperties2KHR(
14205 VkPhysicalDevice physicalDevice,
14206 uint32_t* pPropertyCount,
14207 VkDisplayProperties2KHR* pProperties)
14208{
14209 auto stream = mImpl->stream();
14210 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014211 auto resources = mImpl->resources();
14212 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014213 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014214 VkPhysicalDevice local_physicalDevice;
14215 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014216 countingStream->rewind();
14217 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014218 uint64_t cgen_var_1097;
14219 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1097, 1);
14220 countingStream->write((uint64_t*)&cgen_var_1097, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014221 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014222 uint64_t cgen_var_1098 = (uint64_t)(uintptr_t)pPropertyCount;
14223 countingStream->putBe64(cgen_var_1098);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014224 if (pPropertyCount)
14225 {
14226 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14227 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014228 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014229 uint64_t cgen_var_1099 = (uint64_t)(uintptr_t)pProperties;
14230 countingStream->putBe64(cgen_var_1099);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014231 if (pProperties)
14232 {
14233 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14234 {
14235 marshal_VkDisplayProperties2KHR(countingStream, (VkDisplayProperties2KHR*)(pProperties + i));
14236 }
14237 }
14238 }
14239 uint32_t packetSize_vkGetPhysicalDeviceDisplayProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14240 countingStream->rewind();
14241 uint32_t opcode_vkGetPhysicalDeviceDisplayProperties2KHR = OP_vkGetPhysicalDeviceDisplayProperties2KHR;
14242 stream->write(&opcode_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
14243 stream->write(&packetSize_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014244 uint64_t cgen_var_1100;
14245 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1100, 1);
14246 stream->write((uint64_t*)&cgen_var_1100, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014247 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014248 uint64_t cgen_var_1101 = (uint64_t)(uintptr_t)pPropertyCount;
14249 stream->putBe64(cgen_var_1101);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014250 if (pPropertyCount)
14251 {
14252 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14253 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014254 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014255 uint64_t cgen_var_1102 = (uint64_t)(uintptr_t)pProperties;
14256 stream->putBe64(cgen_var_1102);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014257 if (pProperties)
14258 {
14259 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14260 {
14261 marshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
14262 }
14263 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014264 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014265 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014266 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014267 if (pPropertyCount)
14268 {
14269 if (!(check_pPropertyCount))
14270 {
14271 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
14272 }
14273 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
14274 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014275 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014276 VkDisplayProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014277 check_pProperties = (VkDisplayProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014278 if (pProperties)
14279 {
14280 if (!(check_pProperties))
14281 {
14282 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
14283 }
14284 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14285 {
14286 unmarshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
14287 }
14288 }
14289 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
14290 stream->read(&vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014291 countingStream->clearPool();
14292 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014293 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014294 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
14295}
14296
14297VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
14298 VkPhysicalDevice physicalDevice,
14299 uint32_t* pPropertyCount,
14300 VkDisplayPlaneProperties2KHR* pProperties)
14301{
14302 auto stream = mImpl->stream();
14303 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014304 auto resources = mImpl->resources();
14305 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014306 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014307 VkPhysicalDevice local_physicalDevice;
14308 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014309 countingStream->rewind();
14310 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014311 uint64_t cgen_var_1105;
14312 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1105, 1);
14313 countingStream->write((uint64_t*)&cgen_var_1105, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014314 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014315 uint64_t cgen_var_1106 = (uint64_t)(uintptr_t)pPropertyCount;
14316 countingStream->putBe64(cgen_var_1106);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014317 if (pPropertyCount)
14318 {
14319 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14320 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014321 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014322 uint64_t cgen_var_1107 = (uint64_t)(uintptr_t)pProperties;
14323 countingStream->putBe64(cgen_var_1107);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014324 if (pProperties)
14325 {
14326 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14327 {
14328 marshal_VkDisplayPlaneProperties2KHR(countingStream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
14329 }
14330 }
14331 }
14332 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14333 countingStream->rewind();
14334 uint32_t opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
14335 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
14336 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014337 uint64_t cgen_var_1108;
14338 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1108, 1);
14339 stream->write((uint64_t*)&cgen_var_1108, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014340 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014341 uint64_t cgen_var_1109 = (uint64_t)(uintptr_t)pPropertyCount;
14342 stream->putBe64(cgen_var_1109);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014343 if (pPropertyCount)
14344 {
14345 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14346 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014347 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014348 uint64_t cgen_var_1110 = (uint64_t)(uintptr_t)pProperties;
14349 stream->putBe64(cgen_var_1110);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014350 if (pProperties)
14351 {
14352 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14353 {
14354 marshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
14355 }
14356 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014357 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014358 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014359 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014360 if (pPropertyCount)
14361 {
14362 if (!(check_pPropertyCount))
14363 {
14364 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
14365 }
14366 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
14367 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014368 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014369 VkDisplayPlaneProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014370 check_pProperties = (VkDisplayPlaneProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014371 if (pProperties)
14372 {
14373 if (!(check_pProperties))
14374 {
14375 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
14376 }
14377 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14378 {
14379 unmarshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
14380 }
14381 }
14382 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
14383 stream->read(&vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014384 countingStream->clearPool();
14385 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014386 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014387 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
14388}
14389
14390VkResult VkEncoder::vkGetDisplayModeProperties2KHR(
14391 VkPhysicalDevice physicalDevice,
14392 VkDisplayKHR display,
14393 uint32_t* pPropertyCount,
14394 VkDisplayModeProperties2KHR* pProperties)
14395{
14396 auto stream = mImpl->stream();
14397 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014398 auto resources = mImpl->resources();
14399 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014400 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014401 VkPhysicalDevice local_physicalDevice;
14402 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014403 VkDisplayKHR local_display;
14404 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014405 countingStream->rewind();
14406 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014407 uint64_t cgen_var_1113;
14408 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1113, 1);
14409 countingStream->write((uint64_t*)&cgen_var_1113, 1 * 8);
14410 uint64_t cgen_var_1114;
14411 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1114, 1);
14412 countingStream->write((uint64_t*)&cgen_var_1114, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014413 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014414 uint64_t cgen_var_1115 = (uint64_t)(uintptr_t)pPropertyCount;
14415 countingStream->putBe64(cgen_var_1115);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014416 if (pPropertyCount)
14417 {
14418 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14419 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014420 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014421 uint64_t cgen_var_1116 = (uint64_t)(uintptr_t)pProperties;
14422 countingStream->putBe64(cgen_var_1116);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014423 if (pProperties)
14424 {
14425 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14426 {
14427 marshal_VkDisplayModeProperties2KHR(countingStream, (VkDisplayModeProperties2KHR*)(pProperties + i));
14428 }
14429 }
14430 }
14431 uint32_t packetSize_vkGetDisplayModeProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14432 countingStream->rewind();
14433 uint32_t opcode_vkGetDisplayModeProperties2KHR = OP_vkGetDisplayModeProperties2KHR;
14434 stream->write(&opcode_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
14435 stream->write(&packetSize_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014436 uint64_t cgen_var_1117;
14437 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1117, 1);
14438 stream->write((uint64_t*)&cgen_var_1117, 1 * 8);
14439 uint64_t cgen_var_1118;
14440 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1118, 1);
14441 stream->write((uint64_t*)&cgen_var_1118, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014442 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014443 uint64_t cgen_var_1119 = (uint64_t)(uintptr_t)pPropertyCount;
14444 stream->putBe64(cgen_var_1119);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014445 if (pPropertyCount)
14446 {
14447 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14448 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014449 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014450 uint64_t cgen_var_1120 = (uint64_t)(uintptr_t)pProperties;
14451 stream->putBe64(cgen_var_1120);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014452 if (pProperties)
14453 {
14454 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14455 {
14456 marshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
14457 }
14458 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014459 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014460 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014461 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014462 if (pPropertyCount)
14463 {
14464 if (!(check_pPropertyCount))
14465 {
14466 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
14467 }
14468 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
14469 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014470 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014471 VkDisplayModeProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014472 check_pProperties = (VkDisplayModeProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014473 if (pProperties)
14474 {
14475 if (!(check_pProperties))
14476 {
14477 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
14478 }
14479 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14480 {
14481 unmarshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
14482 }
14483 }
14484 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
14485 stream->read(&vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014486 countingStream->clearPool();
14487 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014488 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014489 return vkGetDisplayModeProperties2KHR_VkResult_return;
14490}
14491
14492VkResult VkEncoder::vkGetDisplayPlaneCapabilities2KHR(
14493 VkPhysicalDevice physicalDevice,
14494 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
14495 VkDisplayPlaneCapabilities2KHR* pCapabilities)
14496{
14497 auto stream = mImpl->stream();
14498 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014499 auto resources = mImpl->resources();
14500 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014501 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014502 VkPhysicalDevice local_physicalDevice;
14503 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014504 VkDisplayPlaneInfo2KHR* local_pDisplayPlaneInfo;
14505 local_pDisplayPlaneInfo = nullptr;
14506 if (pDisplayPlaneInfo)
14507 {
14508 local_pDisplayPlaneInfo = (VkDisplayPlaneInfo2KHR*)pool->alloc(sizeof(const VkDisplayPlaneInfo2KHR));
14509 deepcopy_VkDisplayPlaneInfo2KHR(pool, pDisplayPlaneInfo, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
14510 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014511 countingStream->rewind();
14512 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014513 uint64_t cgen_var_1123;
14514 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1123, 1);
14515 countingStream->write((uint64_t*)&cgen_var_1123, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014516 marshal_VkDisplayPlaneInfo2KHR(countingStream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014517 marshal_VkDisplayPlaneCapabilities2KHR(countingStream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
14518 }
14519 uint32_t packetSize_vkGetDisplayPlaneCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14520 countingStream->rewind();
14521 uint32_t opcode_vkGetDisplayPlaneCapabilities2KHR = OP_vkGetDisplayPlaneCapabilities2KHR;
14522 stream->write(&opcode_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
14523 stream->write(&packetSize_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014524 uint64_t cgen_var_1124;
14525 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1124, 1);
14526 stream->write((uint64_t*)&cgen_var_1124, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014527 marshal_VkDisplayPlaneInfo2KHR(stream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014528 marshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
14529 unmarshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
14530 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
14531 stream->read(&vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014532 countingStream->clearPool();
14533 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014534 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014535 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
14536}
14537
14538#endif
14539#ifdef VK_KHR_dedicated_allocation
14540#endif
14541#ifdef VK_KHR_storage_buffer_storage_class
14542#endif
14543#ifdef VK_KHR_relaxed_block_layout
14544#endif
14545#ifdef VK_KHR_get_memory_requirements2
14546void VkEncoder::vkGetImageMemoryRequirements2KHR(
14547 VkDevice device,
14548 const VkImageMemoryRequirementsInfo2* pInfo,
14549 VkMemoryRequirements2* pMemoryRequirements)
14550{
14551 auto stream = mImpl->stream();
14552 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014553 auto resources = mImpl->resources();
14554 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014555 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014556 VkDevice local_device;
14557 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014558 VkImageMemoryRequirementsInfo2* local_pInfo;
14559 local_pInfo = nullptr;
14560 if (pInfo)
14561 {
14562 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
14563 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
14564 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014565 countingStream->rewind();
14566 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014567 uint64_t cgen_var_1125;
14568 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1125, 1);
14569 countingStream->write((uint64_t*)&cgen_var_1125, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014570 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014571 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
14572 }
14573 uint32_t packetSize_vkGetImageMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14574 countingStream->rewind();
14575 uint32_t opcode_vkGetImageMemoryRequirements2KHR = OP_vkGetImageMemoryRequirements2KHR;
14576 stream->write(&opcode_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
14577 stream->write(&packetSize_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014578 uint64_t cgen_var_1126;
14579 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1126, 1);
14580 stream->write((uint64_t*)&cgen_var_1126, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014581 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014582 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14583 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14584}
14585
14586void VkEncoder::vkGetBufferMemoryRequirements2KHR(
14587 VkDevice device,
14588 const VkBufferMemoryRequirementsInfo2* pInfo,
14589 VkMemoryRequirements2* pMemoryRequirements)
14590{
14591 auto stream = mImpl->stream();
14592 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014593 auto resources = mImpl->resources();
14594 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014595 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014596 VkDevice local_device;
14597 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014598 VkBufferMemoryRequirementsInfo2* local_pInfo;
14599 local_pInfo = nullptr;
14600 if (pInfo)
14601 {
14602 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
14603 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
14604 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014605 countingStream->rewind();
14606 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014607 uint64_t cgen_var_1127;
14608 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1127, 1);
14609 countingStream->write((uint64_t*)&cgen_var_1127, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014610 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014611 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
14612 }
14613 uint32_t packetSize_vkGetBufferMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14614 countingStream->rewind();
14615 uint32_t opcode_vkGetBufferMemoryRequirements2KHR = OP_vkGetBufferMemoryRequirements2KHR;
14616 stream->write(&opcode_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
14617 stream->write(&packetSize_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014618 uint64_t cgen_var_1128;
14619 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1128, 1);
14620 stream->write((uint64_t*)&cgen_var_1128, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014621 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014622 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14623 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14624}
14625
14626void VkEncoder::vkGetImageSparseMemoryRequirements2KHR(
14627 VkDevice device,
14628 const VkImageSparseMemoryRequirementsInfo2* pInfo,
14629 uint32_t* pSparseMemoryRequirementCount,
14630 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
14631{
14632 auto stream = mImpl->stream();
14633 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014634 auto resources = mImpl->resources();
14635 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014636 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014637 VkDevice local_device;
14638 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014639 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
14640 local_pInfo = nullptr;
14641 if (pInfo)
14642 {
14643 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
14644 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
14645 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014646 countingStream->rewind();
14647 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014648 uint64_t cgen_var_1129;
14649 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1129, 1);
14650 countingStream->write((uint64_t*)&cgen_var_1129, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014651 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014652 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014653 uint64_t cgen_var_1130 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
14654 countingStream->putBe64(cgen_var_1130);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014655 if (pSparseMemoryRequirementCount)
14656 {
14657 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
14658 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014659 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014660 uint64_t cgen_var_1131 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
14661 countingStream->putBe64(cgen_var_1131);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014662 if (pSparseMemoryRequirements)
14663 {
14664 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
14665 {
14666 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
14667 }
14668 }
14669 }
14670 uint32_t packetSize_vkGetImageSparseMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14671 countingStream->rewind();
14672 uint32_t opcode_vkGetImageSparseMemoryRequirements2KHR = OP_vkGetImageSparseMemoryRequirements2KHR;
14673 stream->write(&opcode_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
14674 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014675 uint64_t cgen_var_1132;
14676 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1132, 1);
14677 stream->write((uint64_t*)&cgen_var_1132, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014678 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014679 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014680 uint64_t cgen_var_1133 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
14681 stream->putBe64(cgen_var_1133);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014682 if (pSparseMemoryRequirementCount)
14683 {
14684 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
14685 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014686 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014687 uint64_t cgen_var_1134 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
14688 stream->putBe64(cgen_var_1134);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014689 if (pSparseMemoryRequirements)
14690 {
14691 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
14692 {
14693 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
14694 }
14695 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014696 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014697 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014698 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014699 if (pSparseMemoryRequirementCount)
14700 {
14701 if (!(check_pSparseMemoryRequirementCount))
14702 {
14703 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
14704 }
14705 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
14706 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014707 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014708 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014709 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014710 if (pSparseMemoryRequirements)
14711 {
14712 if (!(check_pSparseMemoryRequirements))
14713 {
14714 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
14715 }
14716 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
14717 {
14718 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
14719 }
14720 }
14721}
14722
14723#endif
14724#ifdef VK_KHR_image_format_list
14725#endif
14726#ifdef VK_KHR_sampler_ycbcr_conversion
14727VkResult VkEncoder::vkCreateSamplerYcbcrConversionKHR(
14728 VkDevice device,
14729 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
14730 const VkAllocationCallbacks* pAllocator,
14731 VkSamplerYcbcrConversion* pYcbcrConversion)
14732{
14733 auto stream = mImpl->stream();
14734 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014735 auto resources = mImpl->resources();
14736 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014737 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014738 VkDevice local_device;
14739 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014740 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
14741 local_pCreateInfo = nullptr;
14742 if (pCreateInfo)
14743 {
14744 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
14745 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
14746 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014747 VkAllocationCallbacks* local_pAllocator;
14748 local_pAllocator = nullptr;
14749 if (pAllocator)
14750 {
14751 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14752 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14753 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014754 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014755 countingStream->rewind();
14756 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014757 uint64_t cgen_var_1137;
14758 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1137, 1);
14759 countingStream->write((uint64_t*)&cgen_var_1137, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014760 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014761 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014762 uint64_t cgen_var_1138 = (uint64_t)(uintptr_t)local_pAllocator;
14763 countingStream->putBe64(cgen_var_1138);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014764 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014765 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014766 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014767 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014768 uint64_t cgen_var_1139;
14769 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1139, 1);
14770 countingStream->write((uint64_t*)&cgen_var_1139, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014771 }
14772 uint32_t packetSize_vkCreateSamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14773 countingStream->rewind();
14774 uint32_t opcode_vkCreateSamplerYcbcrConversionKHR = OP_vkCreateSamplerYcbcrConversionKHR;
14775 stream->write(&opcode_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
14776 stream->write(&packetSize_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014777 uint64_t cgen_var_1140;
14778 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1140, 1);
14779 stream->write((uint64_t*)&cgen_var_1140, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014780 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014781 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014782 uint64_t cgen_var_1141 = (uint64_t)(uintptr_t)local_pAllocator;
14783 stream->putBe64(cgen_var_1141);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014784 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014785 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014786 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014787 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080014788 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014789 uint64_t cgen_var_1142;
14790 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1142, 1);
14791 stream->write((uint64_t*)&cgen_var_1142, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080014792 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014793 uint64_t cgen_var_1143;
14794 stream->read((uint64_t*)&cgen_var_1143, 8);
14795 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_1143, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014796 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
14797 stream->read(&vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014798 countingStream->clearPool();
14799 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014800 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014801 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
14802}
14803
14804void VkEncoder::vkDestroySamplerYcbcrConversionKHR(
14805 VkDevice device,
14806 VkSamplerYcbcrConversion ycbcrConversion,
14807 const VkAllocationCallbacks* pAllocator)
14808{
14809 auto stream = mImpl->stream();
14810 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014811 auto resources = mImpl->resources();
14812 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014813 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014814 VkDevice local_device;
14815 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014816 VkSamplerYcbcrConversion local_ycbcrConversion;
14817 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014818 VkAllocationCallbacks* local_pAllocator;
14819 local_pAllocator = nullptr;
14820 if (pAllocator)
14821 {
14822 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14823 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14824 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014825 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014826 countingStream->rewind();
14827 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014828 uint64_t cgen_var_1144;
14829 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1144, 1);
14830 countingStream->write((uint64_t*)&cgen_var_1144, 1 * 8);
14831 uint64_t cgen_var_1145;
14832 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1145, 1);
14833 countingStream->write((uint64_t*)&cgen_var_1145, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014834 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014835 uint64_t cgen_var_1146 = (uint64_t)(uintptr_t)local_pAllocator;
14836 countingStream->putBe64(cgen_var_1146);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014837 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014838 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014839 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014840 }
14841 }
14842 uint32_t packetSize_vkDestroySamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14843 countingStream->rewind();
14844 uint32_t opcode_vkDestroySamplerYcbcrConversionKHR = OP_vkDestroySamplerYcbcrConversionKHR;
14845 stream->write(&opcode_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
14846 stream->write(&packetSize_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014847 uint64_t cgen_var_1147;
14848 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1147, 1);
14849 stream->write((uint64_t*)&cgen_var_1147, 1 * 8);
14850 uint64_t cgen_var_1148;
14851 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1148, 1);
14852 stream->write((uint64_t*)&cgen_var_1148, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014853 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014854 uint64_t cgen_var_1149 = (uint64_t)(uintptr_t)local_pAllocator;
14855 stream->putBe64(cgen_var_1149);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014856 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014857 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014858 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014859 }
14860}
14861
14862#endif
14863#ifdef VK_KHR_bind_memory2
14864VkResult VkEncoder::vkBindBufferMemory2KHR(
14865 VkDevice device,
14866 uint32_t bindInfoCount,
14867 const VkBindBufferMemoryInfo* pBindInfos)
14868{
14869 auto stream = mImpl->stream();
14870 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014871 auto resources = mImpl->resources();
14872 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014873 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014874 VkDevice local_device;
14875 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014876 uint32_t local_bindInfoCount;
14877 local_bindInfoCount = bindInfoCount;
14878 VkBindBufferMemoryInfo* local_pBindInfos;
14879 local_pBindInfos = nullptr;
14880 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014881 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014882 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014883 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14884 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014885 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
14886 }
14887 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014888 countingStream->rewind();
14889 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014890 uint64_t cgen_var_1150;
14891 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1150, 1);
14892 countingStream->write((uint64_t*)&cgen_var_1150, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014893 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
14894 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14895 {
14896 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014897 }
14898 }
14899 uint32_t packetSize_vkBindBufferMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14900 countingStream->rewind();
14901 uint32_t opcode_vkBindBufferMemory2KHR = OP_vkBindBufferMemory2KHR;
14902 stream->write(&opcode_vkBindBufferMemory2KHR, sizeof(uint32_t));
14903 stream->write(&packetSize_vkBindBufferMemory2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014904 uint64_t cgen_var_1151;
14905 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1151, 1);
14906 stream->write((uint64_t*)&cgen_var_1151, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014907 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014908 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14909 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014910 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014911 }
14912 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
14913 stream->read(&vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014914 countingStream->clearPool();
14915 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014916 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014917 return vkBindBufferMemory2KHR_VkResult_return;
14918}
14919
14920VkResult VkEncoder::vkBindImageMemory2KHR(
14921 VkDevice device,
14922 uint32_t bindInfoCount,
14923 const VkBindImageMemoryInfo* pBindInfos)
14924{
14925 auto stream = mImpl->stream();
14926 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014927 auto resources = mImpl->resources();
14928 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014929 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014930 VkDevice local_device;
14931 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014932 uint32_t local_bindInfoCount;
14933 local_bindInfoCount = bindInfoCount;
14934 VkBindImageMemoryInfo* local_pBindInfos;
14935 local_pBindInfos = nullptr;
14936 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014937 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014938 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014939 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14940 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014941 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
14942 }
14943 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014944 countingStream->rewind();
14945 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014946 uint64_t cgen_var_1152;
14947 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1152, 1);
14948 countingStream->write((uint64_t*)&cgen_var_1152, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014949 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
14950 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14951 {
14952 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014953 }
14954 }
14955 uint32_t packetSize_vkBindImageMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14956 countingStream->rewind();
14957 uint32_t opcode_vkBindImageMemory2KHR = OP_vkBindImageMemory2KHR;
14958 stream->write(&opcode_vkBindImageMemory2KHR, sizeof(uint32_t));
14959 stream->write(&packetSize_vkBindImageMemory2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014960 uint64_t cgen_var_1153;
14961 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1153, 1);
14962 stream->write((uint64_t*)&cgen_var_1153, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014963 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014964 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14965 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014966 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014967 }
14968 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
14969 stream->read(&vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014970 countingStream->clearPool();
14971 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014972 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014973 return vkBindImageMemory2KHR_VkResult_return;
14974}
14975
14976#endif
14977#ifdef VK_KHR_maintenance3
14978void VkEncoder::vkGetDescriptorSetLayoutSupportKHR(
14979 VkDevice device,
14980 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
14981 VkDescriptorSetLayoutSupport* pSupport)
14982{
14983 auto stream = mImpl->stream();
14984 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014985 auto resources = mImpl->resources();
14986 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014987 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014988 VkDevice local_device;
14989 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014990 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
14991 local_pCreateInfo = nullptr;
14992 if (pCreateInfo)
14993 {
14994 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
14995 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
14996 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014997 countingStream->rewind();
14998 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014999 uint64_t cgen_var_1154;
15000 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1154, 1);
15001 countingStream->write((uint64_t*)&cgen_var_1154, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015002 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015003 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
15004 }
15005 uint32_t packetSize_vkGetDescriptorSetLayoutSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15006 countingStream->rewind();
15007 uint32_t opcode_vkGetDescriptorSetLayoutSupportKHR = OP_vkGetDescriptorSetLayoutSupportKHR;
15008 stream->write(&opcode_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
15009 stream->write(&packetSize_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015010 uint64_t cgen_var_1155;
15011 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1155, 1);
15012 stream->write((uint64_t*)&cgen_var_1155, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015013 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015014 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
15015 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
15016}
15017
15018#endif
15019#ifdef VK_KHR_draw_indirect_count
15020void VkEncoder::vkCmdDrawIndirectCountKHR(
15021 VkCommandBuffer commandBuffer,
15022 VkBuffer buffer,
15023 VkDeviceSize offset,
15024 VkBuffer countBuffer,
15025 VkDeviceSize countBufferOffset,
15026 uint32_t maxDrawCount,
15027 uint32_t stride)
15028{
15029 auto stream = mImpl->stream();
15030 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015031 auto resources = mImpl->resources();
15032 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015033 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015034 VkCommandBuffer local_commandBuffer;
15035 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015036 VkBuffer local_buffer;
15037 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015038 VkDeviceSize local_offset;
15039 local_offset = offset;
15040 VkBuffer local_countBuffer;
15041 local_countBuffer = countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015042 VkDeviceSize local_countBufferOffset;
15043 local_countBufferOffset = countBufferOffset;
15044 uint32_t local_maxDrawCount;
15045 local_maxDrawCount = maxDrawCount;
15046 uint32_t local_stride;
15047 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015048 countingStream->rewind();
15049 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015050 uint64_t cgen_var_1156;
15051 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1156, 1);
15052 countingStream->write((uint64_t*)&cgen_var_1156, 1 * 8);
15053 uint64_t cgen_var_1157;
15054 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1157, 1);
15055 countingStream->write((uint64_t*)&cgen_var_1157, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015056 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015057 uint64_t cgen_var_1158;
15058 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1158, 1);
15059 countingStream->write((uint64_t*)&cgen_var_1158, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015060 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15061 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15062 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015063 }
15064 uint32_t packetSize_vkCmdDrawIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15065 countingStream->rewind();
15066 uint32_t opcode_vkCmdDrawIndirectCountKHR = OP_vkCmdDrawIndirectCountKHR;
15067 stream->write(&opcode_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
15068 stream->write(&packetSize_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015069 uint64_t cgen_var_1159;
15070 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1159, 1);
15071 stream->write((uint64_t*)&cgen_var_1159, 1 * 8);
15072 uint64_t cgen_var_1160;
15073 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1160, 1);
15074 stream->write((uint64_t*)&cgen_var_1160, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015075 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015076 uint64_t cgen_var_1161;
15077 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1161, 1);
15078 stream->write((uint64_t*)&cgen_var_1161, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015079 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15080 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15081 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015082}
15083
15084void VkEncoder::vkCmdDrawIndexedIndirectCountKHR(
15085 VkCommandBuffer commandBuffer,
15086 VkBuffer buffer,
15087 VkDeviceSize offset,
15088 VkBuffer countBuffer,
15089 VkDeviceSize countBufferOffset,
15090 uint32_t maxDrawCount,
15091 uint32_t stride)
15092{
15093 auto stream = mImpl->stream();
15094 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015095 auto resources = mImpl->resources();
15096 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015097 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015098 VkCommandBuffer local_commandBuffer;
15099 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015100 VkBuffer local_buffer;
15101 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015102 VkDeviceSize local_offset;
15103 local_offset = offset;
15104 VkBuffer local_countBuffer;
15105 local_countBuffer = countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015106 VkDeviceSize local_countBufferOffset;
15107 local_countBufferOffset = countBufferOffset;
15108 uint32_t local_maxDrawCount;
15109 local_maxDrawCount = maxDrawCount;
15110 uint32_t local_stride;
15111 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015112 countingStream->rewind();
15113 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015114 uint64_t cgen_var_1162;
15115 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1162, 1);
15116 countingStream->write((uint64_t*)&cgen_var_1162, 1 * 8);
15117 uint64_t cgen_var_1163;
15118 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1163, 1);
15119 countingStream->write((uint64_t*)&cgen_var_1163, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015120 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015121 uint64_t cgen_var_1164;
15122 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1164, 1);
15123 countingStream->write((uint64_t*)&cgen_var_1164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015124 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15125 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15126 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015127 }
15128 uint32_t packetSize_vkCmdDrawIndexedIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15129 countingStream->rewind();
15130 uint32_t opcode_vkCmdDrawIndexedIndirectCountKHR = OP_vkCmdDrawIndexedIndirectCountKHR;
15131 stream->write(&opcode_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
15132 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015133 uint64_t cgen_var_1165;
15134 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1165, 1);
15135 stream->write((uint64_t*)&cgen_var_1165, 1 * 8);
15136 uint64_t cgen_var_1166;
15137 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1166, 1);
15138 stream->write((uint64_t*)&cgen_var_1166, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015139 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015140 uint64_t cgen_var_1167;
15141 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1167, 1);
15142 stream->write((uint64_t*)&cgen_var_1167, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015143 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15144 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15145 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015146}
15147
15148#endif
15149#ifdef VK_KHR_8bit_storage
15150#endif
15151#ifdef VK_EXT_debug_report
15152VkResult VkEncoder::vkCreateDebugReportCallbackEXT(
15153 VkInstance instance,
15154 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
15155 const VkAllocationCallbacks* pAllocator,
15156 VkDebugReportCallbackEXT* pCallback)
15157{
15158 auto stream = mImpl->stream();
15159 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015160 auto resources = mImpl->resources();
15161 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015162 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015163 VkInstance local_instance;
15164 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015165 VkDebugReportCallbackCreateInfoEXT* local_pCreateInfo;
15166 local_pCreateInfo = nullptr;
15167 if (pCreateInfo)
15168 {
15169 local_pCreateInfo = (VkDebugReportCallbackCreateInfoEXT*)pool->alloc(sizeof(const VkDebugReportCallbackCreateInfoEXT));
15170 deepcopy_VkDebugReportCallbackCreateInfoEXT(pool, pCreateInfo, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
15171 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015172 VkAllocationCallbacks* local_pAllocator;
15173 local_pAllocator = nullptr;
15174 if (pAllocator)
15175 {
15176 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15177 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15178 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015179 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015180 countingStream->rewind();
15181 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015182 uint64_t cgen_var_1168;
15183 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1168, 1);
15184 countingStream->write((uint64_t*)&cgen_var_1168, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015185 marshal_VkDebugReportCallbackCreateInfoEXT(countingStream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015186 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015187 uint64_t cgen_var_1169 = (uint64_t)(uintptr_t)local_pAllocator;
15188 countingStream->putBe64(cgen_var_1169);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015189 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015190 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015191 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015192 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015193 uint64_t cgen_var_1170;
15194 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1170, 1);
15195 countingStream->write((uint64_t*)&cgen_var_1170, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015196 }
15197 uint32_t packetSize_vkCreateDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15198 countingStream->rewind();
15199 uint32_t opcode_vkCreateDebugReportCallbackEXT = OP_vkCreateDebugReportCallbackEXT;
15200 stream->write(&opcode_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
15201 stream->write(&packetSize_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015202 uint64_t cgen_var_1171;
15203 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1171, 1);
15204 stream->write((uint64_t*)&cgen_var_1171, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015205 marshal_VkDebugReportCallbackCreateInfoEXT(stream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015206 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015207 uint64_t cgen_var_1172 = (uint64_t)(uintptr_t)local_pAllocator;
15208 stream->putBe64(cgen_var_1172);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015209 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015210 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015211 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015212 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080015213 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015214 uint64_t cgen_var_1173;
15215 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1173, 1);
15216 stream->write((uint64_t*)&cgen_var_1173, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015217 stream->setHandleMapping(resources->unwrapMapping());
15218 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015219 uint64_t cgen_var_1174;
15220 stream->read((uint64_t*)&cgen_var_1174, 8);
15221 stream->handleMapping()->mapHandles_u64_VkDebugReportCallbackEXT(&cgen_var_1174, (VkDebugReportCallbackEXT*)pCallback, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015222 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015223 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
15224 stream->read(&vkCreateDebugReportCallbackEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015225 countingStream->clearPool();
15226 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015227 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015228 return vkCreateDebugReportCallbackEXT_VkResult_return;
15229}
15230
15231void VkEncoder::vkDestroyDebugReportCallbackEXT(
15232 VkInstance instance,
15233 VkDebugReportCallbackEXT callback,
15234 const VkAllocationCallbacks* pAllocator)
15235{
15236 auto stream = mImpl->stream();
15237 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015238 auto resources = mImpl->resources();
15239 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015240 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015241 VkInstance local_instance;
15242 local_instance = instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015243 VkDebugReportCallbackEXT local_callback;
15244 local_callback = callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015245 VkAllocationCallbacks* local_pAllocator;
15246 local_pAllocator = nullptr;
15247 if (pAllocator)
15248 {
15249 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15250 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15251 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015252 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015253 countingStream->rewind();
15254 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015255 uint64_t cgen_var_1175;
15256 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1175, 1);
15257 countingStream->write((uint64_t*)&cgen_var_1175, 1 * 8);
15258 uint64_t cgen_var_1176;
15259 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1176, 1);
15260 countingStream->write((uint64_t*)&cgen_var_1176, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015261 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015262 uint64_t cgen_var_1177 = (uint64_t)(uintptr_t)local_pAllocator;
15263 countingStream->putBe64(cgen_var_1177);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015264 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015265 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015266 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015267 }
15268 }
15269 uint32_t packetSize_vkDestroyDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15270 countingStream->rewind();
15271 uint32_t opcode_vkDestroyDebugReportCallbackEXT = OP_vkDestroyDebugReportCallbackEXT;
15272 stream->write(&opcode_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
15273 stream->write(&packetSize_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015274 uint64_t cgen_var_1178;
15275 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1178, 1);
15276 stream->write((uint64_t*)&cgen_var_1178, 1 * 8);
15277 uint64_t cgen_var_1179;
15278 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1179, 1);
15279 stream->write((uint64_t*)&cgen_var_1179, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015280 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015281 uint64_t cgen_var_1180 = (uint64_t)(uintptr_t)local_pAllocator;
15282 stream->putBe64(cgen_var_1180);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015283 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015284 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015285 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015286 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015287 resources->destroyMapping()->mapHandles_VkDebugReportCallbackEXT((VkDebugReportCallbackEXT*)&callback);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015288}
15289
15290void VkEncoder::vkDebugReportMessageEXT(
15291 VkInstance instance,
15292 VkDebugReportFlagsEXT flags,
15293 VkDebugReportObjectTypeEXT objectType,
15294 uint64_t object,
15295 size_t location,
15296 int32_t messageCode,
15297 const char* pLayerPrefix,
15298 const char* pMessage)
15299{
15300 auto stream = mImpl->stream();
15301 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015302 auto resources = mImpl->resources();
15303 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015304 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015305 VkInstance local_instance;
15306 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015307 VkDebugReportFlagsEXT local_flags;
15308 local_flags = flags;
15309 VkDebugReportObjectTypeEXT local_objectType;
15310 local_objectType = objectType;
15311 uint64_t local_object;
15312 local_object = object;
15313 size_t local_location;
15314 local_location = location;
15315 int32_t local_messageCode;
15316 local_messageCode = messageCode;
15317 char* local_pLayerPrefix;
15318 local_pLayerPrefix = nullptr;
15319 if (pLayerPrefix)
15320 {
15321 local_pLayerPrefix = pool->strDup(pLayerPrefix);
15322 }
15323 char* local_pMessage;
15324 local_pMessage = nullptr;
15325 if (pMessage)
15326 {
15327 local_pMessage = pool->strDup(pMessage);
15328 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015329 countingStream->rewind();
15330 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015331 uint64_t cgen_var_1181;
15332 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1181, 1);
15333 countingStream->write((uint64_t*)&cgen_var_1181, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015334 countingStream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
15335 countingStream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
15336 countingStream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015337 uint64_t cgen_var_1182 = (uint64_t)local_location;
15338 countingStream->putBe64(cgen_var_1182);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015339 countingStream->write((int32_t*)&local_messageCode, sizeof(int32_t));
15340 countingStream->putString(local_pLayerPrefix);
15341 countingStream->putString(local_pMessage);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015342 }
15343 uint32_t packetSize_vkDebugReportMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15344 countingStream->rewind();
15345 uint32_t opcode_vkDebugReportMessageEXT = OP_vkDebugReportMessageEXT;
15346 stream->write(&opcode_vkDebugReportMessageEXT, sizeof(uint32_t));
15347 stream->write(&packetSize_vkDebugReportMessageEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015348 uint64_t cgen_var_1183;
15349 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1183, 1);
15350 stream->write((uint64_t*)&cgen_var_1183, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015351 stream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
15352 stream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
15353 stream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015354 uint64_t cgen_var_1184 = (uint64_t)local_location;
15355 stream->putBe64(cgen_var_1184);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015356 stream->write((int32_t*)&local_messageCode, sizeof(int32_t));
15357 stream->putString(local_pLayerPrefix);
15358 stream->putString(local_pMessage);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015359}
15360
15361#endif
15362#ifdef VK_NV_glsl_shader
15363#endif
15364#ifdef VK_EXT_depth_range_unrestricted
15365#endif
15366#ifdef VK_IMG_filter_cubic
15367#endif
15368#ifdef VK_AMD_rasterization_order
15369#endif
15370#ifdef VK_AMD_shader_trinary_minmax
15371#endif
15372#ifdef VK_AMD_shader_explicit_vertex_parameter
15373#endif
15374#ifdef VK_EXT_debug_marker
15375VkResult VkEncoder::vkDebugMarkerSetObjectTagEXT(
15376 VkDevice device,
15377 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
15378{
15379 auto stream = mImpl->stream();
15380 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015381 auto resources = mImpl->resources();
15382 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015383 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015384 VkDevice local_device;
15385 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015386 VkDebugMarkerObjectTagInfoEXT* local_pTagInfo;
15387 local_pTagInfo = nullptr;
15388 if (pTagInfo)
15389 {
15390 local_pTagInfo = (VkDebugMarkerObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectTagInfoEXT));
15391 deepcopy_VkDebugMarkerObjectTagInfoEXT(pool, pTagInfo, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
15392 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015393 countingStream->rewind();
15394 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015395 uint64_t cgen_var_1185;
15396 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1185, 1);
15397 countingStream->write((uint64_t*)&cgen_var_1185, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015398 marshal_VkDebugMarkerObjectTagInfoEXT(countingStream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015399 }
15400 uint32_t packetSize_vkDebugMarkerSetObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15401 countingStream->rewind();
15402 uint32_t opcode_vkDebugMarkerSetObjectTagEXT = OP_vkDebugMarkerSetObjectTagEXT;
15403 stream->write(&opcode_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
15404 stream->write(&packetSize_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015405 uint64_t cgen_var_1186;
15406 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1186, 1);
15407 stream->write((uint64_t*)&cgen_var_1186, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015408 marshal_VkDebugMarkerObjectTagInfoEXT(stream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015409 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
15410 stream->read(&vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015411 countingStream->clearPool();
15412 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015413 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015414 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
15415}
15416
15417VkResult VkEncoder::vkDebugMarkerSetObjectNameEXT(
15418 VkDevice device,
15419 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
15420{
15421 auto stream = mImpl->stream();
15422 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015423 auto resources = mImpl->resources();
15424 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015425 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015426 VkDevice local_device;
15427 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015428 VkDebugMarkerObjectNameInfoEXT* local_pNameInfo;
15429 local_pNameInfo = nullptr;
15430 if (pNameInfo)
15431 {
15432 local_pNameInfo = (VkDebugMarkerObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectNameInfoEXT));
15433 deepcopy_VkDebugMarkerObjectNameInfoEXT(pool, pNameInfo, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
15434 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015435 countingStream->rewind();
15436 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015437 uint64_t cgen_var_1187;
15438 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1187, 1);
15439 countingStream->write((uint64_t*)&cgen_var_1187, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015440 marshal_VkDebugMarkerObjectNameInfoEXT(countingStream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015441 }
15442 uint32_t packetSize_vkDebugMarkerSetObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15443 countingStream->rewind();
15444 uint32_t opcode_vkDebugMarkerSetObjectNameEXT = OP_vkDebugMarkerSetObjectNameEXT;
15445 stream->write(&opcode_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
15446 stream->write(&packetSize_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015447 uint64_t cgen_var_1188;
15448 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1188, 1);
15449 stream->write((uint64_t*)&cgen_var_1188, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015450 marshal_VkDebugMarkerObjectNameInfoEXT(stream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015451 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
15452 stream->read(&vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015453 countingStream->clearPool();
15454 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015455 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015456 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
15457}
15458
15459void VkEncoder::vkCmdDebugMarkerBeginEXT(
15460 VkCommandBuffer commandBuffer,
15461 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
15462{
15463 auto stream = mImpl->stream();
15464 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015465 auto resources = mImpl->resources();
15466 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015467 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015468 VkCommandBuffer local_commandBuffer;
15469 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015470 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
15471 local_pMarkerInfo = nullptr;
15472 if (pMarkerInfo)
15473 {
15474 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
15475 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
15476 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015477 countingStream->rewind();
15478 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015479 uint64_t cgen_var_1189;
15480 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1189, 1);
15481 countingStream->write((uint64_t*)&cgen_var_1189, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015482 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015483 }
15484 uint32_t packetSize_vkCmdDebugMarkerBeginEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15485 countingStream->rewind();
15486 uint32_t opcode_vkCmdDebugMarkerBeginEXT = OP_vkCmdDebugMarkerBeginEXT;
15487 stream->write(&opcode_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
15488 stream->write(&packetSize_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015489 uint64_t cgen_var_1190;
15490 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1190, 1);
15491 stream->write((uint64_t*)&cgen_var_1190, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015492 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015493}
15494
15495void VkEncoder::vkCmdDebugMarkerEndEXT(
15496 VkCommandBuffer commandBuffer)
15497{
15498 auto stream = mImpl->stream();
15499 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015500 auto resources = mImpl->resources();
15501 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015502 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015503 VkCommandBuffer local_commandBuffer;
15504 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015505 countingStream->rewind();
15506 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015507 uint64_t cgen_var_1191;
15508 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1191, 1);
15509 countingStream->write((uint64_t*)&cgen_var_1191, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015510 }
15511 uint32_t packetSize_vkCmdDebugMarkerEndEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15512 countingStream->rewind();
15513 uint32_t opcode_vkCmdDebugMarkerEndEXT = OP_vkCmdDebugMarkerEndEXT;
15514 stream->write(&opcode_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
15515 stream->write(&packetSize_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015516 uint64_t cgen_var_1192;
15517 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1192, 1);
15518 stream->write((uint64_t*)&cgen_var_1192, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015519}
15520
15521void VkEncoder::vkCmdDebugMarkerInsertEXT(
15522 VkCommandBuffer commandBuffer,
15523 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
15524{
15525 auto stream = mImpl->stream();
15526 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015527 auto resources = mImpl->resources();
15528 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015529 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015530 VkCommandBuffer local_commandBuffer;
15531 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015532 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
15533 local_pMarkerInfo = nullptr;
15534 if (pMarkerInfo)
15535 {
15536 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
15537 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
15538 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015539 countingStream->rewind();
15540 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015541 uint64_t cgen_var_1193;
15542 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1193, 1);
15543 countingStream->write((uint64_t*)&cgen_var_1193, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015544 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015545 }
15546 uint32_t packetSize_vkCmdDebugMarkerInsertEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15547 countingStream->rewind();
15548 uint32_t opcode_vkCmdDebugMarkerInsertEXT = OP_vkCmdDebugMarkerInsertEXT;
15549 stream->write(&opcode_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
15550 stream->write(&packetSize_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015551 uint64_t cgen_var_1194;
15552 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1194, 1);
15553 stream->write((uint64_t*)&cgen_var_1194, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015554 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015555}
15556
15557#endif
15558#ifdef VK_AMD_gcn_shader
15559#endif
15560#ifdef VK_NV_dedicated_allocation
15561#endif
15562#ifdef VK_AMD_draw_indirect_count
15563void VkEncoder::vkCmdDrawIndirectCountAMD(
15564 VkCommandBuffer commandBuffer,
15565 VkBuffer buffer,
15566 VkDeviceSize offset,
15567 VkBuffer countBuffer,
15568 VkDeviceSize countBufferOffset,
15569 uint32_t maxDrawCount,
15570 uint32_t stride)
15571{
15572 auto stream = mImpl->stream();
15573 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015574 auto resources = mImpl->resources();
15575 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015576 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015577 VkCommandBuffer local_commandBuffer;
15578 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015579 VkBuffer local_buffer;
15580 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015581 VkDeviceSize local_offset;
15582 local_offset = offset;
15583 VkBuffer local_countBuffer;
15584 local_countBuffer = countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015585 VkDeviceSize local_countBufferOffset;
15586 local_countBufferOffset = countBufferOffset;
15587 uint32_t local_maxDrawCount;
15588 local_maxDrawCount = maxDrawCount;
15589 uint32_t local_stride;
15590 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015591 countingStream->rewind();
15592 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015593 uint64_t cgen_var_1195;
15594 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1195, 1);
15595 countingStream->write((uint64_t*)&cgen_var_1195, 1 * 8);
15596 uint64_t cgen_var_1196;
15597 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1196, 1);
15598 countingStream->write((uint64_t*)&cgen_var_1196, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015599 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015600 uint64_t cgen_var_1197;
15601 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1197, 1);
15602 countingStream->write((uint64_t*)&cgen_var_1197, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015603 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15604 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15605 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015606 }
15607 uint32_t packetSize_vkCmdDrawIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15608 countingStream->rewind();
15609 uint32_t opcode_vkCmdDrawIndirectCountAMD = OP_vkCmdDrawIndirectCountAMD;
15610 stream->write(&opcode_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
15611 stream->write(&packetSize_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015612 uint64_t cgen_var_1198;
15613 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1198, 1);
15614 stream->write((uint64_t*)&cgen_var_1198, 1 * 8);
15615 uint64_t cgen_var_1199;
15616 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1199, 1);
15617 stream->write((uint64_t*)&cgen_var_1199, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015618 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015619 uint64_t cgen_var_1200;
15620 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1200, 1);
15621 stream->write((uint64_t*)&cgen_var_1200, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015622 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15623 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15624 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015625}
15626
15627void VkEncoder::vkCmdDrawIndexedIndirectCountAMD(
15628 VkCommandBuffer commandBuffer,
15629 VkBuffer buffer,
15630 VkDeviceSize offset,
15631 VkBuffer countBuffer,
15632 VkDeviceSize countBufferOffset,
15633 uint32_t maxDrawCount,
15634 uint32_t stride)
15635{
15636 auto stream = mImpl->stream();
15637 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015638 auto resources = mImpl->resources();
15639 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015640 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015641 VkCommandBuffer local_commandBuffer;
15642 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015643 VkBuffer local_buffer;
15644 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015645 VkDeviceSize local_offset;
15646 local_offset = offset;
15647 VkBuffer local_countBuffer;
15648 local_countBuffer = countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015649 VkDeviceSize local_countBufferOffset;
15650 local_countBufferOffset = countBufferOffset;
15651 uint32_t local_maxDrawCount;
15652 local_maxDrawCount = maxDrawCount;
15653 uint32_t local_stride;
15654 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015655 countingStream->rewind();
15656 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015657 uint64_t cgen_var_1201;
15658 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1201, 1);
15659 countingStream->write((uint64_t*)&cgen_var_1201, 1 * 8);
15660 uint64_t cgen_var_1202;
15661 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1202, 1);
15662 countingStream->write((uint64_t*)&cgen_var_1202, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015663 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015664 uint64_t cgen_var_1203;
15665 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1203, 1);
15666 countingStream->write((uint64_t*)&cgen_var_1203, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015667 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15668 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15669 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015670 }
15671 uint32_t packetSize_vkCmdDrawIndexedIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15672 countingStream->rewind();
15673 uint32_t opcode_vkCmdDrawIndexedIndirectCountAMD = OP_vkCmdDrawIndexedIndirectCountAMD;
15674 stream->write(&opcode_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
15675 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015676 uint64_t cgen_var_1204;
15677 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1204, 1);
15678 stream->write((uint64_t*)&cgen_var_1204, 1 * 8);
15679 uint64_t cgen_var_1205;
15680 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1205, 1);
15681 stream->write((uint64_t*)&cgen_var_1205, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015682 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015683 uint64_t cgen_var_1206;
15684 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1206, 1);
15685 stream->write((uint64_t*)&cgen_var_1206, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015686 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15687 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15688 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015689}
15690
15691#endif
15692#ifdef VK_AMD_negative_viewport_height
15693#endif
15694#ifdef VK_AMD_gpu_shader_half_float
15695#endif
15696#ifdef VK_AMD_shader_ballot
15697#endif
15698#ifdef VK_AMD_texture_gather_bias_lod
15699#endif
15700#ifdef VK_AMD_shader_info
15701VkResult VkEncoder::vkGetShaderInfoAMD(
15702 VkDevice device,
15703 VkPipeline pipeline,
15704 VkShaderStageFlagBits shaderStage,
15705 VkShaderInfoTypeAMD infoType,
15706 size_t* pInfoSize,
15707 void* pInfo)
15708{
15709 auto stream = mImpl->stream();
15710 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015711 auto resources = mImpl->resources();
15712 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015713 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015714 VkDevice local_device;
15715 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015716 VkPipeline local_pipeline;
15717 local_pipeline = pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015718 VkShaderStageFlagBits local_shaderStage;
15719 local_shaderStage = shaderStage;
15720 VkShaderInfoTypeAMD local_infoType;
15721 local_infoType = infoType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015722 countingStream->rewind();
15723 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015724 uint64_t cgen_var_1207;
15725 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1207, 1);
15726 countingStream->write((uint64_t*)&cgen_var_1207, 1 * 8);
15727 uint64_t cgen_var_1208;
15728 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1208, 1);
15729 countingStream->write((uint64_t*)&cgen_var_1208, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015730 countingStream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
15731 countingStream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015732 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015733 uint64_t cgen_var_1209 = (uint64_t)(uintptr_t)pInfoSize;
15734 countingStream->putBe64(cgen_var_1209);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015735 if (pInfoSize)
15736 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015737 uint64_t cgen_var_1210 = (uint64_t)(*pInfoSize);
15738 countingStream->putBe64(cgen_var_1210);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015739 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015740 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015741 uint64_t cgen_var_1211 = (uint64_t)(uintptr_t)pInfo;
15742 countingStream->putBe64(cgen_var_1211);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015743 if (pInfo)
15744 {
15745 countingStream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
15746 }
15747 }
15748 uint32_t packetSize_vkGetShaderInfoAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15749 countingStream->rewind();
15750 uint32_t opcode_vkGetShaderInfoAMD = OP_vkGetShaderInfoAMD;
15751 stream->write(&opcode_vkGetShaderInfoAMD, sizeof(uint32_t));
15752 stream->write(&packetSize_vkGetShaderInfoAMD, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015753 uint64_t cgen_var_1212;
15754 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1212, 1);
15755 stream->write((uint64_t*)&cgen_var_1212, 1 * 8);
15756 uint64_t cgen_var_1213;
15757 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1213, 1);
15758 stream->write((uint64_t*)&cgen_var_1213, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015759 stream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
15760 stream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015761 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015762 uint64_t cgen_var_1214 = (uint64_t)(uintptr_t)pInfoSize;
15763 stream->putBe64(cgen_var_1214);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015764 if (pInfoSize)
15765 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015766 uint64_t cgen_var_1215 = (uint64_t)(*pInfoSize);
15767 stream->putBe64(cgen_var_1215);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015768 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015769 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015770 uint64_t cgen_var_1216 = (uint64_t)(uintptr_t)pInfo;
15771 stream->putBe64(cgen_var_1216);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015772 if (pInfo)
15773 {
15774 stream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
15775 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015776 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015777 size_t* check_pInfoSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015778 check_pInfoSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015779 if (pInfoSize)
15780 {
15781 if (!(check_pInfoSize))
15782 {
15783 fprintf(stderr, "fatal: pInfoSize inconsistent between guest and host\n");
15784 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015785 (*pInfoSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015786 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015787 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015788 void* check_pInfo;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015789 check_pInfo = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015790 if (pInfo)
15791 {
15792 if (!(check_pInfo))
15793 {
15794 fprintf(stderr, "fatal: pInfo inconsistent between guest and host\n");
15795 }
15796 stream->read((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
15797 }
15798 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
15799 stream->read(&vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015800 countingStream->clearPool();
15801 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015802 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015803 return vkGetShaderInfoAMD_VkResult_return;
15804}
15805
15806#endif
15807#ifdef VK_AMD_shader_image_load_store_lod
15808#endif
15809#ifdef VK_IMG_format_pvrtc
15810#endif
15811#ifdef VK_NV_external_memory_capabilities
15812VkResult VkEncoder::vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
15813 VkPhysicalDevice physicalDevice,
15814 VkFormat format,
15815 VkImageType type,
15816 VkImageTiling tiling,
15817 VkImageUsageFlags usage,
15818 VkImageCreateFlags flags,
15819 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
15820 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
15821{
15822 auto stream = mImpl->stream();
15823 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015824 auto resources = mImpl->resources();
15825 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015826 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015827 VkPhysicalDevice local_physicalDevice;
15828 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015829 VkFormat local_format;
15830 local_format = format;
15831 VkImageType local_type;
15832 local_type = type;
15833 VkImageTiling local_tiling;
15834 local_tiling = tiling;
15835 VkImageUsageFlags local_usage;
15836 local_usage = usage;
15837 VkImageCreateFlags local_flags;
15838 local_flags = flags;
15839 VkExternalMemoryHandleTypeFlagsNV local_externalHandleType;
15840 local_externalHandleType = externalHandleType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015841 countingStream->rewind();
15842 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015843 uint64_t cgen_var_1220;
15844 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1220, 1);
15845 countingStream->write((uint64_t*)&cgen_var_1220, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015846 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
15847 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
15848 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
15849 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
15850 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
15851 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015852 marshal_VkExternalImageFormatPropertiesNV(countingStream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
15853 }
15854 uint32_t packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15855 countingStream->rewind();
15856 uint32_t opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
15857 stream->write(&opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
15858 stream->write(&packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015859 uint64_t cgen_var_1221;
15860 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1221, 1);
15861 stream->write((uint64_t*)&cgen_var_1221, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015862 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
15863 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
15864 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
15865 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
15866 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
15867 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015868 marshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
15869 unmarshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
15870 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
15871 stream->read(&vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015872 countingStream->clearPool();
15873 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015874 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015875 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
15876}
15877
15878#endif
15879#ifdef VK_NV_external_memory
15880#endif
15881#ifdef VK_NV_external_memory_win32
15882VkResult VkEncoder::vkGetMemoryWin32HandleNV(
15883 VkDevice device,
15884 VkDeviceMemory memory,
15885 VkExternalMemoryHandleTypeFlagsNV handleType,
15886 HANDLE* pHandle)
15887{
15888 auto stream = mImpl->stream();
15889 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015890 auto resources = mImpl->resources();
15891 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015892 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015893 VkDevice local_device;
15894 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015895 VkDeviceMemory local_memory;
15896 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015897 VkExternalMemoryHandleTypeFlagsNV local_handleType;
15898 local_handleType = handleType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015899 countingStream->rewind();
15900 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015901 uint64_t cgen_var_1222;
15902 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1222, 1);
15903 countingStream->write((uint64_t*)&cgen_var_1222, 1 * 8);
15904 uint64_t cgen_var_1223;
15905 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1223, 1);
15906 countingStream->write((uint64_t*)&cgen_var_1223, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015907 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015908 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
15909 }
15910 uint32_t packetSize_vkGetMemoryWin32HandleNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15911 countingStream->rewind();
15912 uint32_t opcode_vkGetMemoryWin32HandleNV = OP_vkGetMemoryWin32HandleNV;
15913 stream->write(&opcode_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
15914 stream->write(&packetSize_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015915 uint64_t cgen_var_1224;
15916 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1224, 1);
15917 stream->write((uint64_t*)&cgen_var_1224, 1 * 8);
15918 uint64_t cgen_var_1225;
15919 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1225, 1);
15920 stream->write((uint64_t*)&cgen_var_1225, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015921 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015922 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
15923 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
15924 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
15925 stream->read(&vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015926 countingStream->clearPool();
15927 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015928 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015929 return vkGetMemoryWin32HandleNV_VkResult_return;
15930}
15931
15932#endif
15933#ifdef VK_NV_win32_keyed_mutex
15934#endif
15935#ifdef VK_EXT_validation_flags
15936#endif
15937#ifdef VK_NN_vi_surface
15938VkResult VkEncoder::vkCreateViSurfaceNN(
15939 VkInstance instance,
15940 const VkViSurfaceCreateInfoNN* pCreateInfo,
15941 const VkAllocationCallbacks* pAllocator,
15942 VkSurfaceKHR* pSurface)
15943{
15944 auto stream = mImpl->stream();
15945 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015946 auto resources = mImpl->resources();
15947 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015948 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015949 VkInstance local_instance;
15950 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015951 VkViSurfaceCreateInfoNN* local_pCreateInfo;
15952 local_pCreateInfo = nullptr;
15953 if (pCreateInfo)
15954 {
15955 local_pCreateInfo = (VkViSurfaceCreateInfoNN*)pool->alloc(sizeof(const VkViSurfaceCreateInfoNN));
15956 deepcopy_VkViSurfaceCreateInfoNN(pool, pCreateInfo, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
15957 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015958 VkAllocationCallbacks* local_pAllocator;
15959 local_pAllocator = nullptr;
15960 if (pAllocator)
15961 {
15962 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15963 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15964 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015965 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015966 countingStream->rewind();
15967 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015968 uint64_t cgen_var_1226;
15969 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1226, 1);
15970 countingStream->write((uint64_t*)&cgen_var_1226, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015971 marshal_VkViSurfaceCreateInfoNN(countingStream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015972 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015973 uint64_t cgen_var_1227 = (uint64_t)(uintptr_t)local_pAllocator;
15974 countingStream->putBe64(cgen_var_1227);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015975 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015976 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015977 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015978 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015979 uint64_t cgen_var_1228;
15980 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1228, 1);
15981 countingStream->write((uint64_t*)&cgen_var_1228, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015982 }
15983 uint32_t packetSize_vkCreateViSurfaceNN = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15984 countingStream->rewind();
15985 uint32_t opcode_vkCreateViSurfaceNN = OP_vkCreateViSurfaceNN;
15986 stream->write(&opcode_vkCreateViSurfaceNN, sizeof(uint32_t));
15987 stream->write(&packetSize_vkCreateViSurfaceNN, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015988 uint64_t cgen_var_1229;
15989 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1229, 1);
15990 stream->write((uint64_t*)&cgen_var_1229, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015991 marshal_VkViSurfaceCreateInfoNN(stream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015992 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015993 uint64_t cgen_var_1230 = (uint64_t)(uintptr_t)local_pAllocator;
15994 stream->putBe64(cgen_var_1230);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015995 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015996 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015997 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015998 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080015999 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016000 uint64_t cgen_var_1231;
16001 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1231, 1);
16002 stream->write((uint64_t*)&cgen_var_1231, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016003 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016004 uint64_t cgen_var_1232;
16005 stream->read((uint64_t*)&cgen_var_1232, 8);
16006 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1232, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016007 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
16008 stream->read(&vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016009 countingStream->clearPool();
16010 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016011 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016012 return vkCreateViSurfaceNN_VkResult_return;
16013}
16014
16015#endif
16016#ifdef VK_EXT_shader_subgroup_ballot
16017#endif
16018#ifdef VK_EXT_shader_subgroup_vote
16019#endif
16020#ifdef VK_EXT_conditional_rendering
16021void VkEncoder::vkCmdBeginConditionalRenderingEXT(
16022 VkCommandBuffer commandBuffer,
16023 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
16024{
16025 auto stream = mImpl->stream();
16026 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016027 auto resources = mImpl->resources();
16028 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016029 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016030 VkCommandBuffer local_commandBuffer;
16031 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016032 VkConditionalRenderingBeginInfoEXT* local_pConditionalRenderingBegin;
16033 local_pConditionalRenderingBegin = nullptr;
16034 if (pConditionalRenderingBegin)
16035 {
16036 local_pConditionalRenderingBegin = (VkConditionalRenderingBeginInfoEXT*)pool->alloc(sizeof(const VkConditionalRenderingBeginInfoEXT));
16037 deepcopy_VkConditionalRenderingBeginInfoEXT(pool, pConditionalRenderingBegin, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
16038 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016039 countingStream->rewind();
16040 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016041 uint64_t cgen_var_1233;
16042 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1233, 1);
16043 countingStream->write((uint64_t*)&cgen_var_1233, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016044 marshal_VkConditionalRenderingBeginInfoEXT(countingStream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016045 }
16046 uint32_t packetSize_vkCmdBeginConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16047 countingStream->rewind();
16048 uint32_t opcode_vkCmdBeginConditionalRenderingEXT = OP_vkCmdBeginConditionalRenderingEXT;
16049 stream->write(&opcode_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
16050 stream->write(&packetSize_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016051 uint64_t cgen_var_1234;
16052 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1234, 1);
16053 stream->write((uint64_t*)&cgen_var_1234, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016054 marshal_VkConditionalRenderingBeginInfoEXT(stream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016055}
16056
16057void VkEncoder::vkCmdEndConditionalRenderingEXT(
16058 VkCommandBuffer commandBuffer)
16059{
16060 auto stream = mImpl->stream();
16061 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016062 auto resources = mImpl->resources();
16063 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016064 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016065 VkCommandBuffer local_commandBuffer;
16066 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016067 countingStream->rewind();
16068 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016069 uint64_t cgen_var_1235;
16070 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1235, 1);
16071 countingStream->write((uint64_t*)&cgen_var_1235, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016072 }
16073 uint32_t packetSize_vkCmdEndConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16074 countingStream->rewind();
16075 uint32_t opcode_vkCmdEndConditionalRenderingEXT = OP_vkCmdEndConditionalRenderingEXT;
16076 stream->write(&opcode_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
16077 stream->write(&packetSize_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016078 uint64_t cgen_var_1236;
16079 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1236, 1);
16080 stream->write((uint64_t*)&cgen_var_1236, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016081}
16082
16083#endif
16084#ifdef VK_NVX_device_generated_commands
16085void VkEncoder::vkCmdProcessCommandsNVX(
16086 VkCommandBuffer commandBuffer,
16087 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
16088{
16089 auto stream = mImpl->stream();
16090 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016091 auto resources = mImpl->resources();
16092 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016093 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016094 VkCommandBuffer local_commandBuffer;
16095 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016096 VkCmdProcessCommandsInfoNVX* local_pProcessCommandsInfo;
16097 local_pProcessCommandsInfo = nullptr;
16098 if (pProcessCommandsInfo)
16099 {
16100 local_pProcessCommandsInfo = (VkCmdProcessCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdProcessCommandsInfoNVX));
16101 deepcopy_VkCmdProcessCommandsInfoNVX(pool, pProcessCommandsInfo, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
16102 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016103 countingStream->rewind();
16104 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016105 uint64_t cgen_var_1237;
16106 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1237, 1);
16107 countingStream->write((uint64_t*)&cgen_var_1237, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016108 marshal_VkCmdProcessCommandsInfoNVX(countingStream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016109 }
16110 uint32_t packetSize_vkCmdProcessCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16111 countingStream->rewind();
16112 uint32_t opcode_vkCmdProcessCommandsNVX = OP_vkCmdProcessCommandsNVX;
16113 stream->write(&opcode_vkCmdProcessCommandsNVX, sizeof(uint32_t));
16114 stream->write(&packetSize_vkCmdProcessCommandsNVX, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016115 uint64_t cgen_var_1238;
16116 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1238, 1);
16117 stream->write((uint64_t*)&cgen_var_1238, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016118 marshal_VkCmdProcessCommandsInfoNVX(stream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016119}
16120
16121void VkEncoder::vkCmdReserveSpaceForCommandsNVX(
16122 VkCommandBuffer commandBuffer,
16123 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
16124{
16125 auto stream = mImpl->stream();
16126 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016127 auto resources = mImpl->resources();
16128 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016129 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016130 VkCommandBuffer local_commandBuffer;
16131 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016132 VkCmdReserveSpaceForCommandsInfoNVX* local_pReserveSpaceInfo;
16133 local_pReserveSpaceInfo = nullptr;
16134 if (pReserveSpaceInfo)
16135 {
16136 local_pReserveSpaceInfo = (VkCmdReserveSpaceForCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdReserveSpaceForCommandsInfoNVX));
16137 deepcopy_VkCmdReserveSpaceForCommandsInfoNVX(pool, pReserveSpaceInfo, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
16138 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016139 countingStream->rewind();
16140 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016141 uint64_t cgen_var_1239;
16142 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1239, 1);
16143 countingStream->write((uint64_t*)&cgen_var_1239, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016144 marshal_VkCmdReserveSpaceForCommandsInfoNVX(countingStream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016145 }
16146 uint32_t packetSize_vkCmdReserveSpaceForCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16147 countingStream->rewind();
16148 uint32_t opcode_vkCmdReserveSpaceForCommandsNVX = OP_vkCmdReserveSpaceForCommandsNVX;
16149 stream->write(&opcode_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
16150 stream->write(&packetSize_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016151 uint64_t cgen_var_1240;
16152 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1240, 1);
16153 stream->write((uint64_t*)&cgen_var_1240, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016154 marshal_VkCmdReserveSpaceForCommandsInfoNVX(stream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016155}
16156
16157VkResult VkEncoder::vkCreateIndirectCommandsLayoutNVX(
16158 VkDevice device,
16159 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
16160 const VkAllocationCallbacks* pAllocator,
16161 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
16162{
16163 auto stream = mImpl->stream();
16164 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016165 auto resources = mImpl->resources();
16166 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016167 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016168 VkDevice local_device;
16169 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016170 VkIndirectCommandsLayoutCreateInfoNVX* local_pCreateInfo;
16171 local_pCreateInfo = nullptr;
16172 if (pCreateInfo)
16173 {
16174 local_pCreateInfo = (VkIndirectCommandsLayoutCreateInfoNVX*)pool->alloc(sizeof(const VkIndirectCommandsLayoutCreateInfoNVX));
16175 deepcopy_VkIndirectCommandsLayoutCreateInfoNVX(pool, pCreateInfo, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
16176 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016177 VkAllocationCallbacks* local_pAllocator;
16178 local_pAllocator = nullptr;
16179 if (pAllocator)
16180 {
16181 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16182 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16183 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016184 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016185 countingStream->rewind();
16186 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016187 uint64_t cgen_var_1241;
16188 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1241, 1);
16189 countingStream->write((uint64_t*)&cgen_var_1241, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016190 marshal_VkIndirectCommandsLayoutCreateInfoNVX(countingStream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016191 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016192 uint64_t cgen_var_1242 = (uint64_t)(uintptr_t)local_pAllocator;
16193 countingStream->putBe64(cgen_var_1242);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016194 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016195 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016196 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016197 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016198 uint64_t cgen_var_1243;
16199 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1243, 1);
16200 countingStream->write((uint64_t*)&cgen_var_1243, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016201 }
16202 uint32_t packetSize_vkCreateIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16203 countingStream->rewind();
16204 uint32_t opcode_vkCreateIndirectCommandsLayoutNVX = OP_vkCreateIndirectCommandsLayoutNVX;
16205 stream->write(&opcode_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
16206 stream->write(&packetSize_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016207 uint64_t cgen_var_1244;
16208 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1244, 1);
16209 stream->write((uint64_t*)&cgen_var_1244, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016210 marshal_VkIndirectCommandsLayoutCreateInfoNVX(stream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016211 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016212 uint64_t cgen_var_1245 = (uint64_t)(uintptr_t)local_pAllocator;
16213 stream->putBe64(cgen_var_1245);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016214 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016215 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016216 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016217 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016218 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016219 uint64_t cgen_var_1246;
16220 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1246, 1);
16221 stream->write((uint64_t*)&cgen_var_1246, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016222 stream->setHandleMapping(resources->unwrapMapping());
16223 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016224 uint64_t cgen_var_1247;
16225 stream->read((uint64_t*)&cgen_var_1247, 8);
16226 stream->handleMapping()->mapHandles_u64_VkIndirectCommandsLayoutNVX(&cgen_var_1247, (VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016227 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016228 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
16229 stream->read(&vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016230 countingStream->clearPool();
16231 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016232 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016233 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
16234}
16235
16236void VkEncoder::vkDestroyIndirectCommandsLayoutNVX(
16237 VkDevice device,
16238 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
16239 const VkAllocationCallbacks* pAllocator)
16240{
16241 auto stream = mImpl->stream();
16242 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016243 auto resources = mImpl->resources();
16244 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016245 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016246 VkDevice local_device;
16247 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016248 VkIndirectCommandsLayoutNVX local_indirectCommandsLayout;
16249 local_indirectCommandsLayout = indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016250 VkAllocationCallbacks* local_pAllocator;
16251 local_pAllocator = nullptr;
16252 if (pAllocator)
16253 {
16254 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16255 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16256 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016257 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016258 countingStream->rewind();
16259 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016260 uint64_t cgen_var_1248;
16261 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1248, 1);
16262 countingStream->write((uint64_t*)&cgen_var_1248, 1 * 8);
16263 uint64_t cgen_var_1249;
16264 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1249, 1);
16265 countingStream->write((uint64_t*)&cgen_var_1249, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016266 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016267 uint64_t cgen_var_1250 = (uint64_t)(uintptr_t)local_pAllocator;
16268 countingStream->putBe64(cgen_var_1250);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016269 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016270 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016271 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016272 }
16273 }
16274 uint32_t packetSize_vkDestroyIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16275 countingStream->rewind();
16276 uint32_t opcode_vkDestroyIndirectCommandsLayoutNVX = OP_vkDestroyIndirectCommandsLayoutNVX;
16277 stream->write(&opcode_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
16278 stream->write(&packetSize_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016279 uint64_t cgen_var_1251;
16280 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1251, 1);
16281 stream->write((uint64_t*)&cgen_var_1251, 1 * 8);
16282 uint64_t cgen_var_1252;
16283 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1252, 1);
16284 stream->write((uint64_t*)&cgen_var_1252, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016285 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016286 uint64_t cgen_var_1253 = (uint64_t)(uintptr_t)local_pAllocator;
16287 stream->putBe64(cgen_var_1253);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016288 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016289 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016290 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016291 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016292 resources->destroyMapping()->mapHandles_VkIndirectCommandsLayoutNVX((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016293}
16294
16295VkResult VkEncoder::vkCreateObjectTableNVX(
16296 VkDevice device,
16297 const VkObjectTableCreateInfoNVX* pCreateInfo,
16298 const VkAllocationCallbacks* pAllocator,
16299 VkObjectTableNVX* pObjectTable)
16300{
16301 auto stream = mImpl->stream();
16302 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016303 auto resources = mImpl->resources();
16304 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016305 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016306 VkDevice local_device;
16307 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016308 VkObjectTableCreateInfoNVX* local_pCreateInfo;
16309 local_pCreateInfo = nullptr;
16310 if (pCreateInfo)
16311 {
16312 local_pCreateInfo = (VkObjectTableCreateInfoNVX*)pool->alloc(sizeof(const VkObjectTableCreateInfoNVX));
16313 deepcopy_VkObjectTableCreateInfoNVX(pool, pCreateInfo, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
16314 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016315 VkAllocationCallbacks* local_pAllocator;
16316 local_pAllocator = nullptr;
16317 if (pAllocator)
16318 {
16319 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16320 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16321 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016322 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016323 countingStream->rewind();
16324 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016325 uint64_t cgen_var_1254;
16326 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1254, 1);
16327 countingStream->write((uint64_t*)&cgen_var_1254, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016328 marshal_VkObjectTableCreateInfoNVX(countingStream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016329 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016330 uint64_t cgen_var_1255 = (uint64_t)(uintptr_t)local_pAllocator;
16331 countingStream->putBe64(cgen_var_1255);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016332 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016333 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016334 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016335 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016336 uint64_t cgen_var_1256;
16337 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1256, 1);
16338 countingStream->write((uint64_t*)&cgen_var_1256, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016339 }
16340 uint32_t packetSize_vkCreateObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16341 countingStream->rewind();
16342 uint32_t opcode_vkCreateObjectTableNVX = OP_vkCreateObjectTableNVX;
16343 stream->write(&opcode_vkCreateObjectTableNVX, sizeof(uint32_t));
16344 stream->write(&packetSize_vkCreateObjectTableNVX, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016345 uint64_t cgen_var_1257;
16346 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1257, 1);
16347 stream->write((uint64_t*)&cgen_var_1257, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016348 marshal_VkObjectTableCreateInfoNVX(stream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016349 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016350 uint64_t cgen_var_1258 = (uint64_t)(uintptr_t)local_pAllocator;
16351 stream->putBe64(cgen_var_1258);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016352 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016353 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016354 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016355 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016356 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016357 uint64_t cgen_var_1259;
16358 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1259, 1);
16359 stream->write((uint64_t*)&cgen_var_1259, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016360 stream->setHandleMapping(resources->unwrapMapping());
16361 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016362 uint64_t cgen_var_1260;
16363 stream->read((uint64_t*)&cgen_var_1260, 8);
16364 stream->handleMapping()->mapHandles_u64_VkObjectTableNVX(&cgen_var_1260, (VkObjectTableNVX*)pObjectTable, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016365 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016366 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
16367 stream->read(&vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016368 countingStream->clearPool();
16369 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016370 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016371 return vkCreateObjectTableNVX_VkResult_return;
16372}
16373
16374void VkEncoder::vkDestroyObjectTableNVX(
16375 VkDevice device,
16376 VkObjectTableNVX objectTable,
16377 const VkAllocationCallbacks* pAllocator)
16378{
16379 auto stream = mImpl->stream();
16380 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016381 auto resources = mImpl->resources();
16382 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016383 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016384 VkDevice local_device;
16385 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016386 VkObjectTableNVX local_objectTable;
16387 local_objectTable = objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016388 VkAllocationCallbacks* local_pAllocator;
16389 local_pAllocator = nullptr;
16390 if (pAllocator)
16391 {
16392 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16393 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16394 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016395 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016396 countingStream->rewind();
16397 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016398 uint64_t cgen_var_1261;
16399 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1261, 1);
16400 countingStream->write((uint64_t*)&cgen_var_1261, 1 * 8);
16401 uint64_t cgen_var_1262;
16402 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1262, 1);
16403 countingStream->write((uint64_t*)&cgen_var_1262, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016404 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016405 uint64_t cgen_var_1263 = (uint64_t)(uintptr_t)local_pAllocator;
16406 countingStream->putBe64(cgen_var_1263);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016407 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016408 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016409 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016410 }
16411 }
16412 uint32_t packetSize_vkDestroyObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16413 countingStream->rewind();
16414 uint32_t opcode_vkDestroyObjectTableNVX = OP_vkDestroyObjectTableNVX;
16415 stream->write(&opcode_vkDestroyObjectTableNVX, sizeof(uint32_t));
16416 stream->write(&packetSize_vkDestroyObjectTableNVX, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016417 uint64_t cgen_var_1264;
16418 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1264, 1);
16419 stream->write((uint64_t*)&cgen_var_1264, 1 * 8);
16420 uint64_t cgen_var_1265;
16421 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1265, 1);
16422 stream->write((uint64_t*)&cgen_var_1265, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016423 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016424 uint64_t cgen_var_1266 = (uint64_t)(uintptr_t)local_pAllocator;
16425 stream->putBe64(cgen_var_1266);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016426 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016427 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016428 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016429 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016430 resources->destroyMapping()->mapHandles_VkObjectTableNVX((VkObjectTableNVX*)&objectTable);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016431}
16432
16433VkResult VkEncoder::vkRegisterObjectsNVX(
16434 VkDevice device,
16435 VkObjectTableNVX objectTable,
16436 uint32_t objectCount,
16437 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
16438 const uint32_t* pObjectIndices)
16439{
16440 auto stream = mImpl->stream();
16441 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016442 auto resources = mImpl->resources();
16443 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016444 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016445 VkDevice local_device;
16446 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016447 VkObjectTableNVX local_objectTable;
16448 local_objectTable = objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016449 uint32_t local_objectCount;
16450 local_objectCount = objectCount;
16451 VkObjectTableEntryNVX** local_ppObjectTableEntries;
Lingfeng Yang36891c52018-11-09 14:18:35 -080016452 (void)ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016453 uint32_t* local_pObjectIndices;
16454 local_pObjectIndices = nullptr;
16455 if (pObjectIndices)
16456 {
16457 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
16458 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016459 countingStream->rewind();
16460 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016461 uint64_t cgen_var_1267;
16462 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1267, 1);
16463 countingStream->write((uint64_t*)&cgen_var_1267, 1 * 8);
16464 uint64_t cgen_var_1268;
16465 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1268, 1);
16466 countingStream->write((uint64_t*)&cgen_var_1268, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016467 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080016468 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016469 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016470 }
16471 uint32_t packetSize_vkRegisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16472 countingStream->rewind();
16473 uint32_t opcode_vkRegisterObjectsNVX = OP_vkRegisterObjectsNVX;
16474 stream->write(&opcode_vkRegisterObjectsNVX, sizeof(uint32_t));
16475 stream->write(&packetSize_vkRegisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016476 uint64_t cgen_var_1269;
16477 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1269, 1);
16478 stream->write((uint64_t*)&cgen_var_1269, 1 * 8);
16479 uint64_t cgen_var_1270;
16480 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1270, 1);
16481 stream->write((uint64_t*)&cgen_var_1270, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016482 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080016483 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016484 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016485 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
16486 stream->read(&vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016487 countingStream->clearPool();
16488 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016489 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016490 return vkRegisterObjectsNVX_VkResult_return;
16491}
16492
16493VkResult VkEncoder::vkUnregisterObjectsNVX(
16494 VkDevice device,
16495 VkObjectTableNVX objectTable,
16496 uint32_t objectCount,
16497 const VkObjectEntryTypeNVX* pObjectEntryTypes,
16498 const uint32_t* pObjectIndices)
16499{
16500 auto stream = mImpl->stream();
16501 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016502 auto resources = mImpl->resources();
16503 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016504 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016505 VkDevice local_device;
16506 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016507 VkObjectTableNVX local_objectTable;
16508 local_objectTable = objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016509 uint32_t local_objectCount;
16510 local_objectCount = objectCount;
16511 VkObjectEntryTypeNVX* local_pObjectEntryTypes;
16512 local_pObjectEntryTypes = nullptr;
16513 if (pObjectEntryTypes)
16514 {
16515 local_pObjectEntryTypes = (VkObjectEntryTypeNVX*)pool->dupArray(pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
16516 }
16517 uint32_t* local_pObjectIndices;
16518 local_pObjectIndices = nullptr;
16519 if (pObjectIndices)
16520 {
16521 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
16522 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016523 countingStream->rewind();
16524 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016525 uint64_t cgen_var_1271;
16526 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1271, 1);
16527 countingStream->write((uint64_t*)&cgen_var_1271, 1 * 8);
16528 uint64_t cgen_var_1272;
16529 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1272, 1);
16530 countingStream->write((uint64_t*)&cgen_var_1272, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016531 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
16532 countingStream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
16533 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016534 }
16535 uint32_t packetSize_vkUnregisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16536 countingStream->rewind();
16537 uint32_t opcode_vkUnregisterObjectsNVX = OP_vkUnregisterObjectsNVX;
16538 stream->write(&opcode_vkUnregisterObjectsNVX, sizeof(uint32_t));
16539 stream->write(&packetSize_vkUnregisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016540 uint64_t cgen_var_1273;
16541 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1273, 1);
16542 stream->write((uint64_t*)&cgen_var_1273, 1 * 8);
16543 uint64_t cgen_var_1274;
16544 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1274, 1);
16545 stream->write((uint64_t*)&cgen_var_1274, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016546 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
16547 stream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
16548 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016549 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
16550 stream->read(&vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016551 countingStream->clearPool();
16552 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016553 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016554 return vkUnregisterObjectsNVX_VkResult_return;
16555}
16556
16557void VkEncoder::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
16558 VkPhysicalDevice physicalDevice,
16559 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
16560 VkDeviceGeneratedCommandsLimitsNVX* pLimits)
16561{
16562 auto stream = mImpl->stream();
16563 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016564 auto resources = mImpl->resources();
16565 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016566 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016567 VkPhysicalDevice local_physicalDevice;
16568 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016569 countingStream->rewind();
16570 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016571 uint64_t cgen_var_1275;
16572 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1275, 1);
16573 countingStream->write((uint64_t*)&cgen_var_1275, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016574 marshal_VkDeviceGeneratedCommandsFeaturesNVX(countingStream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
16575 marshal_VkDeviceGeneratedCommandsLimitsNVX(countingStream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
16576 }
16577 uint32_t packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16578 countingStream->rewind();
16579 uint32_t opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = OP_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX;
16580 stream->write(&opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
16581 stream->write(&packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016582 uint64_t cgen_var_1276;
16583 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1276, 1);
16584 stream->write((uint64_t*)&cgen_var_1276, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016585 marshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
16586 marshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
16587 unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
16588 unmarshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
16589}
16590
16591#endif
16592#ifdef VK_NV_clip_space_w_scaling
16593void VkEncoder::vkCmdSetViewportWScalingNV(
16594 VkCommandBuffer commandBuffer,
16595 uint32_t firstViewport,
16596 uint32_t viewportCount,
16597 const VkViewportWScalingNV* pViewportWScalings)
16598{
16599 auto stream = mImpl->stream();
16600 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016601 auto resources = mImpl->resources();
16602 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016603 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016604 VkCommandBuffer local_commandBuffer;
16605 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016606 uint32_t local_firstViewport;
16607 local_firstViewport = firstViewport;
16608 uint32_t local_viewportCount;
16609 local_viewportCount = viewportCount;
16610 VkViewportWScalingNV* local_pViewportWScalings;
16611 local_pViewportWScalings = nullptr;
16612 if (pViewportWScalings)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016613 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016614 local_pViewportWScalings = (VkViewportWScalingNV*)pool->alloc(((viewportCount)) * sizeof(const VkViewportWScalingNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016615 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
16616 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016617 deepcopy_VkViewportWScalingNV(pool, pViewportWScalings + i, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
16618 }
16619 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016620 countingStream->rewind();
16621 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016622 uint64_t cgen_var_1277;
16623 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1277, 1);
16624 countingStream->write((uint64_t*)&cgen_var_1277, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016625 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
16626 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
16627 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
16628 {
16629 marshal_VkViewportWScalingNV(countingStream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016630 }
16631 }
16632 uint32_t packetSize_vkCmdSetViewportWScalingNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16633 countingStream->rewind();
16634 uint32_t opcode_vkCmdSetViewportWScalingNV = OP_vkCmdSetViewportWScalingNV;
16635 stream->write(&opcode_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
16636 stream->write(&packetSize_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016637 uint64_t cgen_var_1278;
16638 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1278, 1);
16639 stream->write((uint64_t*)&cgen_var_1278, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016640 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
16641 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016642 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
16643 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016644 marshal_VkViewportWScalingNV(stream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016645 }
16646}
16647
16648#endif
16649#ifdef VK_EXT_direct_mode_display
16650VkResult VkEncoder::vkReleaseDisplayEXT(
16651 VkPhysicalDevice physicalDevice,
16652 VkDisplayKHR display)
16653{
16654 auto stream = mImpl->stream();
16655 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016656 auto resources = mImpl->resources();
16657 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016658 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016659 VkPhysicalDevice local_physicalDevice;
16660 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016661 VkDisplayKHR local_display;
16662 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016663 countingStream->rewind();
16664 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016665 uint64_t cgen_var_1279;
16666 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1279, 1);
16667 countingStream->write((uint64_t*)&cgen_var_1279, 1 * 8);
16668 uint64_t cgen_var_1280;
16669 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1280, 1);
16670 countingStream->write((uint64_t*)&cgen_var_1280, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016671 }
16672 uint32_t packetSize_vkReleaseDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16673 countingStream->rewind();
16674 uint32_t opcode_vkReleaseDisplayEXT = OP_vkReleaseDisplayEXT;
16675 stream->write(&opcode_vkReleaseDisplayEXT, sizeof(uint32_t));
16676 stream->write(&packetSize_vkReleaseDisplayEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016677 uint64_t cgen_var_1281;
16678 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1281, 1);
16679 stream->write((uint64_t*)&cgen_var_1281, 1 * 8);
16680 uint64_t cgen_var_1282;
16681 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1282, 1);
16682 stream->write((uint64_t*)&cgen_var_1282, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016683 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
16684 stream->read(&vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016685 countingStream->clearPool();
16686 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016687 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016688 return vkReleaseDisplayEXT_VkResult_return;
16689}
16690
16691#endif
16692#ifdef VK_EXT_acquire_xlib_display
16693VkResult VkEncoder::vkAcquireXlibDisplayEXT(
16694 VkPhysicalDevice physicalDevice,
16695 Display* dpy,
16696 VkDisplayKHR display)
16697{
16698 auto stream = mImpl->stream();
16699 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016700 auto resources = mImpl->resources();
16701 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016702 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016703 VkPhysicalDevice local_physicalDevice;
16704 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016705 VkDisplayKHR local_display;
16706 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016707 countingStream->rewind();
16708 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016709 uint64_t cgen_var_1283;
16710 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1283, 1);
16711 countingStream->write((uint64_t*)&cgen_var_1283, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016712 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016713 uint64_t cgen_var_1284;
16714 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1284, 1);
16715 countingStream->write((uint64_t*)&cgen_var_1284, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016716 }
16717 uint32_t packetSize_vkAcquireXlibDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16718 countingStream->rewind();
16719 uint32_t opcode_vkAcquireXlibDisplayEXT = OP_vkAcquireXlibDisplayEXT;
16720 stream->write(&opcode_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
16721 stream->write(&packetSize_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016722 uint64_t cgen_var_1285;
16723 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1285, 1);
16724 stream->write((uint64_t*)&cgen_var_1285, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016725 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016726 uint64_t cgen_var_1286;
16727 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1286, 1);
16728 stream->write((uint64_t*)&cgen_var_1286, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016729 stream->read((Display*)dpy, sizeof(Display));
16730 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
16731 stream->read(&vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016732 countingStream->clearPool();
16733 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016734 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016735 return vkAcquireXlibDisplayEXT_VkResult_return;
16736}
16737
16738VkResult VkEncoder::vkGetRandROutputDisplayEXT(
16739 VkPhysicalDevice physicalDevice,
16740 Display* dpy,
16741 RROutput rrOutput,
16742 VkDisplayKHR* pDisplay)
16743{
16744 auto stream = mImpl->stream();
16745 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016746 auto resources = mImpl->resources();
16747 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016748 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016749 VkPhysicalDevice local_physicalDevice;
16750 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016751 RROutput local_rrOutput;
16752 local_rrOutput = rrOutput;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016753 countingStream->rewind();
16754 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016755 uint64_t cgen_var_1287;
16756 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1287, 1);
16757 countingStream->write((uint64_t*)&cgen_var_1287, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016758 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016759 countingStream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016760 uint64_t cgen_var_1288;
16761 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1288, 1);
16762 countingStream->write((uint64_t*)&cgen_var_1288, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016763 }
16764 uint32_t packetSize_vkGetRandROutputDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16765 countingStream->rewind();
16766 uint32_t opcode_vkGetRandROutputDisplayEXT = OP_vkGetRandROutputDisplayEXT;
16767 stream->write(&opcode_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
16768 stream->write(&packetSize_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016769 uint64_t cgen_var_1289;
16770 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1289, 1);
16771 stream->write((uint64_t*)&cgen_var_1289, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016772 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016773 stream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yange4008a02018-11-18 12:22:48 -080016774 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016775 uint64_t cgen_var_1290;
16776 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1290, 1);
16777 stream->write((uint64_t*)&cgen_var_1290, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016778 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016779 stream->read((Display*)dpy, sizeof(Display));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016780 uint64_t cgen_var_1291;
16781 stream->read((uint64_t*)&cgen_var_1291, 8);
16782 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(&cgen_var_1291, (VkDisplayKHR*)pDisplay, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016783 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
16784 stream->read(&vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016785 countingStream->clearPool();
16786 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016787 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016788 return vkGetRandROutputDisplayEXT_VkResult_return;
16789}
16790
16791#endif
16792#ifdef VK_EXT_display_surface_counter
16793VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2EXT(
16794 VkPhysicalDevice physicalDevice,
16795 VkSurfaceKHR surface,
16796 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
16797{
16798 auto stream = mImpl->stream();
16799 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016800 auto resources = mImpl->resources();
16801 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016802 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016803 VkPhysicalDevice local_physicalDevice;
16804 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016805 VkSurfaceKHR local_surface;
16806 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016807 countingStream->rewind();
16808 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016809 uint64_t cgen_var_1292;
16810 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1292, 1);
16811 countingStream->write((uint64_t*)&cgen_var_1292, 1 * 8);
16812 uint64_t cgen_var_1293;
16813 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1293, 1);
16814 countingStream->write((uint64_t*)&cgen_var_1293, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016815 marshal_VkSurfaceCapabilities2EXT(countingStream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
16816 }
16817 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16818 countingStream->rewind();
16819 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT = OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT;
16820 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
16821 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016822 uint64_t cgen_var_1294;
16823 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1294, 1);
16824 stream->write((uint64_t*)&cgen_var_1294, 1 * 8);
16825 uint64_t cgen_var_1295;
16826 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1295, 1);
16827 stream->write((uint64_t*)&cgen_var_1295, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016828 marshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
16829 unmarshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
16830 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
16831 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016832 countingStream->clearPool();
16833 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016834 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016835 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
16836}
16837
16838#endif
16839#ifdef VK_EXT_display_control
16840VkResult VkEncoder::vkDisplayPowerControlEXT(
16841 VkDevice device,
16842 VkDisplayKHR display,
16843 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
16844{
16845 auto stream = mImpl->stream();
16846 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016847 auto resources = mImpl->resources();
16848 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016849 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016850 VkDevice local_device;
16851 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016852 VkDisplayKHR local_display;
16853 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016854 VkDisplayPowerInfoEXT* local_pDisplayPowerInfo;
16855 local_pDisplayPowerInfo = nullptr;
16856 if (pDisplayPowerInfo)
16857 {
16858 local_pDisplayPowerInfo = (VkDisplayPowerInfoEXT*)pool->alloc(sizeof(const VkDisplayPowerInfoEXT));
16859 deepcopy_VkDisplayPowerInfoEXT(pool, pDisplayPowerInfo, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
16860 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016861 countingStream->rewind();
16862 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016863 uint64_t cgen_var_1296;
16864 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1296, 1);
16865 countingStream->write((uint64_t*)&cgen_var_1296, 1 * 8);
16866 uint64_t cgen_var_1297;
16867 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1297, 1);
16868 countingStream->write((uint64_t*)&cgen_var_1297, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016869 marshal_VkDisplayPowerInfoEXT(countingStream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016870 }
16871 uint32_t packetSize_vkDisplayPowerControlEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16872 countingStream->rewind();
16873 uint32_t opcode_vkDisplayPowerControlEXT = OP_vkDisplayPowerControlEXT;
16874 stream->write(&opcode_vkDisplayPowerControlEXT, sizeof(uint32_t));
16875 stream->write(&packetSize_vkDisplayPowerControlEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016876 uint64_t cgen_var_1298;
16877 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1298, 1);
16878 stream->write((uint64_t*)&cgen_var_1298, 1 * 8);
16879 uint64_t cgen_var_1299;
16880 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1299, 1);
16881 stream->write((uint64_t*)&cgen_var_1299, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016882 marshal_VkDisplayPowerInfoEXT(stream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016883 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
16884 stream->read(&vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016885 countingStream->clearPool();
16886 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016887 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016888 return vkDisplayPowerControlEXT_VkResult_return;
16889}
16890
16891VkResult VkEncoder::vkRegisterDeviceEventEXT(
16892 VkDevice device,
16893 const VkDeviceEventInfoEXT* pDeviceEventInfo,
16894 const VkAllocationCallbacks* pAllocator,
16895 VkFence* pFence)
16896{
16897 auto stream = mImpl->stream();
16898 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016899 auto resources = mImpl->resources();
16900 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016901 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016902 VkDevice local_device;
16903 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016904 VkDeviceEventInfoEXT* local_pDeviceEventInfo;
16905 local_pDeviceEventInfo = nullptr;
16906 if (pDeviceEventInfo)
16907 {
16908 local_pDeviceEventInfo = (VkDeviceEventInfoEXT*)pool->alloc(sizeof(const VkDeviceEventInfoEXT));
16909 deepcopy_VkDeviceEventInfoEXT(pool, pDeviceEventInfo, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
16910 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016911 VkAllocationCallbacks* local_pAllocator;
16912 local_pAllocator = nullptr;
16913 if (pAllocator)
16914 {
16915 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16916 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16917 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016918 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016919 countingStream->rewind();
16920 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016921 uint64_t cgen_var_1300;
16922 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1300, 1);
16923 countingStream->write((uint64_t*)&cgen_var_1300, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016924 marshal_VkDeviceEventInfoEXT(countingStream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016925 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016926 uint64_t cgen_var_1301 = (uint64_t)(uintptr_t)local_pAllocator;
16927 countingStream->putBe64(cgen_var_1301);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016928 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016929 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016930 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016931 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016932 uint64_t cgen_var_1302;
16933 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1302, 1);
16934 countingStream->write((uint64_t*)&cgen_var_1302, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016935 }
16936 uint32_t packetSize_vkRegisterDeviceEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16937 countingStream->rewind();
16938 uint32_t opcode_vkRegisterDeviceEventEXT = OP_vkRegisterDeviceEventEXT;
16939 stream->write(&opcode_vkRegisterDeviceEventEXT, sizeof(uint32_t));
16940 stream->write(&packetSize_vkRegisterDeviceEventEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016941 uint64_t cgen_var_1303;
16942 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1303, 1);
16943 stream->write((uint64_t*)&cgen_var_1303, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016944 marshal_VkDeviceEventInfoEXT(stream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016945 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016946 uint64_t cgen_var_1304 = (uint64_t)(uintptr_t)local_pAllocator;
16947 stream->putBe64(cgen_var_1304);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016948 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016949 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016950 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016951 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016952 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016953 uint64_t cgen_var_1305;
16954 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1305, 1);
16955 stream->write((uint64_t*)&cgen_var_1305, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016956 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016957 uint64_t cgen_var_1306;
16958 stream->read((uint64_t*)&cgen_var_1306, 8);
16959 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1306, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016960 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
16961 stream->read(&vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016962 countingStream->clearPool();
16963 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016964 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016965 return vkRegisterDeviceEventEXT_VkResult_return;
16966}
16967
16968VkResult VkEncoder::vkRegisterDisplayEventEXT(
16969 VkDevice device,
16970 VkDisplayKHR display,
16971 const VkDisplayEventInfoEXT* pDisplayEventInfo,
16972 const VkAllocationCallbacks* pAllocator,
16973 VkFence* pFence)
16974{
16975 auto stream = mImpl->stream();
16976 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016977 auto resources = mImpl->resources();
16978 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016979 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016980 VkDevice local_device;
16981 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016982 VkDisplayKHR local_display;
16983 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016984 VkDisplayEventInfoEXT* local_pDisplayEventInfo;
16985 local_pDisplayEventInfo = nullptr;
16986 if (pDisplayEventInfo)
16987 {
16988 local_pDisplayEventInfo = (VkDisplayEventInfoEXT*)pool->alloc(sizeof(const VkDisplayEventInfoEXT));
16989 deepcopy_VkDisplayEventInfoEXT(pool, pDisplayEventInfo, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
16990 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016991 VkAllocationCallbacks* local_pAllocator;
16992 local_pAllocator = nullptr;
16993 if (pAllocator)
16994 {
16995 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16996 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16997 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016998 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016999 countingStream->rewind();
17000 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017001 uint64_t cgen_var_1307;
17002 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1307, 1);
17003 countingStream->write((uint64_t*)&cgen_var_1307, 1 * 8);
17004 uint64_t cgen_var_1308;
17005 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1308, 1);
17006 countingStream->write((uint64_t*)&cgen_var_1308, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017007 marshal_VkDisplayEventInfoEXT(countingStream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017008 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017009 uint64_t cgen_var_1309 = (uint64_t)(uintptr_t)local_pAllocator;
17010 countingStream->putBe64(cgen_var_1309);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017011 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017012 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017013 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017014 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017015 uint64_t cgen_var_1310;
17016 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1310, 1);
17017 countingStream->write((uint64_t*)&cgen_var_1310, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017018 }
17019 uint32_t packetSize_vkRegisterDisplayEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17020 countingStream->rewind();
17021 uint32_t opcode_vkRegisterDisplayEventEXT = OP_vkRegisterDisplayEventEXT;
17022 stream->write(&opcode_vkRegisterDisplayEventEXT, sizeof(uint32_t));
17023 stream->write(&packetSize_vkRegisterDisplayEventEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017024 uint64_t cgen_var_1311;
17025 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1311, 1);
17026 stream->write((uint64_t*)&cgen_var_1311, 1 * 8);
17027 uint64_t cgen_var_1312;
17028 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1312, 1);
17029 stream->write((uint64_t*)&cgen_var_1312, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017030 marshal_VkDisplayEventInfoEXT(stream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017031 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017032 uint64_t cgen_var_1313 = (uint64_t)(uintptr_t)local_pAllocator;
17033 stream->putBe64(cgen_var_1313);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017034 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017035 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017036 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017037 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017038 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017039 uint64_t cgen_var_1314;
17040 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1314, 1);
17041 stream->write((uint64_t*)&cgen_var_1314, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017042 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017043 uint64_t cgen_var_1315;
17044 stream->read((uint64_t*)&cgen_var_1315, 8);
17045 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1315, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017046 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
17047 stream->read(&vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017048 countingStream->clearPool();
17049 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017050 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017051 return vkRegisterDisplayEventEXT_VkResult_return;
17052}
17053
17054VkResult VkEncoder::vkGetSwapchainCounterEXT(
17055 VkDevice device,
17056 VkSwapchainKHR swapchain,
17057 VkSurfaceCounterFlagBitsEXT counter,
17058 uint64_t* pCounterValue)
17059{
17060 auto stream = mImpl->stream();
17061 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017062 auto resources = mImpl->resources();
17063 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017064 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017065 VkDevice local_device;
17066 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017067 VkSwapchainKHR local_swapchain;
17068 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017069 VkSurfaceCounterFlagBitsEXT local_counter;
17070 local_counter = counter;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017071 countingStream->rewind();
17072 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017073 uint64_t cgen_var_1316;
17074 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1316, 1);
17075 countingStream->write((uint64_t*)&cgen_var_1316, 1 * 8);
17076 uint64_t cgen_var_1317;
17077 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1317, 1);
17078 countingStream->write((uint64_t*)&cgen_var_1317, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017079 countingStream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017080 countingStream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
17081 }
17082 uint32_t packetSize_vkGetSwapchainCounterEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17083 countingStream->rewind();
17084 uint32_t opcode_vkGetSwapchainCounterEXT = OP_vkGetSwapchainCounterEXT;
17085 stream->write(&opcode_vkGetSwapchainCounterEXT, sizeof(uint32_t));
17086 stream->write(&packetSize_vkGetSwapchainCounterEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017087 uint64_t cgen_var_1318;
17088 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1318, 1);
17089 stream->write((uint64_t*)&cgen_var_1318, 1 * 8);
17090 uint64_t cgen_var_1319;
17091 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1319, 1);
17092 stream->write((uint64_t*)&cgen_var_1319, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017093 stream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017094 stream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
17095 stream->read((uint64_t*)pCounterValue, sizeof(uint64_t));
17096 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
17097 stream->read(&vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017098 countingStream->clearPool();
17099 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017100 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017101 return vkGetSwapchainCounterEXT_VkResult_return;
17102}
17103
17104#endif
17105#ifdef VK_GOOGLE_display_timing
17106VkResult VkEncoder::vkGetRefreshCycleDurationGOOGLE(
17107 VkDevice device,
17108 VkSwapchainKHR swapchain,
17109 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
17110{
17111 auto stream = mImpl->stream();
17112 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017113 auto resources = mImpl->resources();
17114 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017115 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017116 VkDevice local_device;
17117 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017118 VkSwapchainKHR local_swapchain;
17119 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017120 countingStream->rewind();
17121 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017122 uint64_t cgen_var_1320;
17123 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1320, 1);
17124 countingStream->write((uint64_t*)&cgen_var_1320, 1 * 8);
17125 uint64_t cgen_var_1321;
17126 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1321, 1);
17127 countingStream->write((uint64_t*)&cgen_var_1321, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017128 marshal_VkRefreshCycleDurationGOOGLE(countingStream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
17129 }
17130 uint32_t packetSize_vkGetRefreshCycleDurationGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17131 countingStream->rewind();
17132 uint32_t opcode_vkGetRefreshCycleDurationGOOGLE = OP_vkGetRefreshCycleDurationGOOGLE;
17133 stream->write(&opcode_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
17134 stream->write(&packetSize_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017135 uint64_t cgen_var_1322;
17136 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1322, 1);
17137 stream->write((uint64_t*)&cgen_var_1322, 1 * 8);
17138 uint64_t cgen_var_1323;
17139 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1323, 1);
17140 stream->write((uint64_t*)&cgen_var_1323, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017141 marshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
17142 unmarshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
17143 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
17144 stream->read(&vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017145 countingStream->clearPool();
17146 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017147 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017148 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
17149}
17150
17151VkResult VkEncoder::vkGetPastPresentationTimingGOOGLE(
17152 VkDevice device,
17153 VkSwapchainKHR swapchain,
17154 uint32_t* pPresentationTimingCount,
17155 VkPastPresentationTimingGOOGLE* pPresentationTimings)
17156{
17157 auto stream = mImpl->stream();
17158 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017159 auto resources = mImpl->resources();
17160 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017161 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017162 VkDevice local_device;
17163 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017164 VkSwapchainKHR local_swapchain;
17165 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017166 countingStream->rewind();
17167 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017168 uint64_t cgen_var_1324;
17169 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1324, 1);
17170 countingStream->write((uint64_t*)&cgen_var_1324, 1 * 8);
17171 uint64_t cgen_var_1325;
17172 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1325, 1);
17173 countingStream->write((uint64_t*)&cgen_var_1325, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017174 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017175 uint64_t cgen_var_1326 = (uint64_t)(uintptr_t)pPresentationTimingCount;
17176 countingStream->putBe64(cgen_var_1326);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017177 if (pPresentationTimingCount)
17178 {
17179 countingStream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
17180 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017181 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017182 uint64_t cgen_var_1327 = (uint64_t)(uintptr_t)pPresentationTimings;
17183 countingStream->putBe64(cgen_var_1327);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017184 if (pPresentationTimings)
17185 {
17186 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
17187 {
17188 marshal_VkPastPresentationTimingGOOGLE(countingStream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
17189 }
17190 }
17191 }
17192 uint32_t packetSize_vkGetPastPresentationTimingGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17193 countingStream->rewind();
17194 uint32_t opcode_vkGetPastPresentationTimingGOOGLE = OP_vkGetPastPresentationTimingGOOGLE;
17195 stream->write(&opcode_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
17196 stream->write(&packetSize_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017197 uint64_t cgen_var_1328;
17198 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1328, 1);
17199 stream->write((uint64_t*)&cgen_var_1328, 1 * 8);
17200 uint64_t cgen_var_1329;
17201 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1329, 1);
17202 stream->write((uint64_t*)&cgen_var_1329, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017203 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017204 uint64_t cgen_var_1330 = (uint64_t)(uintptr_t)pPresentationTimingCount;
17205 stream->putBe64(cgen_var_1330);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017206 if (pPresentationTimingCount)
17207 {
17208 stream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
17209 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017210 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017211 uint64_t cgen_var_1331 = (uint64_t)(uintptr_t)pPresentationTimings;
17212 stream->putBe64(cgen_var_1331);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017213 if (pPresentationTimings)
17214 {
17215 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
17216 {
17217 marshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
17218 }
17219 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017220 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017221 uint32_t* check_pPresentationTimingCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017222 check_pPresentationTimingCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017223 if (pPresentationTimingCount)
17224 {
17225 if (!(check_pPresentationTimingCount))
17226 {
17227 fprintf(stderr, "fatal: pPresentationTimingCount inconsistent between guest and host\n");
17228 }
17229 stream->read((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
17230 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017231 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017232 VkPastPresentationTimingGOOGLE* check_pPresentationTimings;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017233 check_pPresentationTimings = (VkPastPresentationTimingGOOGLE*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017234 if (pPresentationTimings)
17235 {
17236 if (!(check_pPresentationTimings))
17237 {
17238 fprintf(stderr, "fatal: pPresentationTimings inconsistent between guest and host\n");
17239 }
17240 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
17241 {
17242 unmarshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
17243 }
17244 }
17245 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
17246 stream->read(&vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017247 countingStream->clearPool();
17248 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017249 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017250 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
17251}
17252
17253#endif
17254#ifdef VK_NV_sample_mask_override_coverage
17255#endif
17256#ifdef VK_NV_geometry_shader_passthrough
17257#endif
17258#ifdef VK_NV_viewport_array2
17259#endif
17260#ifdef VK_NVX_multiview_per_view_attributes
17261#endif
17262#ifdef VK_NV_viewport_swizzle
17263#endif
17264#ifdef VK_EXT_discard_rectangles
17265void VkEncoder::vkCmdSetDiscardRectangleEXT(
17266 VkCommandBuffer commandBuffer,
17267 uint32_t firstDiscardRectangle,
17268 uint32_t discardRectangleCount,
17269 const VkRect2D* pDiscardRectangles)
17270{
17271 auto stream = mImpl->stream();
17272 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017273 auto resources = mImpl->resources();
17274 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017275 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017276 VkCommandBuffer local_commandBuffer;
17277 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017278 uint32_t local_firstDiscardRectangle;
17279 local_firstDiscardRectangle = firstDiscardRectangle;
17280 uint32_t local_discardRectangleCount;
17281 local_discardRectangleCount = discardRectangleCount;
17282 VkRect2D* local_pDiscardRectangles;
17283 local_pDiscardRectangles = nullptr;
17284 if (pDiscardRectangles)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017285 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017286 local_pDiscardRectangles = (VkRect2D*)pool->alloc(((discardRectangleCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017287 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
17288 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017289 deepcopy_VkRect2D(pool, pDiscardRectangles + i, (VkRect2D*)(local_pDiscardRectangles + i));
17290 }
17291 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017292 countingStream->rewind();
17293 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017294 uint64_t cgen_var_1334;
17295 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1334, 1);
17296 countingStream->write((uint64_t*)&cgen_var_1334, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017297 countingStream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
17298 countingStream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
17299 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
17300 {
17301 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017302 }
17303 }
17304 uint32_t packetSize_vkCmdSetDiscardRectangleEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17305 countingStream->rewind();
17306 uint32_t opcode_vkCmdSetDiscardRectangleEXT = OP_vkCmdSetDiscardRectangleEXT;
17307 stream->write(&opcode_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
17308 stream->write(&packetSize_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017309 uint64_t cgen_var_1335;
17310 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1335, 1);
17311 stream->write((uint64_t*)&cgen_var_1335, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017312 stream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
17313 stream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017314 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
17315 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017316 marshal_VkRect2D(stream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017317 }
17318}
17319
17320#endif
17321#ifdef VK_EXT_conservative_rasterization
17322#endif
17323#ifdef VK_EXT_swapchain_colorspace
17324#endif
17325#ifdef VK_EXT_hdr_metadata
17326void VkEncoder::vkSetHdrMetadataEXT(
17327 VkDevice device,
17328 uint32_t swapchainCount,
17329 const VkSwapchainKHR* pSwapchains,
17330 const VkHdrMetadataEXT* pMetadata)
17331{
17332 auto stream = mImpl->stream();
17333 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017334 auto resources = mImpl->resources();
17335 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017336 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017337 VkDevice local_device;
17338 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017339 uint32_t local_swapchainCount;
17340 local_swapchainCount = swapchainCount;
17341 VkSwapchainKHR* local_pSwapchains;
17342 local_pSwapchains = nullptr;
17343 if (pSwapchains)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017344 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017345 local_pSwapchains = (VkSwapchainKHR*)pool->dupArray(pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
17346 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017347 VkHdrMetadataEXT* local_pMetadata;
17348 local_pMetadata = nullptr;
17349 if (pMetadata)
17350 {
17351 local_pMetadata = (VkHdrMetadataEXT*)pool->alloc(((swapchainCount)) * sizeof(const VkHdrMetadataEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017352 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
17353 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017354 deepcopy_VkHdrMetadataEXT(pool, pMetadata + i, (VkHdrMetadataEXT*)(local_pMetadata + i));
17355 }
17356 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017357 countingStream->rewind();
17358 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017359 uint64_t cgen_var_1336;
17360 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1336, 1);
17361 countingStream->write((uint64_t*)&cgen_var_1336, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017362 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017363 if (((swapchainCount)))
17364 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017365 uint64_t* cgen_var_1337;
17366 countingStream->alloc((void**)&cgen_var_1337, ((swapchainCount)) * 8);
17367 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1337, ((swapchainCount)));
17368 countingStream->write((uint64_t*)cgen_var_1337, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080017369 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017370 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
17371 {
17372 marshal_VkHdrMetadataEXT(countingStream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017373 }
17374 }
17375 uint32_t packetSize_vkSetHdrMetadataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17376 countingStream->rewind();
17377 uint32_t opcode_vkSetHdrMetadataEXT = OP_vkSetHdrMetadataEXT;
17378 stream->write(&opcode_vkSetHdrMetadataEXT, sizeof(uint32_t));
17379 stream->write(&packetSize_vkSetHdrMetadataEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017380 uint64_t cgen_var_1338;
17381 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1338, 1);
17382 stream->write((uint64_t*)&cgen_var_1338, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017383 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017384 if (((swapchainCount)))
17385 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017386 uint64_t* cgen_var_1339;
17387 stream->alloc((void**)&cgen_var_1339, ((swapchainCount)) * 8);
17388 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1339, ((swapchainCount)));
17389 stream->write((uint64_t*)cgen_var_1339, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080017390 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017391 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
17392 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017393 marshal_VkHdrMetadataEXT(stream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017394 }
17395}
17396
17397#endif
17398#ifdef VK_MVK_ios_surface
17399VkResult VkEncoder::vkCreateIOSSurfaceMVK(
17400 VkInstance instance,
17401 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
17402 const VkAllocationCallbacks* pAllocator,
17403 VkSurfaceKHR* pSurface)
17404{
17405 auto stream = mImpl->stream();
17406 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017407 auto resources = mImpl->resources();
17408 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017409 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017410 VkInstance local_instance;
17411 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017412 VkIOSSurfaceCreateInfoMVK* local_pCreateInfo;
17413 local_pCreateInfo = nullptr;
17414 if (pCreateInfo)
17415 {
17416 local_pCreateInfo = (VkIOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkIOSSurfaceCreateInfoMVK));
17417 deepcopy_VkIOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
17418 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017419 VkAllocationCallbacks* local_pAllocator;
17420 local_pAllocator = nullptr;
17421 if (pAllocator)
17422 {
17423 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17424 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17425 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017426 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017427 countingStream->rewind();
17428 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017429 uint64_t cgen_var_1340;
17430 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1340, 1);
17431 countingStream->write((uint64_t*)&cgen_var_1340, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017432 marshal_VkIOSSurfaceCreateInfoMVK(countingStream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017433 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017434 uint64_t cgen_var_1341 = (uint64_t)(uintptr_t)local_pAllocator;
17435 countingStream->putBe64(cgen_var_1341);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017436 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017437 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017438 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017439 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017440 uint64_t cgen_var_1342;
17441 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1342, 1);
17442 countingStream->write((uint64_t*)&cgen_var_1342, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017443 }
17444 uint32_t packetSize_vkCreateIOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17445 countingStream->rewind();
17446 uint32_t opcode_vkCreateIOSSurfaceMVK = OP_vkCreateIOSSurfaceMVK;
17447 stream->write(&opcode_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
17448 stream->write(&packetSize_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017449 uint64_t cgen_var_1343;
17450 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1343, 1);
17451 stream->write((uint64_t*)&cgen_var_1343, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017452 marshal_VkIOSSurfaceCreateInfoMVK(stream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017453 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017454 uint64_t cgen_var_1344 = (uint64_t)(uintptr_t)local_pAllocator;
17455 stream->putBe64(cgen_var_1344);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017456 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017457 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017458 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017459 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017460 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017461 uint64_t cgen_var_1345;
17462 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1345, 1);
17463 stream->write((uint64_t*)&cgen_var_1345, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017464 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017465 uint64_t cgen_var_1346;
17466 stream->read((uint64_t*)&cgen_var_1346, 8);
17467 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1346, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017468 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
17469 stream->read(&vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017470 countingStream->clearPool();
17471 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017472 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017473 return vkCreateIOSSurfaceMVK_VkResult_return;
17474}
17475
17476#endif
17477#ifdef VK_MVK_macos_surface
17478VkResult VkEncoder::vkCreateMacOSSurfaceMVK(
17479 VkInstance instance,
17480 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
17481 const VkAllocationCallbacks* pAllocator,
17482 VkSurfaceKHR* pSurface)
17483{
17484 auto stream = mImpl->stream();
17485 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017486 auto resources = mImpl->resources();
17487 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017488 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017489 VkInstance local_instance;
17490 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017491 VkMacOSSurfaceCreateInfoMVK* local_pCreateInfo;
17492 local_pCreateInfo = nullptr;
17493 if (pCreateInfo)
17494 {
17495 local_pCreateInfo = (VkMacOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkMacOSSurfaceCreateInfoMVK));
17496 deepcopy_VkMacOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
17497 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017498 VkAllocationCallbacks* local_pAllocator;
17499 local_pAllocator = nullptr;
17500 if (pAllocator)
17501 {
17502 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17503 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17504 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017505 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017506 countingStream->rewind();
17507 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017508 uint64_t cgen_var_1347;
17509 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1347, 1);
17510 countingStream->write((uint64_t*)&cgen_var_1347, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017511 marshal_VkMacOSSurfaceCreateInfoMVK(countingStream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017512 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017513 uint64_t cgen_var_1348 = (uint64_t)(uintptr_t)local_pAllocator;
17514 countingStream->putBe64(cgen_var_1348);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017515 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017516 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017517 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017518 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017519 uint64_t cgen_var_1349;
17520 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1349, 1);
17521 countingStream->write((uint64_t*)&cgen_var_1349, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017522 }
17523 uint32_t packetSize_vkCreateMacOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17524 countingStream->rewind();
17525 uint32_t opcode_vkCreateMacOSSurfaceMVK = OP_vkCreateMacOSSurfaceMVK;
17526 stream->write(&opcode_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
17527 stream->write(&packetSize_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017528 uint64_t cgen_var_1350;
17529 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1350, 1);
17530 stream->write((uint64_t*)&cgen_var_1350, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017531 marshal_VkMacOSSurfaceCreateInfoMVK(stream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017532 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017533 uint64_t cgen_var_1351 = (uint64_t)(uintptr_t)local_pAllocator;
17534 stream->putBe64(cgen_var_1351);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017535 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017536 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017537 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017538 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017539 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017540 uint64_t cgen_var_1352;
17541 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1352, 1);
17542 stream->write((uint64_t*)&cgen_var_1352, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017543 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017544 uint64_t cgen_var_1353;
17545 stream->read((uint64_t*)&cgen_var_1353, 8);
17546 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1353, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017547 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
17548 stream->read(&vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017549 countingStream->clearPool();
17550 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017551 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017552 return vkCreateMacOSSurfaceMVK_VkResult_return;
17553}
17554
17555#endif
17556#ifdef VK_EXT_external_memory_dma_buf
17557#endif
17558#ifdef VK_EXT_queue_family_foreign
17559#endif
17560#ifdef VK_EXT_debug_utils
17561VkResult VkEncoder::vkSetDebugUtilsObjectNameEXT(
17562 VkDevice device,
17563 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
17564{
17565 auto stream = mImpl->stream();
17566 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017567 auto resources = mImpl->resources();
17568 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017569 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017570 VkDevice local_device;
17571 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017572 VkDebugUtilsObjectNameInfoEXT* local_pNameInfo;
17573 local_pNameInfo = nullptr;
17574 if (pNameInfo)
17575 {
17576 local_pNameInfo = (VkDebugUtilsObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectNameInfoEXT));
17577 deepcopy_VkDebugUtilsObjectNameInfoEXT(pool, pNameInfo, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
17578 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017579 countingStream->rewind();
17580 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017581 uint64_t cgen_var_1354;
17582 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1354, 1);
17583 countingStream->write((uint64_t*)&cgen_var_1354, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017584 marshal_VkDebugUtilsObjectNameInfoEXT(countingStream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017585 }
17586 uint32_t packetSize_vkSetDebugUtilsObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17587 countingStream->rewind();
17588 uint32_t opcode_vkSetDebugUtilsObjectNameEXT = OP_vkSetDebugUtilsObjectNameEXT;
17589 stream->write(&opcode_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
17590 stream->write(&packetSize_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017591 uint64_t cgen_var_1355;
17592 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1355, 1);
17593 stream->write((uint64_t*)&cgen_var_1355, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017594 marshal_VkDebugUtilsObjectNameInfoEXT(stream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017595 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
17596 stream->read(&vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017597 countingStream->clearPool();
17598 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017599 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017600 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
17601}
17602
17603VkResult VkEncoder::vkSetDebugUtilsObjectTagEXT(
17604 VkDevice device,
17605 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
17606{
17607 auto stream = mImpl->stream();
17608 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017609 auto resources = mImpl->resources();
17610 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017611 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017612 VkDevice local_device;
17613 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017614 VkDebugUtilsObjectTagInfoEXT* local_pTagInfo;
17615 local_pTagInfo = nullptr;
17616 if (pTagInfo)
17617 {
17618 local_pTagInfo = (VkDebugUtilsObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectTagInfoEXT));
17619 deepcopy_VkDebugUtilsObjectTagInfoEXT(pool, pTagInfo, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
17620 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017621 countingStream->rewind();
17622 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017623 uint64_t cgen_var_1356;
17624 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1356, 1);
17625 countingStream->write((uint64_t*)&cgen_var_1356, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017626 marshal_VkDebugUtilsObjectTagInfoEXT(countingStream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017627 }
17628 uint32_t packetSize_vkSetDebugUtilsObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17629 countingStream->rewind();
17630 uint32_t opcode_vkSetDebugUtilsObjectTagEXT = OP_vkSetDebugUtilsObjectTagEXT;
17631 stream->write(&opcode_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
17632 stream->write(&packetSize_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017633 uint64_t cgen_var_1357;
17634 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1357, 1);
17635 stream->write((uint64_t*)&cgen_var_1357, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017636 marshal_VkDebugUtilsObjectTagInfoEXT(stream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017637 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
17638 stream->read(&vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017639 countingStream->clearPool();
17640 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017641 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017642 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
17643}
17644
17645void VkEncoder::vkQueueBeginDebugUtilsLabelEXT(
17646 VkQueue queue,
17647 const VkDebugUtilsLabelEXT* pLabelInfo)
17648{
17649 auto stream = mImpl->stream();
17650 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017651 auto resources = mImpl->resources();
17652 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017653 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017654 VkQueue local_queue;
17655 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017656 VkDebugUtilsLabelEXT* local_pLabelInfo;
17657 local_pLabelInfo = nullptr;
17658 if (pLabelInfo)
17659 {
17660 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
17661 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17662 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017663 countingStream->rewind();
17664 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017665 uint64_t cgen_var_1358;
17666 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1358, 1);
17667 countingStream->write((uint64_t*)&cgen_var_1358, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017668 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017669 }
17670 uint32_t packetSize_vkQueueBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17671 countingStream->rewind();
17672 uint32_t opcode_vkQueueBeginDebugUtilsLabelEXT = OP_vkQueueBeginDebugUtilsLabelEXT;
17673 stream->write(&opcode_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
17674 stream->write(&packetSize_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017675 uint64_t cgen_var_1359;
17676 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1359, 1);
17677 stream->write((uint64_t*)&cgen_var_1359, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017678 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017679}
17680
17681void VkEncoder::vkQueueEndDebugUtilsLabelEXT(
17682 VkQueue queue)
17683{
17684 auto stream = mImpl->stream();
17685 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017686 auto resources = mImpl->resources();
17687 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017688 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017689 VkQueue local_queue;
17690 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017691 countingStream->rewind();
17692 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017693 uint64_t cgen_var_1360;
17694 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1360, 1);
17695 countingStream->write((uint64_t*)&cgen_var_1360, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017696 }
17697 uint32_t packetSize_vkQueueEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17698 countingStream->rewind();
17699 uint32_t opcode_vkQueueEndDebugUtilsLabelEXT = OP_vkQueueEndDebugUtilsLabelEXT;
17700 stream->write(&opcode_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
17701 stream->write(&packetSize_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017702 uint64_t cgen_var_1361;
17703 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1361, 1);
17704 stream->write((uint64_t*)&cgen_var_1361, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017705}
17706
17707void VkEncoder::vkQueueInsertDebugUtilsLabelEXT(
17708 VkQueue queue,
17709 const VkDebugUtilsLabelEXT* pLabelInfo)
17710{
17711 auto stream = mImpl->stream();
17712 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017713 auto resources = mImpl->resources();
17714 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017715 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017716 VkQueue local_queue;
17717 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017718 VkDebugUtilsLabelEXT* local_pLabelInfo;
17719 local_pLabelInfo = nullptr;
17720 if (pLabelInfo)
17721 {
17722 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
17723 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17724 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017725 countingStream->rewind();
17726 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017727 uint64_t cgen_var_1362;
17728 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1362, 1);
17729 countingStream->write((uint64_t*)&cgen_var_1362, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017730 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017731 }
17732 uint32_t packetSize_vkQueueInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17733 countingStream->rewind();
17734 uint32_t opcode_vkQueueInsertDebugUtilsLabelEXT = OP_vkQueueInsertDebugUtilsLabelEXT;
17735 stream->write(&opcode_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
17736 stream->write(&packetSize_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017737 uint64_t cgen_var_1363;
17738 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1363, 1);
17739 stream->write((uint64_t*)&cgen_var_1363, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017740 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017741}
17742
17743void VkEncoder::vkCmdBeginDebugUtilsLabelEXT(
17744 VkCommandBuffer commandBuffer,
17745 const VkDebugUtilsLabelEXT* pLabelInfo)
17746{
17747 auto stream = mImpl->stream();
17748 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017749 auto resources = mImpl->resources();
17750 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017751 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017752 VkCommandBuffer local_commandBuffer;
17753 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017754 VkDebugUtilsLabelEXT* local_pLabelInfo;
17755 local_pLabelInfo = nullptr;
17756 if (pLabelInfo)
17757 {
17758 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
17759 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17760 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017761 countingStream->rewind();
17762 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017763 uint64_t cgen_var_1364;
17764 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1364, 1);
17765 countingStream->write((uint64_t*)&cgen_var_1364, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017766 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017767 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017768 uint32_t packetSize_vkCmdBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17769 countingStream->rewind();
17770 uint32_t opcode_vkCmdBeginDebugUtilsLabelEXT = OP_vkCmdBeginDebugUtilsLabelEXT;
17771 stream->write(&opcode_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
17772 stream->write(&packetSize_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017773 uint64_t cgen_var_1365;
17774 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1365, 1);
17775 stream->write((uint64_t*)&cgen_var_1365, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017776 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17777}
17778
17779void VkEncoder::vkCmdEndDebugUtilsLabelEXT(
17780 VkCommandBuffer commandBuffer)
17781{
17782 auto stream = mImpl->stream();
17783 auto countingStream = mImpl->countingStream();
17784 auto resources = mImpl->resources();
17785 auto pool = mImpl->pool();
17786 stream->setHandleMapping(resources->unwrapMapping());
17787 VkCommandBuffer local_commandBuffer;
17788 local_commandBuffer = commandBuffer;
17789 countingStream->rewind();
17790 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017791 uint64_t cgen_var_1366;
17792 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1366, 1);
17793 countingStream->write((uint64_t*)&cgen_var_1366, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017794 }
17795 uint32_t packetSize_vkCmdEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17796 countingStream->rewind();
17797 uint32_t opcode_vkCmdEndDebugUtilsLabelEXT = OP_vkCmdEndDebugUtilsLabelEXT;
17798 stream->write(&opcode_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
17799 stream->write(&packetSize_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017800 uint64_t cgen_var_1367;
17801 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1367, 1);
17802 stream->write((uint64_t*)&cgen_var_1367, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017803}
17804
17805void VkEncoder::vkCmdInsertDebugUtilsLabelEXT(
17806 VkCommandBuffer commandBuffer,
17807 const VkDebugUtilsLabelEXT* pLabelInfo)
17808{
17809 auto stream = mImpl->stream();
17810 auto countingStream = mImpl->countingStream();
17811 auto resources = mImpl->resources();
17812 auto pool = mImpl->pool();
17813 stream->setHandleMapping(resources->unwrapMapping());
17814 VkCommandBuffer local_commandBuffer;
17815 local_commandBuffer = commandBuffer;
17816 VkDebugUtilsLabelEXT* local_pLabelInfo;
17817 local_pLabelInfo = nullptr;
17818 if (pLabelInfo)
17819 {
17820 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
17821 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17822 }
17823 countingStream->rewind();
17824 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017825 uint64_t cgen_var_1368;
17826 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1368, 1);
17827 countingStream->write((uint64_t*)&cgen_var_1368, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017828 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17829 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017830 uint32_t packetSize_vkCmdInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17831 countingStream->rewind();
17832 uint32_t opcode_vkCmdInsertDebugUtilsLabelEXT = OP_vkCmdInsertDebugUtilsLabelEXT;
17833 stream->write(&opcode_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
17834 stream->write(&packetSize_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017835 uint64_t cgen_var_1369;
17836 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1369, 1);
17837 stream->write((uint64_t*)&cgen_var_1369, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017838 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017839}
17840
17841VkResult VkEncoder::vkCreateDebugUtilsMessengerEXT(
17842 VkInstance instance,
17843 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
17844 const VkAllocationCallbacks* pAllocator,
17845 VkDebugUtilsMessengerEXT* pMessenger)
17846{
17847 auto stream = mImpl->stream();
17848 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017849 auto resources = mImpl->resources();
17850 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017851 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017852 VkInstance local_instance;
17853 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017854 VkDebugUtilsMessengerCreateInfoEXT* local_pCreateInfo;
17855 local_pCreateInfo = nullptr;
17856 if (pCreateInfo)
17857 {
17858 local_pCreateInfo = (VkDebugUtilsMessengerCreateInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCreateInfoEXT));
17859 deepcopy_VkDebugUtilsMessengerCreateInfoEXT(pool, pCreateInfo, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
17860 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017861 VkAllocationCallbacks* local_pAllocator;
17862 local_pAllocator = nullptr;
17863 if (pAllocator)
17864 {
17865 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17866 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17867 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017868 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017869 countingStream->rewind();
17870 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017871 uint64_t cgen_var_1370;
17872 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1370, 1);
17873 countingStream->write((uint64_t*)&cgen_var_1370, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017874 marshal_VkDebugUtilsMessengerCreateInfoEXT(countingStream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017875 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017876 uint64_t cgen_var_1371 = (uint64_t)(uintptr_t)local_pAllocator;
17877 countingStream->putBe64(cgen_var_1371);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017878 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017879 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017880 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017881 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017882 uint64_t cgen_var_1372;
17883 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1372, 1);
17884 countingStream->write((uint64_t*)&cgen_var_1372, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017885 }
17886 uint32_t packetSize_vkCreateDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17887 countingStream->rewind();
17888 uint32_t opcode_vkCreateDebugUtilsMessengerEXT = OP_vkCreateDebugUtilsMessengerEXT;
17889 stream->write(&opcode_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
17890 stream->write(&packetSize_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017891 uint64_t cgen_var_1373;
17892 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1373, 1);
17893 stream->write((uint64_t*)&cgen_var_1373, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017894 marshal_VkDebugUtilsMessengerCreateInfoEXT(stream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017895 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017896 uint64_t cgen_var_1374 = (uint64_t)(uintptr_t)local_pAllocator;
17897 stream->putBe64(cgen_var_1374);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017898 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017899 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017900 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017901 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017902 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017903 uint64_t cgen_var_1375;
17904 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1375, 1);
17905 stream->write((uint64_t*)&cgen_var_1375, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017906 stream->setHandleMapping(resources->unwrapMapping());
17907 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017908 uint64_t cgen_var_1376;
17909 stream->read((uint64_t*)&cgen_var_1376, 8);
17910 stream->handleMapping()->mapHandles_u64_VkDebugUtilsMessengerEXT(&cgen_var_1376, (VkDebugUtilsMessengerEXT*)pMessenger, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017911 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017912 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
17913 stream->read(&vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017914 countingStream->clearPool();
17915 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017916 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017917 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
17918}
17919
17920void VkEncoder::vkDestroyDebugUtilsMessengerEXT(
17921 VkInstance instance,
17922 VkDebugUtilsMessengerEXT messenger,
17923 const VkAllocationCallbacks* pAllocator)
17924{
17925 auto stream = mImpl->stream();
17926 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017927 auto resources = mImpl->resources();
17928 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017929 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017930 VkInstance local_instance;
17931 local_instance = instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017932 VkDebugUtilsMessengerEXT local_messenger;
17933 local_messenger = messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017934 VkAllocationCallbacks* local_pAllocator;
17935 local_pAllocator = nullptr;
17936 if (pAllocator)
17937 {
17938 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17939 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17940 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017941 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017942 countingStream->rewind();
17943 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017944 uint64_t cgen_var_1377;
17945 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1377, 1);
17946 countingStream->write((uint64_t*)&cgen_var_1377, 1 * 8);
17947 uint64_t cgen_var_1378;
17948 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1378, 1);
17949 countingStream->write((uint64_t*)&cgen_var_1378, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017950 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017951 uint64_t cgen_var_1379 = (uint64_t)(uintptr_t)local_pAllocator;
17952 countingStream->putBe64(cgen_var_1379);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017953 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017954 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017955 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017956 }
17957 }
17958 uint32_t packetSize_vkDestroyDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17959 countingStream->rewind();
17960 uint32_t opcode_vkDestroyDebugUtilsMessengerEXT = OP_vkDestroyDebugUtilsMessengerEXT;
17961 stream->write(&opcode_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
17962 stream->write(&packetSize_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017963 uint64_t cgen_var_1380;
17964 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1380, 1);
17965 stream->write((uint64_t*)&cgen_var_1380, 1 * 8);
17966 uint64_t cgen_var_1381;
17967 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1381, 1);
17968 stream->write((uint64_t*)&cgen_var_1381, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017969 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017970 uint64_t cgen_var_1382 = (uint64_t)(uintptr_t)local_pAllocator;
17971 stream->putBe64(cgen_var_1382);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017972 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017973 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017974 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017975 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017976 resources->destroyMapping()->mapHandles_VkDebugUtilsMessengerEXT((VkDebugUtilsMessengerEXT*)&messenger);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017977}
17978
17979void VkEncoder::vkSubmitDebugUtilsMessageEXT(
17980 VkInstance instance,
17981 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
17982 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
17983 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
17984{
17985 auto stream = mImpl->stream();
17986 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017987 auto resources = mImpl->resources();
17988 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017989 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017990 VkInstance local_instance;
17991 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017992 VkDebugUtilsMessageSeverityFlagBitsEXT local_messageSeverity;
17993 local_messageSeverity = messageSeverity;
17994 VkDebugUtilsMessageTypeFlagsEXT local_messageTypes;
17995 local_messageTypes = messageTypes;
17996 VkDebugUtilsMessengerCallbackDataEXT* local_pCallbackData;
17997 local_pCallbackData = nullptr;
17998 if (pCallbackData)
17999 {
18000 local_pCallbackData = (VkDebugUtilsMessengerCallbackDataEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCallbackDataEXT));
18001 deepcopy_VkDebugUtilsMessengerCallbackDataEXT(pool, pCallbackData, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
18002 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018003 countingStream->rewind();
18004 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018005 uint64_t cgen_var_1383;
18006 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1383, 1);
18007 countingStream->write((uint64_t*)&cgen_var_1383, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018008 countingStream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
18009 countingStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
18010 marshal_VkDebugUtilsMessengerCallbackDataEXT(countingStream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018011 }
18012 uint32_t packetSize_vkSubmitDebugUtilsMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18013 countingStream->rewind();
18014 uint32_t opcode_vkSubmitDebugUtilsMessageEXT = OP_vkSubmitDebugUtilsMessageEXT;
18015 stream->write(&opcode_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
18016 stream->write(&packetSize_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018017 uint64_t cgen_var_1384;
18018 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1384, 1);
18019 stream->write((uint64_t*)&cgen_var_1384, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018020 stream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
18021 stream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
18022 marshal_VkDebugUtilsMessengerCallbackDataEXT(stream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018023}
18024
18025#endif
18026#ifdef VK_ANDROID_external_memory_android_hardware_buffer
18027VkResult VkEncoder::vkGetAndroidHardwareBufferPropertiesANDROID(
18028 VkDevice device,
18029 const AHardwareBuffer* buffer,
18030 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
18031{
18032 auto stream = mImpl->stream();
18033 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018034 auto resources = mImpl->resources();
18035 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018036 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018037 VkDevice local_device;
18038 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018039 AHardwareBuffer* local_buffer;
18040 local_buffer = nullptr;
18041 if (buffer)
18042 {
18043 local_buffer = (AHardwareBuffer*)pool->dupArray(buffer, sizeof(const AHardwareBuffer));
18044 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018045 countingStream->rewind();
18046 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018047 uint64_t cgen_var_1385;
18048 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1385, 1);
18049 countingStream->write((uint64_t*)&cgen_var_1385, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018050 countingStream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018051 marshal_VkAndroidHardwareBufferPropertiesANDROID(countingStream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
18052 }
18053 uint32_t packetSize_vkGetAndroidHardwareBufferPropertiesANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18054 countingStream->rewind();
18055 uint32_t opcode_vkGetAndroidHardwareBufferPropertiesANDROID = OP_vkGetAndroidHardwareBufferPropertiesANDROID;
18056 stream->write(&opcode_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
18057 stream->write(&packetSize_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018058 uint64_t cgen_var_1386;
18059 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1386, 1);
18060 stream->write((uint64_t*)&cgen_var_1386, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018061 stream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018062 marshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
18063 unmarshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
18064 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
18065 stream->read(&vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018066 countingStream->clearPool();
18067 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018068 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018069 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
18070}
18071
18072VkResult VkEncoder::vkGetMemoryAndroidHardwareBufferANDROID(
18073 VkDevice device,
18074 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
18075 AHardwareBuffer** pBuffer)
18076{
18077 auto stream = mImpl->stream();
18078 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018079 auto resources = mImpl->resources();
18080 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018081 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018082 VkDevice local_device;
18083 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018084 VkMemoryGetAndroidHardwareBufferInfoANDROID* local_pInfo;
18085 local_pInfo = nullptr;
18086 if (pInfo)
18087 {
18088 local_pInfo = (VkMemoryGetAndroidHardwareBufferInfoANDROID*)pool->alloc(sizeof(const VkMemoryGetAndroidHardwareBufferInfoANDROID));
18089 deepcopy_VkMemoryGetAndroidHardwareBufferInfoANDROID(pool, pInfo, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
18090 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018091 countingStream->rewind();
18092 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018093 uint64_t cgen_var_1387;
18094 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1387, 1);
18095 countingStream->write((uint64_t*)&cgen_var_1387, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018096 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(countingStream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018097 countingStream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
18098 }
18099 uint32_t packetSize_vkGetMemoryAndroidHardwareBufferANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18100 countingStream->rewind();
18101 uint32_t opcode_vkGetMemoryAndroidHardwareBufferANDROID = OP_vkGetMemoryAndroidHardwareBufferANDROID;
18102 stream->write(&opcode_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
18103 stream->write(&packetSize_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018104 uint64_t cgen_var_1388;
18105 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1388, 1);
18106 stream->write((uint64_t*)&cgen_var_1388, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018107 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(stream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018108 stream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
18109 stream->read((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
18110 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
18111 stream->read(&vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018112 countingStream->clearPool();
18113 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018114 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018115 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
18116}
18117
18118#endif
18119#ifdef VK_EXT_sampler_filter_minmax
18120#endif
18121#ifdef VK_AMD_gpu_shader_int16
18122#endif
18123#ifdef VK_AMD_mixed_attachment_samples
18124#endif
18125#ifdef VK_AMD_shader_fragment_mask
18126#endif
18127#ifdef VK_EXT_shader_stencil_export
18128#endif
18129#ifdef VK_EXT_sample_locations
18130void VkEncoder::vkCmdSetSampleLocationsEXT(
18131 VkCommandBuffer commandBuffer,
18132 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
18133{
18134 auto stream = mImpl->stream();
18135 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018136 auto resources = mImpl->resources();
18137 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018138 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018139 VkCommandBuffer local_commandBuffer;
18140 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018141 VkSampleLocationsInfoEXT* local_pSampleLocationsInfo;
18142 local_pSampleLocationsInfo = nullptr;
18143 if (pSampleLocationsInfo)
18144 {
18145 local_pSampleLocationsInfo = (VkSampleLocationsInfoEXT*)pool->alloc(sizeof(const VkSampleLocationsInfoEXT));
18146 deepcopy_VkSampleLocationsInfoEXT(pool, pSampleLocationsInfo, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
18147 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018148 countingStream->rewind();
18149 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018150 uint64_t cgen_var_1389;
18151 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1389, 1);
18152 countingStream->write((uint64_t*)&cgen_var_1389, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018153 marshal_VkSampleLocationsInfoEXT(countingStream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018154 }
18155 uint32_t packetSize_vkCmdSetSampleLocationsEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18156 countingStream->rewind();
18157 uint32_t opcode_vkCmdSetSampleLocationsEXT = OP_vkCmdSetSampleLocationsEXT;
18158 stream->write(&opcode_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
18159 stream->write(&packetSize_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018160 uint64_t cgen_var_1390;
18161 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1390, 1);
18162 stream->write((uint64_t*)&cgen_var_1390, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018163 marshal_VkSampleLocationsInfoEXT(stream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018164}
18165
18166void VkEncoder::vkGetPhysicalDeviceMultisamplePropertiesEXT(
18167 VkPhysicalDevice physicalDevice,
18168 VkSampleCountFlagBits samples,
18169 VkMultisamplePropertiesEXT* pMultisampleProperties)
18170{
18171 auto stream = mImpl->stream();
18172 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018173 auto resources = mImpl->resources();
18174 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018175 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018176 VkPhysicalDevice local_physicalDevice;
18177 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018178 VkSampleCountFlagBits local_samples;
18179 local_samples = samples;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018180 countingStream->rewind();
18181 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018182 uint64_t cgen_var_1391;
18183 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1391, 1);
18184 countingStream->write((uint64_t*)&cgen_var_1391, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018185 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018186 marshal_VkMultisamplePropertiesEXT(countingStream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
18187 }
18188 uint32_t packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18189 countingStream->rewind();
18190 uint32_t opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT = OP_vkGetPhysicalDeviceMultisamplePropertiesEXT;
18191 stream->write(&opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
18192 stream->write(&packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018193 uint64_t cgen_var_1392;
18194 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1392, 1);
18195 stream->write((uint64_t*)&cgen_var_1392, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018196 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018197 marshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
18198 unmarshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
18199}
18200
18201#endif
18202#ifdef VK_EXT_blend_operation_advanced
18203#endif
18204#ifdef VK_NV_fragment_coverage_to_color
18205#endif
18206#ifdef VK_NV_framebuffer_mixed_samples
18207#endif
18208#ifdef VK_NV_fill_rectangle
18209#endif
18210#ifdef VK_EXT_post_depth_coverage
18211#endif
18212#ifdef VK_EXT_validation_cache
18213VkResult VkEncoder::vkCreateValidationCacheEXT(
18214 VkDevice device,
18215 const VkValidationCacheCreateInfoEXT* pCreateInfo,
18216 const VkAllocationCallbacks* pAllocator,
18217 VkValidationCacheEXT* pValidationCache)
18218{
18219 auto stream = mImpl->stream();
18220 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018221 auto resources = mImpl->resources();
18222 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018223 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018224 VkDevice local_device;
18225 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018226 VkValidationCacheCreateInfoEXT* local_pCreateInfo;
18227 local_pCreateInfo = nullptr;
18228 if (pCreateInfo)
18229 {
18230 local_pCreateInfo = (VkValidationCacheCreateInfoEXT*)pool->alloc(sizeof(const VkValidationCacheCreateInfoEXT));
18231 deepcopy_VkValidationCacheCreateInfoEXT(pool, pCreateInfo, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
18232 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018233 VkAllocationCallbacks* local_pAllocator;
18234 local_pAllocator = nullptr;
18235 if (pAllocator)
18236 {
18237 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18238 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18239 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018240 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018241 countingStream->rewind();
18242 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018243 uint64_t cgen_var_1393;
18244 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1393, 1);
18245 countingStream->write((uint64_t*)&cgen_var_1393, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018246 marshal_VkValidationCacheCreateInfoEXT(countingStream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018247 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018248 uint64_t cgen_var_1394 = (uint64_t)(uintptr_t)local_pAllocator;
18249 countingStream->putBe64(cgen_var_1394);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018250 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018251 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018252 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018253 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018254 uint64_t cgen_var_1395;
18255 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1395, 1);
18256 countingStream->write((uint64_t*)&cgen_var_1395, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018257 }
18258 uint32_t packetSize_vkCreateValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18259 countingStream->rewind();
18260 uint32_t opcode_vkCreateValidationCacheEXT = OP_vkCreateValidationCacheEXT;
18261 stream->write(&opcode_vkCreateValidationCacheEXT, sizeof(uint32_t));
18262 stream->write(&packetSize_vkCreateValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018263 uint64_t cgen_var_1396;
18264 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1396, 1);
18265 stream->write((uint64_t*)&cgen_var_1396, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018266 marshal_VkValidationCacheCreateInfoEXT(stream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018267 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018268 uint64_t cgen_var_1397 = (uint64_t)(uintptr_t)local_pAllocator;
18269 stream->putBe64(cgen_var_1397);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018270 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018271 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018272 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018273 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018274 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018275 uint64_t cgen_var_1398;
18276 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1398, 1);
18277 stream->write((uint64_t*)&cgen_var_1398, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018278 stream->setHandleMapping(resources->unwrapMapping());
18279 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018280 uint64_t cgen_var_1399;
18281 stream->read((uint64_t*)&cgen_var_1399, 8);
18282 stream->handleMapping()->mapHandles_u64_VkValidationCacheEXT(&cgen_var_1399, (VkValidationCacheEXT*)pValidationCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018283 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018284 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
18285 stream->read(&vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018286 countingStream->clearPool();
18287 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018288 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018289 return vkCreateValidationCacheEXT_VkResult_return;
18290}
18291
18292void VkEncoder::vkDestroyValidationCacheEXT(
18293 VkDevice device,
18294 VkValidationCacheEXT validationCache,
18295 const VkAllocationCallbacks* pAllocator)
18296{
18297 auto stream = mImpl->stream();
18298 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018299 auto resources = mImpl->resources();
18300 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018301 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018302 VkDevice local_device;
18303 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018304 VkValidationCacheEXT local_validationCache;
18305 local_validationCache = validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018306 VkAllocationCallbacks* local_pAllocator;
18307 local_pAllocator = nullptr;
18308 if (pAllocator)
18309 {
18310 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18311 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18312 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018313 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018314 countingStream->rewind();
18315 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018316 uint64_t cgen_var_1400;
18317 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1400, 1);
18318 countingStream->write((uint64_t*)&cgen_var_1400, 1 * 8);
18319 uint64_t cgen_var_1401;
18320 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1401, 1);
18321 countingStream->write((uint64_t*)&cgen_var_1401, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018322 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018323 uint64_t cgen_var_1402 = (uint64_t)(uintptr_t)local_pAllocator;
18324 countingStream->putBe64(cgen_var_1402);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018325 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018326 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018327 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018328 }
18329 }
18330 uint32_t packetSize_vkDestroyValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18331 countingStream->rewind();
18332 uint32_t opcode_vkDestroyValidationCacheEXT = OP_vkDestroyValidationCacheEXT;
18333 stream->write(&opcode_vkDestroyValidationCacheEXT, sizeof(uint32_t));
18334 stream->write(&packetSize_vkDestroyValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018335 uint64_t cgen_var_1403;
18336 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1403, 1);
18337 stream->write((uint64_t*)&cgen_var_1403, 1 * 8);
18338 uint64_t cgen_var_1404;
18339 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1404, 1);
18340 stream->write((uint64_t*)&cgen_var_1404, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018341 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018342 uint64_t cgen_var_1405 = (uint64_t)(uintptr_t)local_pAllocator;
18343 stream->putBe64(cgen_var_1405);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018344 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018345 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018346 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018347 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018348 resources->destroyMapping()->mapHandles_VkValidationCacheEXT((VkValidationCacheEXT*)&validationCache);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018349}
18350
18351VkResult VkEncoder::vkMergeValidationCachesEXT(
18352 VkDevice device,
18353 VkValidationCacheEXT dstCache,
18354 uint32_t srcCacheCount,
18355 const VkValidationCacheEXT* pSrcCaches)
18356{
18357 auto stream = mImpl->stream();
18358 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018359 auto resources = mImpl->resources();
18360 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018361 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018362 VkDevice local_device;
18363 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018364 VkValidationCacheEXT local_dstCache;
18365 local_dstCache = dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018366 uint32_t local_srcCacheCount;
18367 local_srcCacheCount = srcCacheCount;
18368 VkValidationCacheEXT* local_pSrcCaches;
18369 local_pSrcCaches = nullptr;
18370 if (pSrcCaches)
18371 {
18372 local_pSrcCaches = (VkValidationCacheEXT*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
18373 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018374 countingStream->rewind();
18375 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018376 uint64_t cgen_var_1406;
18377 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1406, 1);
18378 countingStream->write((uint64_t*)&cgen_var_1406, 1 * 8);
18379 uint64_t cgen_var_1407;
18380 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1407, 1);
18381 countingStream->write((uint64_t*)&cgen_var_1407, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018382 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018383 if (((srcCacheCount)))
18384 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018385 uint64_t* cgen_var_1408;
18386 countingStream->alloc((void**)&cgen_var_1408, ((srcCacheCount)) * 8);
18387 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1408, ((srcCacheCount)));
18388 countingStream->write((uint64_t*)cgen_var_1408, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080018389 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018390 }
18391 uint32_t packetSize_vkMergeValidationCachesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18392 countingStream->rewind();
18393 uint32_t opcode_vkMergeValidationCachesEXT = OP_vkMergeValidationCachesEXT;
18394 stream->write(&opcode_vkMergeValidationCachesEXT, sizeof(uint32_t));
18395 stream->write(&packetSize_vkMergeValidationCachesEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018396 uint64_t cgen_var_1409;
18397 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1409, 1);
18398 stream->write((uint64_t*)&cgen_var_1409, 1 * 8);
18399 uint64_t cgen_var_1410;
18400 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1410, 1);
18401 stream->write((uint64_t*)&cgen_var_1410, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018402 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018403 if (((srcCacheCount)))
18404 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018405 uint64_t* cgen_var_1411;
18406 stream->alloc((void**)&cgen_var_1411, ((srcCacheCount)) * 8);
18407 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1411, ((srcCacheCount)));
18408 stream->write((uint64_t*)cgen_var_1411, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080018409 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018410 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
18411 stream->read(&vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018412 countingStream->clearPool();
18413 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018414 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018415 return vkMergeValidationCachesEXT_VkResult_return;
18416}
18417
18418VkResult VkEncoder::vkGetValidationCacheDataEXT(
18419 VkDevice device,
18420 VkValidationCacheEXT validationCache,
18421 size_t* pDataSize,
18422 void* pData)
18423{
18424 auto stream = mImpl->stream();
18425 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018426 auto resources = mImpl->resources();
18427 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018428 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018429 VkDevice local_device;
18430 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018431 VkValidationCacheEXT local_validationCache;
18432 local_validationCache = validationCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018433 countingStream->rewind();
18434 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018435 uint64_t cgen_var_1412;
18436 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1412, 1);
18437 countingStream->write((uint64_t*)&cgen_var_1412, 1 * 8);
18438 uint64_t cgen_var_1413;
18439 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1413, 1);
18440 countingStream->write((uint64_t*)&cgen_var_1413, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018441 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018442 uint64_t cgen_var_1414 = (uint64_t)(uintptr_t)pDataSize;
18443 countingStream->putBe64(cgen_var_1414);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018444 if (pDataSize)
18445 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018446 uint64_t cgen_var_1415 = (uint64_t)(*pDataSize);
18447 countingStream->putBe64(cgen_var_1415);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018448 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018449 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018450 uint64_t cgen_var_1416 = (uint64_t)(uintptr_t)pData;
18451 countingStream->putBe64(cgen_var_1416);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018452 if (pData)
18453 {
18454 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
18455 }
18456 }
18457 uint32_t packetSize_vkGetValidationCacheDataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18458 countingStream->rewind();
18459 uint32_t opcode_vkGetValidationCacheDataEXT = OP_vkGetValidationCacheDataEXT;
18460 stream->write(&opcode_vkGetValidationCacheDataEXT, sizeof(uint32_t));
18461 stream->write(&packetSize_vkGetValidationCacheDataEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018462 uint64_t cgen_var_1417;
18463 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1417, 1);
18464 stream->write((uint64_t*)&cgen_var_1417, 1 * 8);
18465 uint64_t cgen_var_1418;
18466 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1418, 1);
18467 stream->write((uint64_t*)&cgen_var_1418, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018468 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018469 uint64_t cgen_var_1419 = (uint64_t)(uintptr_t)pDataSize;
18470 stream->putBe64(cgen_var_1419);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018471 if (pDataSize)
18472 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018473 uint64_t cgen_var_1420 = (uint64_t)(*pDataSize);
18474 stream->putBe64(cgen_var_1420);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018475 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018476 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018477 uint64_t cgen_var_1421 = (uint64_t)(uintptr_t)pData;
18478 stream->putBe64(cgen_var_1421);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018479 if (pData)
18480 {
18481 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
18482 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018483 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018484 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018485 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018486 if (pDataSize)
18487 {
18488 if (!(check_pDataSize))
18489 {
18490 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
18491 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018492 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018493 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018494 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018495 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018496 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018497 if (pData)
18498 {
18499 if (!(check_pData))
18500 {
18501 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
18502 }
18503 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
18504 }
18505 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
18506 stream->read(&vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018507 countingStream->clearPool();
18508 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018509 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018510 return vkGetValidationCacheDataEXT_VkResult_return;
18511}
18512
18513#endif
18514#ifdef VK_EXT_descriptor_indexing
18515#endif
18516#ifdef VK_EXT_shader_viewport_index_layer
18517#endif
18518#ifdef VK_EXT_global_priority
18519#endif
18520#ifdef VK_EXT_external_memory_host
18521VkResult VkEncoder::vkGetMemoryHostPointerPropertiesEXT(
18522 VkDevice device,
18523 VkExternalMemoryHandleTypeFlagBits handleType,
18524 const void* pHostPointer,
18525 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
18526{
18527 auto stream = mImpl->stream();
18528 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018529 auto resources = mImpl->resources();
18530 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018531 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018532 VkDevice local_device;
18533 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018534 VkExternalMemoryHandleTypeFlagBits local_handleType;
18535 local_handleType = handleType;
18536 void* local_pHostPointer;
18537 local_pHostPointer = nullptr;
18538 if (pHostPointer)
18539 {
18540 local_pHostPointer = (void*)pool->dupArray(pHostPointer, sizeof(const uint8_t));
18541 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018542 countingStream->rewind();
18543 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018544 uint64_t cgen_var_1425;
18545 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1425, 1);
18546 countingStream->write((uint64_t*)&cgen_var_1425, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018547 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018548 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018549 uint64_t cgen_var_1426 = (uint64_t)(uintptr_t)local_pHostPointer;
18550 countingStream->putBe64(cgen_var_1426);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018551 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018552 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018553 countingStream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018554 }
18555 marshal_VkMemoryHostPointerPropertiesEXT(countingStream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
18556 }
18557 uint32_t packetSize_vkGetMemoryHostPointerPropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18558 countingStream->rewind();
18559 uint32_t opcode_vkGetMemoryHostPointerPropertiesEXT = OP_vkGetMemoryHostPointerPropertiesEXT;
18560 stream->write(&opcode_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
18561 stream->write(&packetSize_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018562 uint64_t cgen_var_1427;
18563 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1427, 1);
18564 stream->write((uint64_t*)&cgen_var_1427, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018565 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018566 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018567 uint64_t cgen_var_1428 = (uint64_t)(uintptr_t)local_pHostPointer;
18568 stream->putBe64(cgen_var_1428);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018569 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018570 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018571 stream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018572 }
18573 marshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
18574 unmarshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
18575 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
18576 stream->read(&vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018577 countingStream->clearPool();
18578 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018579 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018580 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
18581}
18582
18583#endif
18584#ifdef VK_AMD_buffer_marker
18585void VkEncoder::vkCmdWriteBufferMarkerAMD(
18586 VkCommandBuffer commandBuffer,
18587 VkPipelineStageFlagBits pipelineStage,
18588 VkBuffer dstBuffer,
18589 VkDeviceSize dstOffset,
18590 uint32_t marker)
18591{
18592 auto stream = mImpl->stream();
18593 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018594 auto resources = mImpl->resources();
18595 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018596 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018597 VkCommandBuffer local_commandBuffer;
18598 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018599 VkPipelineStageFlagBits local_pipelineStage;
18600 local_pipelineStage = pipelineStage;
18601 VkBuffer local_dstBuffer;
18602 local_dstBuffer = dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018603 VkDeviceSize local_dstOffset;
18604 local_dstOffset = dstOffset;
18605 uint32_t local_marker;
18606 local_marker = marker;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018607 countingStream->rewind();
18608 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018609 uint64_t cgen_var_1429;
18610 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1429, 1);
18611 countingStream->write((uint64_t*)&cgen_var_1429, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018612 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018613 uint64_t cgen_var_1430;
18614 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1430, 1);
18615 countingStream->write((uint64_t*)&cgen_var_1430, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018616 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
18617 countingStream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018618 }
18619 uint32_t packetSize_vkCmdWriteBufferMarkerAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18620 countingStream->rewind();
18621 uint32_t opcode_vkCmdWriteBufferMarkerAMD = OP_vkCmdWriteBufferMarkerAMD;
18622 stream->write(&opcode_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
18623 stream->write(&packetSize_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018624 uint64_t cgen_var_1431;
18625 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1431, 1);
18626 stream->write((uint64_t*)&cgen_var_1431, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018627 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018628 uint64_t cgen_var_1432;
18629 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1432, 1);
18630 stream->write((uint64_t*)&cgen_var_1432, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018631 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
18632 stream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018633}
18634
18635#endif
18636#ifdef VK_AMD_shader_core_properties
18637#endif
18638#ifdef VK_EXT_vertex_attribute_divisor
18639#endif
18640#ifdef VK_NV_shader_subgroup_partitioned
18641#endif
18642#ifdef VK_NV_device_diagnostic_checkpoints
18643void VkEncoder::vkCmdSetCheckpointNV(
18644 VkCommandBuffer commandBuffer,
18645 const void* pCheckpointMarker)
18646{
18647 auto stream = mImpl->stream();
18648 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018649 auto resources = mImpl->resources();
18650 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018651 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018652 VkCommandBuffer local_commandBuffer;
18653 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018654 void* local_pCheckpointMarker;
18655 local_pCheckpointMarker = nullptr;
18656 if (pCheckpointMarker)
18657 {
18658 local_pCheckpointMarker = (void*)pool->dupArray(pCheckpointMarker, sizeof(const uint8_t));
18659 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018660 countingStream->rewind();
18661 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018662 uint64_t cgen_var_1433;
18663 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1433, 1);
18664 countingStream->write((uint64_t*)&cgen_var_1433, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018665 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018666 uint64_t cgen_var_1434 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
18667 countingStream->putBe64(cgen_var_1434);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018668 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018669 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018670 countingStream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018671 }
18672 }
18673 uint32_t packetSize_vkCmdSetCheckpointNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18674 countingStream->rewind();
18675 uint32_t opcode_vkCmdSetCheckpointNV = OP_vkCmdSetCheckpointNV;
18676 stream->write(&opcode_vkCmdSetCheckpointNV, sizeof(uint32_t));
18677 stream->write(&packetSize_vkCmdSetCheckpointNV, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018678 uint64_t cgen_var_1435;
18679 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1435, 1);
18680 stream->write((uint64_t*)&cgen_var_1435, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018681 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018682 uint64_t cgen_var_1436 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
18683 stream->putBe64(cgen_var_1436);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018684 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018685 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018686 stream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018687 }
18688}
18689
18690void VkEncoder::vkGetQueueCheckpointDataNV(
18691 VkQueue queue,
18692 uint32_t* pCheckpointDataCount,
18693 VkCheckpointDataNV* pCheckpointData)
18694{
18695 auto stream = mImpl->stream();
18696 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018697 auto resources = mImpl->resources();
18698 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018699 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018700 VkQueue local_queue;
18701 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018702 countingStream->rewind();
18703 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018704 uint64_t cgen_var_1437;
18705 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1437, 1);
18706 countingStream->write((uint64_t*)&cgen_var_1437, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018707 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018708 uint64_t cgen_var_1438 = (uint64_t)(uintptr_t)pCheckpointDataCount;
18709 countingStream->putBe64(cgen_var_1438);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018710 if (pCheckpointDataCount)
18711 {
18712 countingStream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
18713 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018714 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018715 uint64_t cgen_var_1439 = (uint64_t)(uintptr_t)pCheckpointData;
18716 countingStream->putBe64(cgen_var_1439);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018717 if (pCheckpointData)
18718 {
18719 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
18720 {
18721 marshal_VkCheckpointDataNV(countingStream, (VkCheckpointDataNV*)(pCheckpointData + i));
18722 }
18723 }
18724 }
18725 uint32_t packetSize_vkGetQueueCheckpointDataNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18726 countingStream->rewind();
18727 uint32_t opcode_vkGetQueueCheckpointDataNV = OP_vkGetQueueCheckpointDataNV;
18728 stream->write(&opcode_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
18729 stream->write(&packetSize_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018730 uint64_t cgen_var_1440;
18731 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1440, 1);
18732 stream->write((uint64_t*)&cgen_var_1440, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018733 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018734 uint64_t cgen_var_1441 = (uint64_t)(uintptr_t)pCheckpointDataCount;
18735 stream->putBe64(cgen_var_1441);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018736 if (pCheckpointDataCount)
18737 {
18738 stream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
18739 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018740 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018741 uint64_t cgen_var_1442 = (uint64_t)(uintptr_t)pCheckpointData;
18742 stream->putBe64(cgen_var_1442);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018743 if (pCheckpointData)
18744 {
18745 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
18746 {
18747 marshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
18748 }
18749 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018750 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018751 uint32_t* check_pCheckpointDataCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018752 check_pCheckpointDataCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018753 if (pCheckpointDataCount)
18754 {
18755 if (!(check_pCheckpointDataCount))
18756 {
18757 fprintf(stderr, "fatal: pCheckpointDataCount inconsistent between guest and host\n");
18758 }
18759 stream->read((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
18760 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018761 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018762 VkCheckpointDataNV* check_pCheckpointData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018763 check_pCheckpointData = (VkCheckpointDataNV*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018764 if (pCheckpointData)
18765 {
18766 if (!(check_pCheckpointData))
18767 {
18768 fprintf(stderr, "fatal: pCheckpointData inconsistent between guest and host\n");
18769 }
18770 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
18771 {
18772 unmarshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
18773 }
18774 }
18775}
18776
18777#endif
18778
18779