blob: d8286c8baa00a7e97721e4379c83ff20353553bb [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 Yang808a6312018-11-13 21:06:15 -080040#include "goldfish_vk_private_defs.h"
Lingfeng Yange71c6422018-11-01 19:29:49 -070041
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070042
Lingfeng Yangb1d90102018-11-29 16:10:36 -080043namespace goldfish_vk {
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070044
45
46
Lingfeng Yang71b596b2018-11-07 18:03:25 -080047using namespace goldfish_vk;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070048
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080049using android::aligned_buf_alloc;
50using android::aligned_buf_free;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080051using android::base::Pool;
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080052
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070053class VkEncoder::Impl {
54public:
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070055 Impl(IOStream* stream) : m_stream(stream) { }
56 VulkanCountingStream* countingStream() { return &m_countingStream; }
57 VulkanStream* stream() { return &m_stream; }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080058 Pool* pool() { return &m_pool; }
59 ResourceTracker* resources() { return ResourceTracker::get(); }
Lingfeng Yang29c99d92018-11-30 11:15:29 -080060 Validation* validation() { return &m_validation; }
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070061private:
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070062 VulkanCountingStream m_countingStream;
63 VulkanStream m_stream;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080064 Pool m_pool { 8, 4096, 64 };
Lingfeng Yang29c99d92018-11-30 11:15:29 -080065
66 Validation m_validation;
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070067};
68
69VkEncoder::VkEncoder(IOStream *stream) :
70 mImpl(new VkEncoder::Impl(stream)) { }
Lingfeng Yang60b411d2018-11-29 00:26:45 -080071
72#define VALIDATE_RET(retType, success, validate) \
73 retType goldfish_vk_validateResult = validate; \
74 if (goldfish_vk_validateResult != success) return goldfish_vk_validateResult; \
75
76#define VALIDATE_VOID(validate) \
77 VkResult goldfish_vk_validateResult = validate; \
78 if (goldfish_vk_validateResult != VK_SUCCESS) return; \
79
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070080#ifdef VK_VERSION_1_0
81VkResult VkEncoder::vkCreateInstance(
82 const VkInstanceCreateInfo* pCreateInfo,
83 const VkAllocationCallbacks* pAllocator,
84 VkInstance* pInstance)
85{
86 auto stream = mImpl->stream();
87 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080088 auto resources = mImpl->resources();
89 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080090 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080091 VkInstanceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080092 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080093 local_pCreateInfo = nullptr;
94 if (pCreateInfo)
95 {
96 local_pCreateInfo = (VkInstanceCreateInfo*)pool->alloc(sizeof(const VkInstanceCreateInfo));
97 deepcopy_VkInstanceCreateInfo(pool, pCreateInfo, (VkInstanceCreateInfo*)(local_pCreateInfo));
98 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080099 local_pAllocator = nullptr;
100 if (pAllocator)
101 {
102 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
103 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
104 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800105 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700106 countingStream->rewind();
107 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800108 marshal_VkInstanceCreateInfo(countingStream, (VkInstanceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800109 // WARNING PTR CHECK
110 uint64_t cgen_var_0 = (uint64_t)(uintptr_t)local_pAllocator;
111 countingStream->putBe64(cgen_var_0);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800112 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700113 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800114 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700115 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800116 uint64_t cgen_var_1;
117 countingStream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_1, 1);
118 countingStream->write((uint64_t*)&cgen_var_1, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700119 }
120 uint32_t packetSize_vkCreateInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
121 countingStream->rewind();
122 uint32_t opcode_vkCreateInstance = OP_vkCreateInstance;
123 stream->write(&opcode_vkCreateInstance, sizeof(uint32_t));
124 stream->write(&packetSize_vkCreateInstance, sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800125 marshal_VkInstanceCreateInfo(stream, (VkInstanceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800126 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800127 uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator;
128 stream->putBe64(cgen_var_2);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800129 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700130 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800131 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700132 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800133 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -0800134 uint64_t cgen_var_3;
135 stream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_3, 1);
136 stream->write((uint64_t*)&cgen_var_3, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800137 stream->setHandleMapping(resources->unwrapMapping());
138 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -0800139 uint64_t cgen_var_4;
140 stream->read((uint64_t*)&cgen_var_4, 8);
141 stream->handleMapping()->mapHandles_u64_VkInstance(&cgen_var_4, (VkInstance*)pInstance, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800142 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700143 VkResult vkCreateInstance_VkResult_return = (VkResult)0;
144 stream->read(&vkCreateInstance_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800145 countingStream->clearPool();
146 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800147 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700148 return vkCreateInstance_VkResult_return;
149}
150
151void VkEncoder::vkDestroyInstance(
152 VkInstance instance,
153 const VkAllocationCallbacks* pAllocator)
154{
155 auto stream = mImpl->stream();
156 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800157 auto resources = mImpl->resources();
158 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800159 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800160 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800161 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800162 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800163 local_pAllocator = nullptr;
164 if (pAllocator)
165 {
166 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
167 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
168 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800169 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700170 countingStream->rewind();
171 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800172 uint64_t cgen_var_5;
173 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_5, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800174 countingStream->write((uint64_t*)&cgen_var_5, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800175 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800176 uint64_t cgen_var_6 = (uint64_t)(uintptr_t)local_pAllocator;
177 countingStream->putBe64(cgen_var_6);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800178 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700179 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800180 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700181 }
182 }
183 uint32_t packetSize_vkDestroyInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
184 countingStream->rewind();
185 uint32_t opcode_vkDestroyInstance = OP_vkDestroyInstance;
186 stream->write(&opcode_vkDestroyInstance, sizeof(uint32_t));
187 stream->write(&packetSize_vkDestroyInstance, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800188 uint64_t cgen_var_7;
189 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_7, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800190 stream->write((uint64_t*)&cgen_var_7, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800191 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800192 uint64_t cgen_var_8 = (uint64_t)(uintptr_t)local_pAllocator;
193 stream->putBe64(cgen_var_8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800194 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700195 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800196 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700197 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800198 resources->destroyMapping()->mapHandles_VkInstance((VkInstance*)&instance);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700199}
200
201VkResult VkEncoder::vkEnumeratePhysicalDevices(
202 VkInstance instance,
203 uint32_t* pPhysicalDeviceCount,
204 VkPhysicalDevice* pPhysicalDevices)
205{
206 auto stream = mImpl->stream();
207 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800208 auto resources = mImpl->resources();
209 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800210 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800211 VkInstance local_instance;
212 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700213 countingStream->rewind();
214 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800215 uint64_t cgen_var_9;
216 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_9, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800217 countingStream->write((uint64_t*)&cgen_var_9, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800218 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800219 uint64_t cgen_var_10 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
220 countingStream->putBe64(cgen_var_10);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700221 if (pPhysicalDeviceCount)
222 {
223 countingStream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
224 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800225 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800226 uint64_t cgen_var_11 = (uint64_t)(uintptr_t)pPhysicalDevices;
227 countingStream->putBe64(cgen_var_11);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700228 if (pPhysicalDevices)
229 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800230 if ((*(pPhysicalDeviceCount)))
231 {
232 uint64_t* cgen_var_12;
233 countingStream->alloc((void**)&cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
234 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_12, (*(pPhysicalDeviceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -0800235 countingStream->write((uint64_t*)cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800236 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700237 }
238 }
239 uint32_t packetSize_vkEnumeratePhysicalDevices = 4 + 4 + (uint32_t)countingStream->bytesWritten();
240 countingStream->rewind();
241 uint32_t opcode_vkEnumeratePhysicalDevices = OP_vkEnumeratePhysicalDevices;
242 stream->write(&opcode_vkEnumeratePhysicalDevices, sizeof(uint32_t));
243 stream->write(&packetSize_vkEnumeratePhysicalDevices, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800244 uint64_t cgen_var_13;
245 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_13, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800246 stream->write((uint64_t*)&cgen_var_13, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800247 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800248 uint64_t cgen_var_14 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
249 stream->putBe64(cgen_var_14);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700250 if (pPhysicalDeviceCount)
251 {
252 stream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
253 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800254 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800255 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800256 uint64_t cgen_var_15 = (uint64_t)(uintptr_t)pPhysicalDevices;
257 stream->putBe64(cgen_var_15);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700258 if (pPhysicalDevices)
259 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800260 if ((*(pPhysicalDeviceCount)))
261 {
262 uint64_t* cgen_var_16;
263 stream->alloc((void**)&cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
264 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_16, (*(pPhysicalDeviceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -0800265 stream->write((uint64_t*)cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800266 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700267 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800268 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800269 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700270 uint32_t* check_pPhysicalDeviceCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800271 check_pPhysicalDeviceCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700272 if (pPhysicalDeviceCount)
273 {
274 if (!(check_pPhysicalDeviceCount))
275 {
276 fprintf(stderr, "fatal: pPhysicalDeviceCount inconsistent between guest and host\n");
277 }
278 stream->read((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
279 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800280 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800281 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700282 VkPhysicalDevice* check_pPhysicalDevices;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800283 check_pPhysicalDevices = (VkPhysicalDevice*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700284 if (pPhysicalDevices)
285 {
286 if (!(check_pPhysicalDevices))
287 {
288 fprintf(stderr, "fatal: pPhysicalDevices inconsistent between guest and host\n");
289 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800290 if ((*(pPhysicalDeviceCount)))
291 {
292 uint64_t* cgen_var_19;
293 stream->alloc((void**)&cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800294 stream->read((uint64_t*)cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800295 stream->handleMapping()->mapHandles_u64_VkPhysicalDevice(cgen_var_19, (VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount)));
296 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700297 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800298 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700299 VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
300 stream->read(&vkEnumeratePhysicalDevices_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800301 countingStream->clearPool();
302 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800303 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700304 return vkEnumeratePhysicalDevices_VkResult_return;
305}
306
307void VkEncoder::vkGetPhysicalDeviceFeatures(
308 VkPhysicalDevice physicalDevice,
309 VkPhysicalDeviceFeatures* pFeatures)
310{
311 auto stream = mImpl->stream();
312 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800313 auto resources = mImpl->resources();
314 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800315 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800316 VkPhysicalDevice local_physicalDevice;
317 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700318 countingStream->rewind();
319 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800320 uint64_t cgen_var_20;
321 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_20, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800322 countingStream->write((uint64_t*)&cgen_var_20, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700323 marshal_VkPhysicalDeviceFeatures(countingStream, (VkPhysicalDeviceFeatures*)(pFeatures));
324 }
325 uint32_t packetSize_vkGetPhysicalDeviceFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
326 countingStream->rewind();
327 uint32_t opcode_vkGetPhysicalDeviceFeatures = OP_vkGetPhysicalDeviceFeatures;
328 stream->write(&opcode_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
329 stream->write(&packetSize_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800330 uint64_t cgen_var_21;
331 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_21, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800332 stream->write((uint64_t*)&cgen_var_21, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700333 marshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
334 unmarshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
335}
336
337void VkEncoder::vkGetPhysicalDeviceFormatProperties(
338 VkPhysicalDevice physicalDevice,
339 VkFormat format,
340 VkFormatProperties* pFormatProperties)
341{
342 auto stream = mImpl->stream();
343 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800344 auto resources = mImpl->resources();
345 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800346 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800347 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800348 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800349 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800350 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700351 countingStream->rewind();
352 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800353 uint64_t cgen_var_22;
354 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_22, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800355 countingStream->write((uint64_t*)&cgen_var_22, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800356 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700357 marshal_VkFormatProperties(countingStream, (VkFormatProperties*)(pFormatProperties));
358 }
359 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
360 countingStream->rewind();
361 uint32_t opcode_vkGetPhysicalDeviceFormatProperties = OP_vkGetPhysicalDeviceFormatProperties;
362 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
363 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800364 uint64_t cgen_var_23;
365 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_23, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800366 stream->write((uint64_t*)&cgen_var_23, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800367 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700368 marshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
369 unmarshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
370}
371
372VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties(
373 VkPhysicalDevice physicalDevice,
374 VkFormat format,
375 VkImageType type,
376 VkImageTiling tiling,
377 VkImageUsageFlags usage,
378 VkImageCreateFlags flags,
379 VkImageFormatProperties* pImageFormatProperties)
380{
381 auto stream = mImpl->stream();
382 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800383 auto resources = mImpl->resources();
384 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800385 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800386 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800387 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800388 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800389 VkImageTiling local_tiling;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800390 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800391 VkImageCreateFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800392 local_physicalDevice = physicalDevice;
393 local_format = format;
394 local_type = type;
395 local_tiling = tiling;
396 local_usage = usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800397 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700398 countingStream->rewind();
399 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800400 uint64_t cgen_var_24;
401 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_24, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800402 countingStream->write((uint64_t*)&cgen_var_24, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800403 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
404 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
405 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
406 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
407 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700408 marshal_VkImageFormatProperties(countingStream, (VkImageFormatProperties*)(pImageFormatProperties));
409 }
410 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
411 countingStream->rewind();
412 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties = OP_vkGetPhysicalDeviceImageFormatProperties;
413 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
414 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800415 uint64_t cgen_var_25;
416 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_25, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800417 stream->write((uint64_t*)&cgen_var_25, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800418 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
419 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
420 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
421 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
422 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700423 marshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
424 unmarshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
425 VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
426 stream->read(&vkGetPhysicalDeviceImageFormatProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800427 countingStream->clearPool();
428 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800429 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700430 return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
431}
432
433void VkEncoder::vkGetPhysicalDeviceProperties(
434 VkPhysicalDevice physicalDevice,
435 VkPhysicalDeviceProperties* pProperties)
436{
437 auto stream = mImpl->stream();
438 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800439 auto resources = mImpl->resources();
440 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800441 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800442 VkPhysicalDevice local_physicalDevice;
443 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700444 countingStream->rewind();
445 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800446 uint64_t cgen_var_26;
447 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_26, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800448 countingStream->write((uint64_t*)&cgen_var_26, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700449 marshal_VkPhysicalDeviceProperties(countingStream, (VkPhysicalDeviceProperties*)(pProperties));
450 }
451 uint32_t packetSize_vkGetPhysicalDeviceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
452 countingStream->rewind();
453 uint32_t opcode_vkGetPhysicalDeviceProperties = OP_vkGetPhysicalDeviceProperties;
454 stream->write(&opcode_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
455 stream->write(&packetSize_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800456 uint64_t cgen_var_27;
457 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_27, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800458 stream->write((uint64_t*)&cgen_var_27, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700459 marshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
460 unmarshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
461}
462
463void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties(
464 VkPhysicalDevice physicalDevice,
465 uint32_t* pQueueFamilyPropertyCount,
466 VkQueueFamilyProperties* pQueueFamilyProperties)
467{
468 auto stream = mImpl->stream();
469 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800470 auto resources = mImpl->resources();
471 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800472 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800473 VkPhysicalDevice local_physicalDevice;
474 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700475 countingStream->rewind();
476 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800477 uint64_t cgen_var_28;
478 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_28, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800479 countingStream->write((uint64_t*)&cgen_var_28, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800480 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800481 uint64_t cgen_var_29 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
482 countingStream->putBe64(cgen_var_29);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700483 if (pQueueFamilyPropertyCount)
484 {
485 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
486 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800487 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800488 uint64_t cgen_var_30 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
489 countingStream->putBe64(cgen_var_30);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700490 if (pQueueFamilyProperties)
491 {
492 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
493 {
494 marshal_VkQueueFamilyProperties(countingStream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
495 }
496 }
497 }
498 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
499 countingStream->rewind();
500 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties = OP_vkGetPhysicalDeviceQueueFamilyProperties;
501 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
502 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800503 uint64_t cgen_var_31;
504 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_31, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800505 stream->write((uint64_t*)&cgen_var_31, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800506 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800507 uint64_t cgen_var_32 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
508 stream->putBe64(cgen_var_32);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700509 if (pQueueFamilyPropertyCount)
510 {
511 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
512 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800513 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800514 uint64_t cgen_var_33 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
515 stream->putBe64(cgen_var_33);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700516 if (pQueueFamilyProperties)
517 {
518 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
519 {
520 marshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
521 }
522 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800523 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700524 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800525 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700526 if (pQueueFamilyPropertyCount)
527 {
528 if (!(check_pQueueFamilyPropertyCount))
529 {
530 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
531 }
532 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
533 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800534 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700535 VkQueueFamilyProperties* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800536 check_pQueueFamilyProperties = (VkQueueFamilyProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700537 if (pQueueFamilyProperties)
538 {
539 if (!(check_pQueueFamilyProperties))
540 {
541 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
542 }
543 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
544 {
545 unmarshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
546 }
547 }
548}
549
550void VkEncoder::vkGetPhysicalDeviceMemoryProperties(
551 VkPhysicalDevice physicalDevice,
552 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
553{
554 auto stream = mImpl->stream();
555 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800556 auto resources = mImpl->resources();
557 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800558 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800559 VkPhysicalDevice local_physicalDevice;
560 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700561 countingStream->rewind();
562 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800563 uint64_t cgen_var_36;
564 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_36, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800565 countingStream->write((uint64_t*)&cgen_var_36, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700566 marshal_VkPhysicalDeviceMemoryProperties(countingStream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
567 }
568 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
569 countingStream->rewind();
570 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties = OP_vkGetPhysicalDeviceMemoryProperties;
571 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
572 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800573 uint64_t cgen_var_37;
574 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_37, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800575 stream->write((uint64_t*)&cgen_var_37, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700576 marshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
577 unmarshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
578}
579
580PFN_vkVoidFunction VkEncoder::vkGetInstanceProcAddr(
581 VkInstance instance,
582 const char* pName)
583{
584 auto stream = mImpl->stream();
585 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800586 auto resources = mImpl->resources();
587 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800588 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800589 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800590 char* local_pName;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800591 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800592 local_pName = nullptr;
593 if (pName)
594 {
595 local_pName = pool->strDup(pName);
596 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700597 countingStream->rewind();
598 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800599 uint64_t cgen_var_38;
600 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_38, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800601 countingStream->write((uint64_t*)&cgen_var_38, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800602 countingStream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700603 }
604 uint32_t packetSize_vkGetInstanceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
605 countingStream->rewind();
606 uint32_t opcode_vkGetInstanceProcAddr = OP_vkGetInstanceProcAddr;
607 stream->write(&opcode_vkGetInstanceProcAddr, sizeof(uint32_t));
608 stream->write(&packetSize_vkGetInstanceProcAddr, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800609 uint64_t cgen_var_39;
610 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_39, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800611 stream->write((uint64_t*)&cgen_var_39, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800612 stream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700613 PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
614 stream->read(&vkGetInstanceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800615 countingStream->clearPool();
616 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800617 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700618 return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
619}
620
621PFN_vkVoidFunction VkEncoder::vkGetDeviceProcAddr(
622 VkDevice device,
623 const char* pName)
624{
625 auto stream = mImpl->stream();
626 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800627 auto resources = mImpl->resources();
628 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800629 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800630 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800631 char* local_pName;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800632 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800633 local_pName = nullptr;
634 if (pName)
635 {
636 local_pName = pool->strDup(pName);
637 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700638 countingStream->rewind();
639 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800640 uint64_t cgen_var_40;
641 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_40, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800642 countingStream->write((uint64_t*)&cgen_var_40, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800643 countingStream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700644 }
645 uint32_t packetSize_vkGetDeviceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
646 countingStream->rewind();
647 uint32_t opcode_vkGetDeviceProcAddr = OP_vkGetDeviceProcAddr;
648 stream->write(&opcode_vkGetDeviceProcAddr, sizeof(uint32_t));
649 stream->write(&packetSize_vkGetDeviceProcAddr, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800650 uint64_t cgen_var_41;
651 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_41, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800652 stream->write((uint64_t*)&cgen_var_41, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800653 stream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700654 PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
655 stream->read(&vkGetDeviceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800656 countingStream->clearPool();
657 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800658 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700659 return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
660}
661
662VkResult VkEncoder::vkCreateDevice(
663 VkPhysicalDevice physicalDevice,
664 const VkDeviceCreateInfo* pCreateInfo,
665 const VkAllocationCallbacks* pAllocator,
666 VkDevice* pDevice)
667{
668 auto stream = mImpl->stream();
669 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800670 auto resources = mImpl->resources();
671 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800672 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800673 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800674 VkDeviceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800675 VkAllocationCallbacks* local_pAllocator;
676 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800677 local_pCreateInfo = nullptr;
678 if (pCreateInfo)
679 {
680 local_pCreateInfo = (VkDeviceCreateInfo*)pool->alloc(sizeof(const VkDeviceCreateInfo));
681 deepcopy_VkDeviceCreateInfo(pool, pCreateInfo, (VkDeviceCreateInfo*)(local_pCreateInfo));
682 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800683 local_pAllocator = nullptr;
684 if (pAllocator)
685 {
686 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
687 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
688 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800689 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700690 countingStream->rewind();
691 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800692 uint64_t cgen_var_42;
693 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_42, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800694 countingStream->write((uint64_t*)&cgen_var_42, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800695 marshal_VkDeviceCreateInfo(countingStream, (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800696 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800697 uint64_t cgen_var_43 = (uint64_t)(uintptr_t)local_pAllocator;
698 countingStream->putBe64(cgen_var_43);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800699 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700700 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800701 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700702 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800703 uint64_t cgen_var_44;
704 countingStream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_44, 1);
705 countingStream->write((uint64_t*)&cgen_var_44, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700706 }
707 uint32_t packetSize_vkCreateDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
708 countingStream->rewind();
709 uint32_t opcode_vkCreateDevice = OP_vkCreateDevice;
710 stream->write(&opcode_vkCreateDevice, sizeof(uint32_t));
711 stream->write(&packetSize_vkCreateDevice, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800712 uint64_t cgen_var_45;
713 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_45, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800714 stream->write((uint64_t*)&cgen_var_45, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800715 marshal_VkDeviceCreateInfo(stream, (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800716 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800717 uint64_t cgen_var_46 = (uint64_t)(uintptr_t)local_pAllocator;
718 stream->putBe64(cgen_var_46);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800719 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700720 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800721 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700722 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800723 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -0800724 uint64_t cgen_var_47;
725 stream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_47, 1);
726 stream->write((uint64_t*)&cgen_var_47, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800727 stream->setHandleMapping(resources->unwrapMapping());
728 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -0800729 uint64_t cgen_var_48;
730 stream->read((uint64_t*)&cgen_var_48, 8);
731 stream->handleMapping()->mapHandles_u64_VkDevice(&cgen_var_48, (VkDevice*)pDevice, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800732 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700733 VkResult vkCreateDevice_VkResult_return = (VkResult)0;
734 stream->read(&vkCreateDevice_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800735 countingStream->clearPool();
736 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800737 pool->freeAll();
Lingfeng Yang131d5a42018-11-30 12:00:33 -0800738 mImpl->resources()->on_vkCreateDevice(this, vkCreateDevice_VkResult_return, physicalDevice, pCreateInfo, pAllocator, pDevice);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700739 return vkCreateDevice_VkResult_return;
740}
741
742void VkEncoder::vkDestroyDevice(
743 VkDevice device,
744 const VkAllocationCallbacks* pAllocator)
745{
746 auto stream = mImpl->stream();
747 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800748 auto resources = mImpl->resources();
749 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800750 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800751 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800752 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800753 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800754 local_pAllocator = nullptr;
755 if (pAllocator)
756 {
757 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
758 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
759 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800760 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700761 countingStream->rewind();
762 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800763 uint64_t cgen_var_49;
764 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_49, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800765 countingStream->write((uint64_t*)&cgen_var_49, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800766 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800767 uint64_t cgen_var_50 = (uint64_t)(uintptr_t)local_pAllocator;
768 countingStream->putBe64(cgen_var_50);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800769 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700770 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800771 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700772 }
773 }
774 uint32_t packetSize_vkDestroyDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
775 countingStream->rewind();
776 uint32_t opcode_vkDestroyDevice = OP_vkDestroyDevice;
777 stream->write(&opcode_vkDestroyDevice, sizeof(uint32_t));
778 stream->write(&packetSize_vkDestroyDevice, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800779 uint64_t cgen_var_51;
780 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_51, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800781 stream->write((uint64_t*)&cgen_var_51, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800782 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800783 uint64_t cgen_var_52 = (uint64_t)(uintptr_t)local_pAllocator;
784 stream->putBe64(cgen_var_52);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800785 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700786 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800787 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700788 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800789 resources->destroyMapping()->mapHandles_VkDevice((VkDevice*)&device);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700790}
791
792VkResult VkEncoder::vkEnumerateInstanceExtensionProperties(
793 const char* pLayerName,
794 uint32_t* pPropertyCount,
795 VkExtensionProperties* pProperties)
796{
797 auto stream = mImpl->stream();
798 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800799 auto resources = mImpl->resources();
800 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800801 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800802 char* local_pLayerName;
803 local_pLayerName = nullptr;
804 if (pLayerName)
805 {
806 local_pLayerName = pool->strDup(pLayerName);
807 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700808 countingStream->rewind();
809 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800810 countingStream->putString(local_pLayerName);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800811 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800812 uint64_t cgen_var_53 = (uint64_t)(uintptr_t)pPropertyCount;
813 countingStream->putBe64(cgen_var_53);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700814 if (pPropertyCount)
815 {
816 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
817 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800818 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800819 uint64_t cgen_var_54 = (uint64_t)(uintptr_t)pProperties;
820 countingStream->putBe64(cgen_var_54);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700821 if (pProperties)
822 {
823 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
824 {
825 marshal_VkExtensionProperties(countingStream, (VkExtensionProperties*)(pProperties + i));
826 }
827 }
828 }
829 uint32_t packetSize_vkEnumerateInstanceExtensionProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
830 countingStream->rewind();
831 uint32_t opcode_vkEnumerateInstanceExtensionProperties = OP_vkEnumerateInstanceExtensionProperties;
832 stream->write(&opcode_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
833 stream->write(&packetSize_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800834 stream->putString(local_pLayerName);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800835 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800836 uint64_t cgen_var_55 = (uint64_t)(uintptr_t)pPropertyCount;
837 stream->putBe64(cgen_var_55);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700838 if (pPropertyCount)
839 {
840 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
841 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800842 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800843 uint64_t cgen_var_56 = (uint64_t)(uintptr_t)pProperties;
844 stream->putBe64(cgen_var_56);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700845 if (pProperties)
846 {
847 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
848 {
849 marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
850 }
851 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800852 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700853 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800854 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700855 if (pPropertyCount)
856 {
857 if (!(check_pPropertyCount))
858 {
859 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
860 }
861 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
862 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800863 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700864 VkExtensionProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800865 check_pProperties = (VkExtensionProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700866 if (pProperties)
867 {
868 if (!(check_pProperties))
869 {
870 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
871 }
872 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
873 {
874 unmarshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
875 }
876 }
877 VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
878 stream->read(&vkEnumerateInstanceExtensionProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800879 countingStream->clearPool();
880 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800881 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700882 return vkEnumerateInstanceExtensionProperties_VkResult_return;
883}
884
885VkResult VkEncoder::vkEnumerateDeviceExtensionProperties(
886 VkPhysicalDevice physicalDevice,
887 const char* pLayerName,
888 uint32_t* pPropertyCount,
889 VkExtensionProperties* pProperties)
890{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700891 VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -0800892 vkEnumerateDeviceExtensionProperties_VkResult_return = mImpl->resources()->on_vkEnumerateDeviceExtensionProperties(this, VK_SUCCESS, physicalDevice, pLayerName, pPropertyCount, pProperties);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700893 return vkEnumerateDeviceExtensionProperties_VkResult_return;
894}
895
896VkResult VkEncoder::vkEnumerateInstanceLayerProperties(
897 uint32_t* pPropertyCount,
898 VkLayerProperties* pProperties)
899{
900 auto stream = mImpl->stream();
901 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800902 auto resources = mImpl->resources();
903 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800904 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700905 countingStream->rewind();
906 {
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800907 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800908 uint64_t cgen_var_59 = (uint64_t)(uintptr_t)pPropertyCount;
909 countingStream->putBe64(cgen_var_59);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700910 if (pPropertyCount)
911 {
912 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
913 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800914 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800915 uint64_t cgen_var_60 = (uint64_t)(uintptr_t)pProperties;
916 countingStream->putBe64(cgen_var_60);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700917 if (pProperties)
918 {
919 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
920 {
921 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
922 }
923 }
924 }
925 uint32_t packetSize_vkEnumerateInstanceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
926 countingStream->rewind();
927 uint32_t opcode_vkEnumerateInstanceLayerProperties = OP_vkEnumerateInstanceLayerProperties;
928 stream->write(&opcode_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
929 stream->write(&packetSize_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800930 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800931 uint64_t cgen_var_61 = (uint64_t)(uintptr_t)pPropertyCount;
932 stream->putBe64(cgen_var_61);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700933 if (pPropertyCount)
934 {
935 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
936 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800937 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800938 uint64_t cgen_var_62 = (uint64_t)(uintptr_t)pProperties;
939 stream->putBe64(cgen_var_62);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700940 if (pProperties)
941 {
942 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
943 {
944 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
945 }
946 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800947 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700948 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800949 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700950 if (pPropertyCount)
951 {
952 if (!(check_pPropertyCount))
953 {
954 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
955 }
956 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
957 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800958 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700959 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800960 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700961 if (pProperties)
962 {
963 if (!(check_pProperties))
964 {
965 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
966 }
967 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
968 {
969 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
970 }
971 }
972 VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
973 stream->read(&vkEnumerateInstanceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800974 countingStream->clearPool();
975 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800976 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700977 return vkEnumerateInstanceLayerProperties_VkResult_return;
978}
979
980VkResult VkEncoder::vkEnumerateDeviceLayerProperties(
981 VkPhysicalDevice physicalDevice,
982 uint32_t* pPropertyCount,
983 VkLayerProperties* pProperties)
984{
985 auto stream = mImpl->stream();
986 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800987 auto resources = mImpl->resources();
988 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800989 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800990 VkPhysicalDevice local_physicalDevice;
991 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700992 countingStream->rewind();
993 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800994 uint64_t cgen_var_65;
995 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_65, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800996 countingStream->write((uint64_t*)&cgen_var_65, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800997 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800998 uint64_t cgen_var_66 = (uint64_t)(uintptr_t)pPropertyCount;
999 countingStream->putBe64(cgen_var_66);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001000 if (pPropertyCount)
1001 {
1002 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1003 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001004 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001005 uint64_t cgen_var_67 = (uint64_t)(uintptr_t)pProperties;
1006 countingStream->putBe64(cgen_var_67);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001007 if (pProperties)
1008 {
1009 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1010 {
1011 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
1012 }
1013 }
1014 }
1015 uint32_t packetSize_vkEnumerateDeviceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1016 countingStream->rewind();
1017 uint32_t opcode_vkEnumerateDeviceLayerProperties = OP_vkEnumerateDeviceLayerProperties;
1018 stream->write(&opcode_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
1019 stream->write(&packetSize_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001020 uint64_t cgen_var_68;
1021 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_68, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001022 stream->write((uint64_t*)&cgen_var_68, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001023 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001024 uint64_t cgen_var_69 = (uint64_t)(uintptr_t)pPropertyCount;
1025 stream->putBe64(cgen_var_69);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001026 if (pPropertyCount)
1027 {
1028 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1029 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001030 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001031 uint64_t cgen_var_70 = (uint64_t)(uintptr_t)pProperties;
1032 stream->putBe64(cgen_var_70);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001033 if (pProperties)
1034 {
1035 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1036 {
1037 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1038 }
1039 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001040 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001041 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001042 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001043 if (pPropertyCount)
1044 {
1045 if (!(check_pPropertyCount))
1046 {
1047 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1048 }
1049 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1050 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001051 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001052 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001053 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001054 if (pProperties)
1055 {
1056 if (!(check_pProperties))
1057 {
1058 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1059 }
1060 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1061 {
1062 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1063 }
1064 }
1065 VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
1066 stream->read(&vkEnumerateDeviceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001067 countingStream->clearPool();
1068 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001069 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001070 return vkEnumerateDeviceLayerProperties_VkResult_return;
1071}
1072
1073void VkEncoder::vkGetDeviceQueue(
1074 VkDevice device,
1075 uint32_t queueFamilyIndex,
1076 uint32_t queueIndex,
1077 VkQueue* pQueue)
1078{
1079 auto stream = mImpl->stream();
1080 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001081 auto resources = mImpl->resources();
1082 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001083 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001084 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001085 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001086 uint32_t local_queueIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001087 local_device = device;
1088 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001089 local_queueIndex = queueIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001090 countingStream->rewind();
1091 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001092 uint64_t cgen_var_73;
1093 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_73, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001094 countingStream->write((uint64_t*)&cgen_var_73, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001095 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1096 countingStream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001097 uint64_t cgen_var_74;
1098 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_74, 1);
1099 countingStream->write((uint64_t*)&cgen_var_74, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001100 }
1101 uint32_t packetSize_vkGetDeviceQueue = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1102 countingStream->rewind();
1103 uint32_t opcode_vkGetDeviceQueue = OP_vkGetDeviceQueue;
1104 stream->write(&opcode_vkGetDeviceQueue, sizeof(uint32_t));
1105 stream->write(&packetSize_vkGetDeviceQueue, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001106 uint64_t cgen_var_75;
1107 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_75, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001108 stream->write((uint64_t*)&cgen_var_75, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001109 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1110 stream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yange4008a02018-11-18 12:22:48 -08001111 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08001112 uint64_t cgen_var_76;
1113 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_76, 1);
1114 stream->write((uint64_t*)&cgen_var_76, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001115 stream->setHandleMapping(resources->unwrapMapping());
1116 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08001117 uint64_t cgen_var_77;
1118 stream->read((uint64_t*)&cgen_var_77, 8);
1119 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_77, (VkQueue*)pQueue, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001120 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001121}
1122
1123VkResult VkEncoder::vkQueueSubmit(
1124 VkQueue queue,
1125 uint32_t submitCount,
1126 const VkSubmitInfo* pSubmits,
1127 VkFence fence)
1128{
1129 auto stream = mImpl->stream();
1130 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001131 auto resources = mImpl->resources();
1132 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001133 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001134 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001135 uint32_t local_submitCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001136 VkSubmitInfo* local_pSubmits;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001137 VkFence local_fence;
1138 local_queue = queue;
1139 local_submitCount = submitCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001140 local_pSubmits = nullptr;
1141 if (pSubmits)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001142 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001143 local_pSubmits = (VkSubmitInfo*)pool->alloc(((submitCount)) * sizeof(const VkSubmitInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001144 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1145 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001146 deepcopy_VkSubmitInfo(pool, pSubmits + i, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001147 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001148 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001149 local_fence = fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001150 countingStream->rewind();
1151 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001152 uint64_t cgen_var_78;
1153 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_78, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001154 countingStream->write((uint64_t*)&cgen_var_78, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001155 countingStream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
1156 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1157 {
1158 marshal_VkSubmitInfo(countingStream, (VkSubmitInfo*)(local_pSubmits + i));
1159 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001160 uint64_t cgen_var_79;
1161 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_79, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001162 countingStream->write((uint64_t*)&cgen_var_79, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001163 }
1164 uint32_t packetSize_vkQueueSubmit = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1165 countingStream->rewind();
1166 uint32_t opcode_vkQueueSubmit = OP_vkQueueSubmit;
1167 stream->write(&opcode_vkQueueSubmit, sizeof(uint32_t));
1168 stream->write(&packetSize_vkQueueSubmit, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001169 uint64_t cgen_var_80;
1170 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_80, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001171 stream->write((uint64_t*)&cgen_var_80, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001172 stream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001173 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1174 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001175 marshal_VkSubmitInfo(stream, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001176 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001177 uint64_t cgen_var_81;
1178 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_81, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001179 stream->write((uint64_t*)&cgen_var_81, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001180 VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
1181 stream->read(&vkQueueSubmit_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001182 countingStream->clearPool();
1183 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001184 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001185 return vkQueueSubmit_VkResult_return;
1186}
1187
1188VkResult VkEncoder::vkQueueWaitIdle(
1189 VkQueue queue)
1190{
1191 auto stream = mImpl->stream();
1192 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001193 auto resources = mImpl->resources();
1194 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001195 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001196 VkQueue local_queue;
1197 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001198 countingStream->rewind();
1199 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001200 uint64_t cgen_var_82;
1201 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_82, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001202 countingStream->write((uint64_t*)&cgen_var_82, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001203 }
1204 uint32_t packetSize_vkQueueWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1205 countingStream->rewind();
1206 uint32_t opcode_vkQueueWaitIdle = OP_vkQueueWaitIdle;
1207 stream->write(&opcode_vkQueueWaitIdle, sizeof(uint32_t));
1208 stream->write(&packetSize_vkQueueWaitIdle, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001209 uint64_t cgen_var_83;
1210 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_83, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001211 stream->write((uint64_t*)&cgen_var_83, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001212 VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
1213 stream->read(&vkQueueWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001214 countingStream->clearPool();
1215 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001216 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001217 return vkQueueWaitIdle_VkResult_return;
1218}
1219
1220VkResult VkEncoder::vkDeviceWaitIdle(
1221 VkDevice device)
1222{
1223 auto stream = mImpl->stream();
1224 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001225 auto resources = mImpl->resources();
1226 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001227 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001228 VkDevice local_device;
1229 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001230 countingStream->rewind();
1231 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001232 uint64_t cgen_var_84;
1233 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_84, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001234 countingStream->write((uint64_t*)&cgen_var_84, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001235 }
1236 uint32_t packetSize_vkDeviceWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1237 countingStream->rewind();
1238 uint32_t opcode_vkDeviceWaitIdle = OP_vkDeviceWaitIdle;
1239 stream->write(&opcode_vkDeviceWaitIdle, sizeof(uint32_t));
1240 stream->write(&packetSize_vkDeviceWaitIdle, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001241 uint64_t cgen_var_85;
1242 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_85, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001243 stream->write((uint64_t*)&cgen_var_85, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001244 VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
1245 stream->read(&vkDeviceWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001246 countingStream->clearPool();
1247 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001248 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001249 return vkDeviceWaitIdle_VkResult_return;
1250}
1251
1252VkResult VkEncoder::vkAllocateMemory(
1253 VkDevice device,
1254 const VkMemoryAllocateInfo* pAllocateInfo,
1255 const VkAllocationCallbacks* pAllocator,
1256 VkDeviceMemory* pMemory)
1257{
1258 auto stream = mImpl->stream();
1259 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001260 auto resources = mImpl->resources();
1261 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001262 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001263 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001264 VkMemoryAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001265 VkAllocationCallbacks* local_pAllocator;
1266 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001267 local_pAllocateInfo = nullptr;
1268 if (pAllocateInfo)
1269 {
1270 local_pAllocateInfo = (VkMemoryAllocateInfo*)pool->alloc(sizeof(const VkMemoryAllocateInfo));
1271 deepcopy_VkMemoryAllocateInfo(pool, pAllocateInfo, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
1272 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001273 local_pAllocator = nullptr;
1274 if (pAllocator)
1275 {
1276 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1277 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1278 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001279 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001280 countingStream->rewind();
1281 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001282 uint64_t cgen_var_86;
1283 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_86, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001284 countingStream->write((uint64_t*)&cgen_var_86, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001285 marshal_VkMemoryAllocateInfo(countingStream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001286 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001287 uint64_t cgen_var_87 = (uint64_t)(uintptr_t)local_pAllocator;
1288 countingStream->putBe64(cgen_var_87);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001289 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001290 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001291 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001292 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001293 uint64_t cgen_var_88;
1294 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_88, 1);
1295 countingStream->write((uint64_t*)&cgen_var_88, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001296 }
1297 uint32_t packetSize_vkAllocateMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1298 countingStream->rewind();
1299 uint32_t opcode_vkAllocateMemory = OP_vkAllocateMemory;
1300 stream->write(&opcode_vkAllocateMemory, sizeof(uint32_t));
1301 stream->write(&packetSize_vkAllocateMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001302 uint64_t cgen_var_89;
1303 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_89, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001304 stream->write((uint64_t*)&cgen_var_89, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001305 marshal_VkMemoryAllocateInfo(stream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001306 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001307 uint64_t cgen_var_90 = (uint64_t)(uintptr_t)local_pAllocator;
1308 stream->putBe64(cgen_var_90);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001309 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001310 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001311 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001312 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08001313 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08001314 uint64_t cgen_var_91;
1315 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_91, 1);
1316 stream->write((uint64_t*)&cgen_var_91, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001317 stream->setHandleMapping(resources->unwrapMapping());
1318 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08001319 uint64_t cgen_var_92;
1320 stream->read((uint64_t*)&cgen_var_92, 8);
1321 stream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_92, (VkDeviceMemory*)pMemory, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001322 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001323 VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
1324 stream->read(&vkAllocateMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001325 countingStream->clearPool();
1326 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001327 pool->freeAll();
Lingfeng Yang131d5a42018-11-30 12:00:33 -08001328 mImpl->resources()->on_vkAllocateMemory(this, vkAllocateMemory_VkResult_return, device, pAllocateInfo, pAllocator, pMemory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001329 return vkAllocateMemory_VkResult_return;
1330}
1331
1332void VkEncoder::vkFreeMemory(
1333 VkDevice device,
1334 VkDeviceMemory memory,
1335 const VkAllocationCallbacks* pAllocator)
1336{
1337 auto stream = mImpl->stream();
1338 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001339 auto resources = mImpl->resources();
1340 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001341 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001342 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001343 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001344 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001345 local_device = device;
1346 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001347 local_pAllocator = nullptr;
1348 if (pAllocator)
1349 {
1350 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1351 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1352 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001353 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001354 countingStream->rewind();
1355 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001356 uint64_t cgen_var_93;
1357 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_93, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001358 countingStream->write((uint64_t*)&cgen_var_93, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001359 uint64_t cgen_var_94;
1360 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_94, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001361 countingStream->write((uint64_t*)&cgen_var_94, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001362 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001363 uint64_t cgen_var_95 = (uint64_t)(uintptr_t)local_pAllocator;
1364 countingStream->putBe64(cgen_var_95);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001365 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001366 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001367 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001368 }
1369 }
1370 uint32_t packetSize_vkFreeMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1371 countingStream->rewind();
1372 uint32_t opcode_vkFreeMemory = OP_vkFreeMemory;
1373 stream->write(&opcode_vkFreeMemory, sizeof(uint32_t));
1374 stream->write(&packetSize_vkFreeMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001375 uint64_t cgen_var_96;
1376 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_96, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001377 stream->write((uint64_t*)&cgen_var_96, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001378 uint64_t cgen_var_97;
1379 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_97, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001380 stream->write((uint64_t*)&cgen_var_97, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001381 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001382 uint64_t cgen_var_98 = (uint64_t)(uintptr_t)local_pAllocator;
1383 stream->putBe64(cgen_var_98);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001384 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001385 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001386 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001387 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001388 resources->destroyMapping()->mapHandles_VkDeviceMemory((VkDeviceMemory*)&memory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001389}
1390
1391VkResult VkEncoder::vkMapMemory(
1392 VkDevice device,
1393 VkDeviceMemory memory,
1394 VkDeviceSize offset,
1395 VkDeviceSize size,
1396 VkMemoryMapFlags flags,
1397 void** ppData)
1398{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001399 VkResult vkMapMemory_VkResult_return = (VkResult)0;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08001400 vkMapMemory_VkResult_return = mImpl->resources()->on_vkMapMemory(this, VK_SUCCESS, device, memory, offset, size, flags, ppData);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001401 return vkMapMemory_VkResult_return;
1402}
1403
1404void VkEncoder::vkUnmapMemory(
1405 VkDevice device,
1406 VkDeviceMemory memory)
1407{
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08001408 mImpl->resources()->on_vkUnmapMemory(this, device, memory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001409}
1410
1411VkResult VkEncoder::vkFlushMappedMemoryRanges(
1412 VkDevice device,
1413 uint32_t memoryRangeCount,
1414 const VkMappedMemoryRange* pMemoryRanges)
1415{
Lingfeng Yang29c99d92018-11-30 11:15:29 -08001416 VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkFlushMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001417 auto stream = mImpl->stream();
1418 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001419 auto resources = mImpl->resources();
1420 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001421 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001422 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001423 uint32_t local_memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001424 VkMappedMemoryRange* local_pMemoryRanges;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001425 local_device = device;
1426 local_memoryRangeCount = memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001427 local_pMemoryRanges = nullptr;
1428 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001429 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001430 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001431 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1432 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001433 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1434 }
1435 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001436 countingStream->rewind();
1437 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001438 uint64_t cgen_var_99;
1439 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_99, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001440 countingStream->write((uint64_t*)&cgen_var_99, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001441 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1442 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1443 {
1444 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001445 }
1446 }
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001447 if (!resources->usingDirectMapping())
Lingfeng Yange30d3382018-11-09 08:24:37 -08001448 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001449 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1450 {
1451 auto range = pMemoryRanges[i];
1452 auto memory = pMemoryRanges[i].memory;
1453 auto size = pMemoryRanges[i].size;
1454 auto offset = pMemoryRanges[i].offset;
1455 uint64_t streamSize = 0;
1456 if (!memory) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
1457 auto hostPtr = resources->getMappedPointer(memory);
1458 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1459 if (!hostPtr) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
1460 streamSize = actualSize;
1461 countingStream->write(&streamSize, sizeof(uint64_t));
1462 uint8_t* targetRange = hostPtr + offset;
1463 countingStream->write(targetRange, actualSize);
1464 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001465 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001466 uint32_t packetSize_vkFlushMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1467 countingStream->rewind();
1468 uint32_t opcode_vkFlushMappedMemoryRanges = OP_vkFlushMappedMemoryRanges;
1469 stream->write(&opcode_vkFlushMappedMemoryRanges, sizeof(uint32_t));
1470 stream->write(&packetSize_vkFlushMappedMemoryRanges, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001471 uint64_t cgen_var_100;
1472 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_100, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001473 stream->write((uint64_t*)&cgen_var_100, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001474 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001475 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1476 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001477 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001478 }
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001479 if (!resources->usingDirectMapping())
Lingfeng Yange30d3382018-11-09 08:24:37 -08001480 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001481 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1482 {
1483 auto range = pMemoryRanges[i];
1484 auto memory = pMemoryRanges[i].memory;
1485 auto size = pMemoryRanges[i].size;
1486 auto offset = pMemoryRanges[i].offset;
1487 uint64_t streamSize = 0;
1488 if (!memory) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
1489 auto hostPtr = resources->getMappedPointer(memory);
1490 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1491 if (!hostPtr) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
1492 streamSize = actualSize;
1493 stream->write(&streamSize, sizeof(uint64_t));
1494 uint8_t* targetRange = hostPtr + offset;
1495 stream->write(targetRange, actualSize);
1496 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001497 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001498 VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
1499 stream->read(&vkFlushMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001500 countingStream->clearPool();
1501 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001502 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001503 return vkFlushMappedMemoryRanges_VkResult_return;
1504}
1505
1506VkResult VkEncoder::vkInvalidateMappedMemoryRanges(
1507 VkDevice device,
1508 uint32_t memoryRangeCount,
1509 const VkMappedMemoryRange* pMemoryRanges)
1510{
Lingfeng Yang29c99d92018-11-30 11:15:29 -08001511 VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkInvalidateMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001512 auto stream = mImpl->stream();
1513 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001514 auto resources = mImpl->resources();
1515 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001516 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001517 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001518 uint32_t local_memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001519 VkMappedMemoryRange* local_pMemoryRanges;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001520 local_device = device;
1521 local_memoryRangeCount = memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001522 local_pMemoryRanges = nullptr;
1523 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001524 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001525 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001526 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1527 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001528 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1529 }
1530 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001531 countingStream->rewind();
1532 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001533 uint64_t cgen_var_101;
1534 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_101, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001535 countingStream->write((uint64_t*)&cgen_var_101, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001536 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1537 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1538 {
1539 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001540 }
1541 }
1542 uint32_t packetSize_vkInvalidateMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1543 countingStream->rewind();
1544 uint32_t opcode_vkInvalidateMappedMemoryRanges = OP_vkInvalidateMappedMemoryRanges;
1545 stream->write(&opcode_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
1546 stream->write(&packetSize_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001547 uint64_t cgen_var_102;
1548 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_102, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001549 stream->write((uint64_t*)&cgen_var_102, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001550 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001551 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1552 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001553 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001554 }
1555 VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
1556 stream->read(&vkInvalidateMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001557 countingStream->clearPool();
1558 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001559 pool->freeAll();
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001560 if (!resources->usingDirectMapping())
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001561 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001562 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1563 {
1564 auto range = pMemoryRanges[i];
1565 auto memory = pMemoryRanges[i].memory;
1566 auto size = pMemoryRanges[i].size;
1567 auto offset = pMemoryRanges[i].offset;
1568 uint64_t streamSize = 0;
1569 if (!memory) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
1570 auto hostPtr = resources->getMappedPointer(memory);
1571 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1572 if (!hostPtr) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
1573 streamSize = actualSize;
1574 stream->read(&streamSize, sizeof(uint64_t));
1575 uint8_t* targetRange = hostPtr + offset;
1576 stream->read(targetRange, actualSize);
1577 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001578 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001579 return vkInvalidateMappedMemoryRanges_VkResult_return;
1580}
1581
1582void VkEncoder::vkGetDeviceMemoryCommitment(
1583 VkDevice device,
1584 VkDeviceMemory memory,
1585 VkDeviceSize* pCommittedMemoryInBytes)
1586{
1587 auto stream = mImpl->stream();
1588 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001589 auto resources = mImpl->resources();
1590 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001591 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001592 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001593 VkDeviceMemory local_memory;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001594 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001595 local_memory = memory;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001596 countingStream->rewind();
1597 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001598 uint64_t cgen_var_103;
1599 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_103, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001600 countingStream->write((uint64_t*)&cgen_var_103, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001601 uint64_t cgen_var_104;
1602 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_104, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001603 countingStream->write((uint64_t*)&cgen_var_104, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001604 countingStream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1605 }
1606 uint32_t packetSize_vkGetDeviceMemoryCommitment = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1607 countingStream->rewind();
1608 uint32_t opcode_vkGetDeviceMemoryCommitment = OP_vkGetDeviceMemoryCommitment;
1609 stream->write(&opcode_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
1610 stream->write(&packetSize_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001611 uint64_t cgen_var_105;
1612 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_105, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001613 stream->write((uint64_t*)&cgen_var_105, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001614 uint64_t cgen_var_106;
1615 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_106, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001616 stream->write((uint64_t*)&cgen_var_106, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001617 stream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1618 stream->read((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1619}
1620
1621VkResult VkEncoder::vkBindBufferMemory(
1622 VkDevice device,
1623 VkBuffer buffer,
1624 VkDeviceMemory memory,
1625 VkDeviceSize memoryOffset)
1626{
1627 auto stream = mImpl->stream();
1628 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001629 auto resources = mImpl->resources();
1630 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001631 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001632 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001633 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001634 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001635 VkDeviceSize local_memoryOffset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001636 local_device = device;
1637 local_buffer = buffer;
1638 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001639 local_memoryOffset = memoryOffset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001640 countingStream->rewind();
1641 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001642 uint64_t cgen_var_107;
1643 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_107, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001644 countingStream->write((uint64_t*)&cgen_var_107, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001645 uint64_t cgen_var_108;
1646 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_108, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001647 countingStream->write((uint64_t*)&cgen_var_108, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001648 uint64_t cgen_var_109;
1649 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_109, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001650 countingStream->write((uint64_t*)&cgen_var_109, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001651 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001652 }
1653 uint32_t packetSize_vkBindBufferMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1654 countingStream->rewind();
1655 uint32_t opcode_vkBindBufferMemory = OP_vkBindBufferMemory;
1656 stream->write(&opcode_vkBindBufferMemory, sizeof(uint32_t));
1657 stream->write(&packetSize_vkBindBufferMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001658 uint64_t cgen_var_110;
1659 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_110, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001660 stream->write((uint64_t*)&cgen_var_110, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001661 uint64_t cgen_var_111;
1662 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_111, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001663 stream->write((uint64_t*)&cgen_var_111, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001664 uint64_t cgen_var_112;
1665 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_112, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001666 stream->write((uint64_t*)&cgen_var_112, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001667 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001668 VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
1669 stream->read(&vkBindBufferMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001670 countingStream->clearPool();
1671 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001672 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001673 return vkBindBufferMemory_VkResult_return;
1674}
1675
1676VkResult VkEncoder::vkBindImageMemory(
1677 VkDevice device,
1678 VkImage image,
1679 VkDeviceMemory memory,
1680 VkDeviceSize memoryOffset)
1681{
1682 auto stream = mImpl->stream();
1683 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001684 auto resources = mImpl->resources();
1685 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001686 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001687 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001688 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001689 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001690 VkDeviceSize local_memoryOffset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001691 local_device = device;
1692 local_image = image;
1693 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001694 local_memoryOffset = memoryOffset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001695 countingStream->rewind();
1696 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001697 uint64_t cgen_var_113;
1698 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_113, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001699 countingStream->write((uint64_t*)&cgen_var_113, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001700 uint64_t cgen_var_114;
1701 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_114, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001702 countingStream->write((uint64_t*)&cgen_var_114, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001703 uint64_t cgen_var_115;
1704 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_115, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001705 countingStream->write((uint64_t*)&cgen_var_115, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001706 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001707 }
1708 uint32_t packetSize_vkBindImageMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1709 countingStream->rewind();
1710 uint32_t opcode_vkBindImageMemory = OP_vkBindImageMemory;
1711 stream->write(&opcode_vkBindImageMemory, sizeof(uint32_t));
1712 stream->write(&packetSize_vkBindImageMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001713 uint64_t cgen_var_116;
1714 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_116, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001715 stream->write((uint64_t*)&cgen_var_116, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001716 uint64_t cgen_var_117;
1717 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_117, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001718 stream->write((uint64_t*)&cgen_var_117, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001719 uint64_t cgen_var_118;
1720 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_118, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001721 stream->write((uint64_t*)&cgen_var_118, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001722 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001723 VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
1724 stream->read(&vkBindImageMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001725 countingStream->clearPool();
1726 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001727 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001728 return vkBindImageMemory_VkResult_return;
1729}
1730
1731void VkEncoder::vkGetBufferMemoryRequirements(
1732 VkDevice device,
1733 VkBuffer buffer,
1734 VkMemoryRequirements* pMemoryRequirements)
1735{
1736 auto stream = mImpl->stream();
1737 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001738 auto resources = mImpl->resources();
1739 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001740 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001741 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001742 VkBuffer local_buffer;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001743 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001744 local_buffer = buffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001745 countingStream->rewind();
1746 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001747 uint64_t cgen_var_119;
1748 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_119, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001749 countingStream->write((uint64_t*)&cgen_var_119, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001750 uint64_t cgen_var_120;
1751 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_120, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001752 countingStream->write((uint64_t*)&cgen_var_120, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001753 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
1754 }
1755 uint32_t packetSize_vkGetBufferMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1756 countingStream->rewind();
1757 uint32_t opcode_vkGetBufferMemoryRequirements = OP_vkGetBufferMemoryRequirements;
1758 stream->write(&opcode_vkGetBufferMemoryRequirements, sizeof(uint32_t));
1759 stream->write(&packetSize_vkGetBufferMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001760 uint64_t cgen_var_121;
1761 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_121, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001762 stream->write((uint64_t*)&cgen_var_121, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001763 uint64_t cgen_var_122;
1764 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_122, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001765 stream->write((uint64_t*)&cgen_var_122, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001766 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1767 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1768}
1769
1770void VkEncoder::vkGetImageMemoryRequirements(
1771 VkDevice device,
1772 VkImage image,
1773 VkMemoryRequirements* pMemoryRequirements)
1774{
1775 auto stream = mImpl->stream();
1776 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001777 auto resources = mImpl->resources();
1778 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001779 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001780 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001781 VkImage local_image;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001782 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001783 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001784 countingStream->rewind();
1785 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001786 uint64_t cgen_var_123;
1787 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_123, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001788 countingStream->write((uint64_t*)&cgen_var_123, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001789 uint64_t cgen_var_124;
1790 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_124, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001791 countingStream->write((uint64_t*)&cgen_var_124, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001792 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
1793 }
1794 uint32_t packetSize_vkGetImageMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1795 countingStream->rewind();
1796 uint32_t opcode_vkGetImageMemoryRequirements = OP_vkGetImageMemoryRequirements;
1797 stream->write(&opcode_vkGetImageMemoryRequirements, sizeof(uint32_t));
1798 stream->write(&packetSize_vkGetImageMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001799 uint64_t cgen_var_125;
1800 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_125, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001801 stream->write((uint64_t*)&cgen_var_125, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001802 uint64_t cgen_var_126;
1803 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_126, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001804 stream->write((uint64_t*)&cgen_var_126, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001805 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1806 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1807}
1808
1809void VkEncoder::vkGetImageSparseMemoryRequirements(
1810 VkDevice device,
1811 VkImage image,
1812 uint32_t* pSparseMemoryRequirementCount,
1813 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
1814{
1815 auto stream = mImpl->stream();
1816 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001817 auto resources = mImpl->resources();
1818 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001819 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001820 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001821 VkImage local_image;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001822 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001823 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001824 countingStream->rewind();
1825 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001826 uint64_t cgen_var_127;
1827 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_127, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001828 countingStream->write((uint64_t*)&cgen_var_127, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001829 uint64_t cgen_var_128;
1830 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_128, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001831 countingStream->write((uint64_t*)&cgen_var_128, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001832 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001833 uint64_t cgen_var_129 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
1834 countingStream->putBe64(cgen_var_129);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001835 if (pSparseMemoryRequirementCount)
1836 {
1837 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
1838 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001839 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001840 uint64_t cgen_var_130 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
1841 countingStream->putBe64(cgen_var_130);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001842 if (pSparseMemoryRequirements)
1843 {
1844 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
1845 {
1846 marshal_VkSparseImageMemoryRequirements(countingStream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
1847 }
1848 }
1849 }
1850 uint32_t packetSize_vkGetImageSparseMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1851 countingStream->rewind();
1852 uint32_t opcode_vkGetImageSparseMemoryRequirements = OP_vkGetImageSparseMemoryRequirements;
1853 stream->write(&opcode_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
1854 stream->write(&packetSize_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001855 uint64_t cgen_var_131;
1856 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_131, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001857 stream->write((uint64_t*)&cgen_var_131, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001858 uint64_t cgen_var_132;
1859 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_132, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001860 stream->write((uint64_t*)&cgen_var_132, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001861 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001862 uint64_t cgen_var_133 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
1863 stream->putBe64(cgen_var_133);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001864 if (pSparseMemoryRequirementCount)
1865 {
1866 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
1867 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001868 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001869 uint64_t cgen_var_134 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
1870 stream->putBe64(cgen_var_134);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001871 if (pSparseMemoryRequirements)
1872 {
1873 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
1874 {
1875 marshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
1876 }
1877 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001878 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001879 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001880 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001881 if (pSparseMemoryRequirementCount)
1882 {
1883 if (!(check_pSparseMemoryRequirementCount))
1884 {
1885 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
1886 }
1887 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
1888 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001889 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001890 VkSparseImageMemoryRequirements* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001891 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001892 if (pSparseMemoryRequirements)
1893 {
1894 if (!(check_pSparseMemoryRequirements))
1895 {
1896 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
1897 }
1898 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
1899 {
1900 unmarshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
1901 }
1902 }
1903}
1904
1905void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties(
1906 VkPhysicalDevice physicalDevice,
1907 VkFormat format,
1908 VkImageType type,
1909 VkSampleCountFlagBits samples,
1910 VkImageUsageFlags usage,
1911 VkImageTiling tiling,
1912 uint32_t* pPropertyCount,
1913 VkSparseImageFormatProperties* pProperties)
1914{
1915 auto stream = mImpl->stream();
1916 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001917 auto resources = mImpl->resources();
1918 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001919 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001920 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001921 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001922 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001923 VkSampleCountFlagBits local_samples;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001924 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001925 VkImageTiling local_tiling;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001926 local_physicalDevice = physicalDevice;
1927 local_format = format;
1928 local_type = type;
1929 local_samples = samples;
1930 local_usage = usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001931 local_tiling = tiling;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001932 countingStream->rewind();
1933 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001934 uint64_t cgen_var_137;
1935 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_137, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001936 countingStream->write((uint64_t*)&cgen_var_137, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001937 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
1938 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
1939 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
1940 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
1941 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001942 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001943 uint64_t cgen_var_138 = (uint64_t)(uintptr_t)pPropertyCount;
1944 countingStream->putBe64(cgen_var_138);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001945 if (pPropertyCount)
1946 {
1947 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1948 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001949 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001950 uint64_t cgen_var_139 = (uint64_t)(uintptr_t)pProperties;
1951 countingStream->putBe64(cgen_var_139);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001952 if (pProperties)
1953 {
1954 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1955 {
1956 marshal_VkSparseImageFormatProperties(countingStream, (VkSparseImageFormatProperties*)(pProperties + i));
1957 }
1958 }
1959 }
1960 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1961 countingStream->rewind();
1962 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties = OP_vkGetPhysicalDeviceSparseImageFormatProperties;
1963 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
1964 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001965 uint64_t cgen_var_140;
1966 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_140, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001967 stream->write((uint64_t*)&cgen_var_140, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001968 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
1969 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
1970 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
1971 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
1972 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001973 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001974 uint64_t cgen_var_141 = (uint64_t)(uintptr_t)pPropertyCount;
1975 stream->putBe64(cgen_var_141);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001976 if (pPropertyCount)
1977 {
1978 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1979 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001980 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001981 uint64_t cgen_var_142 = (uint64_t)(uintptr_t)pProperties;
1982 stream->putBe64(cgen_var_142);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001983 if (pProperties)
1984 {
1985 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1986 {
1987 marshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
1988 }
1989 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001990 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001991 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001992 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001993 if (pPropertyCount)
1994 {
1995 if (!(check_pPropertyCount))
1996 {
1997 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1998 }
1999 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
2000 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002001 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002002 VkSparseImageFormatProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002003 check_pProperties = (VkSparseImageFormatProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002004 if (pProperties)
2005 {
2006 if (!(check_pProperties))
2007 {
2008 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
2009 }
2010 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2011 {
2012 unmarshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
2013 }
2014 }
2015}
2016
2017VkResult VkEncoder::vkQueueBindSparse(
2018 VkQueue queue,
2019 uint32_t bindInfoCount,
2020 const VkBindSparseInfo* pBindInfo,
2021 VkFence fence)
2022{
2023 auto stream = mImpl->stream();
2024 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002025 auto resources = mImpl->resources();
2026 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002027 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002028 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002029 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002030 VkBindSparseInfo* local_pBindInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002031 VkFence local_fence;
2032 local_queue = queue;
2033 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002034 local_pBindInfo = nullptr;
2035 if (pBindInfo)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002036 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002037 local_pBindInfo = (VkBindSparseInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindSparseInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002038 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2039 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002040 deepcopy_VkBindSparseInfo(pool, pBindInfo + i, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002041 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002042 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002043 local_fence = fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002044 countingStream->rewind();
2045 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002046 uint64_t cgen_var_145;
2047 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_145, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002048 countingStream->write((uint64_t*)&cgen_var_145, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002049 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
2050 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2051 {
2052 marshal_VkBindSparseInfo(countingStream, (VkBindSparseInfo*)(local_pBindInfo + i));
2053 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002054 uint64_t cgen_var_146;
2055 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_146, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002056 countingStream->write((uint64_t*)&cgen_var_146, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002057 }
2058 uint32_t packetSize_vkQueueBindSparse = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2059 countingStream->rewind();
2060 uint32_t opcode_vkQueueBindSparse = OP_vkQueueBindSparse;
2061 stream->write(&opcode_vkQueueBindSparse, sizeof(uint32_t));
2062 stream->write(&packetSize_vkQueueBindSparse, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002063 uint64_t cgen_var_147;
2064 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_147, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002065 stream->write((uint64_t*)&cgen_var_147, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002066 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002067 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2068 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002069 marshal_VkBindSparseInfo(stream, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002070 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002071 uint64_t cgen_var_148;
2072 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_148, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002073 stream->write((uint64_t*)&cgen_var_148, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002074 VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
2075 stream->read(&vkQueueBindSparse_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002076 countingStream->clearPool();
2077 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002078 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002079 return vkQueueBindSparse_VkResult_return;
2080}
2081
2082VkResult VkEncoder::vkCreateFence(
2083 VkDevice device,
2084 const VkFenceCreateInfo* pCreateInfo,
2085 const VkAllocationCallbacks* pAllocator,
2086 VkFence* pFence)
2087{
2088 auto stream = mImpl->stream();
2089 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002090 auto resources = mImpl->resources();
2091 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002092 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002093 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002094 VkFenceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002095 VkAllocationCallbacks* local_pAllocator;
2096 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002097 local_pCreateInfo = nullptr;
2098 if (pCreateInfo)
2099 {
2100 local_pCreateInfo = (VkFenceCreateInfo*)pool->alloc(sizeof(const VkFenceCreateInfo));
2101 deepcopy_VkFenceCreateInfo(pool, pCreateInfo, (VkFenceCreateInfo*)(local_pCreateInfo));
2102 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002103 local_pAllocator = nullptr;
2104 if (pAllocator)
2105 {
2106 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2107 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2108 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002109 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002110 countingStream->rewind();
2111 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002112 uint64_t cgen_var_149;
2113 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_149, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002114 countingStream->write((uint64_t*)&cgen_var_149, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002115 marshal_VkFenceCreateInfo(countingStream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002116 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002117 uint64_t cgen_var_150 = (uint64_t)(uintptr_t)local_pAllocator;
2118 countingStream->putBe64(cgen_var_150);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002119 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002120 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002121 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002122 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002123 uint64_t cgen_var_151;
2124 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_151, 1);
2125 countingStream->write((uint64_t*)&cgen_var_151, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002126 }
2127 uint32_t packetSize_vkCreateFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2128 countingStream->rewind();
2129 uint32_t opcode_vkCreateFence = OP_vkCreateFence;
2130 stream->write(&opcode_vkCreateFence, sizeof(uint32_t));
2131 stream->write(&packetSize_vkCreateFence, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002132 uint64_t cgen_var_152;
2133 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_152, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002134 stream->write((uint64_t*)&cgen_var_152, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002135 marshal_VkFenceCreateInfo(stream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002136 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002137 uint64_t cgen_var_153 = (uint64_t)(uintptr_t)local_pAllocator;
2138 stream->putBe64(cgen_var_153);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002139 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002140 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002141 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002142 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002143 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002144 uint64_t cgen_var_154;
2145 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_154, 1);
2146 stream->write((uint64_t*)&cgen_var_154, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002147 stream->setHandleMapping(resources->unwrapMapping());
2148 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002149 uint64_t cgen_var_155;
2150 stream->read((uint64_t*)&cgen_var_155, 8);
2151 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_155, (VkFence*)pFence, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002152 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002153 VkResult vkCreateFence_VkResult_return = (VkResult)0;
2154 stream->read(&vkCreateFence_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002155 countingStream->clearPool();
2156 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002157 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002158 return vkCreateFence_VkResult_return;
2159}
2160
2161void VkEncoder::vkDestroyFence(
2162 VkDevice device,
2163 VkFence fence,
2164 const VkAllocationCallbacks* pAllocator)
2165{
2166 auto stream = mImpl->stream();
2167 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002168 auto resources = mImpl->resources();
2169 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002170 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002171 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002172 VkFence local_fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002173 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002174 local_device = device;
2175 local_fence = fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002176 local_pAllocator = nullptr;
2177 if (pAllocator)
2178 {
2179 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2180 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2181 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002182 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002183 countingStream->rewind();
2184 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002185 uint64_t cgen_var_156;
2186 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_156, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002187 countingStream->write((uint64_t*)&cgen_var_156, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002188 uint64_t cgen_var_157;
2189 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_157, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002190 countingStream->write((uint64_t*)&cgen_var_157, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002191 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002192 uint64_t cgen_var_158 = (uint64_t)(uintptr_t)local_pAllocator;
2193 countingStream->putBe64(cgen_var_158);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002194 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002195 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002196 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002197 }
2198 }
2199 uint32_t packetSize_vkDestroyFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2200 countingStream->rewind();
2201 uint32_t opcode_vkDestroyFence = OP_vkDestroyFence;
2202 stream->write(&opcode_vkDestroyFence, sizeof(uint32_t));
2203 stream->write(&packetSize_vkDestroyFence, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002204 uint64_t cgen_var_159;
2205 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_159, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002206 stream->write((uint64_t*)&cgen_var_159, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002207 uint64_t cgen_var_160;
2208 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_160, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002209 stream->write((uint64_t*)&cgen_var_160, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002210 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002211 uint64_t cgen_var_161 = (uint64_t)(uintptr_t)local_pAllocator;
2212 stream->putBe64(cgen_var_161);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002213 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002214 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002215 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002216 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002217 resources->destroyMapping()->mapHandles_VkFence((VkFence*)&fence);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002218}
2219
2220VkResult VkEncoder::vkResetFences(
2221 VkDevice device,
2222 uint32_t fenceCount,
2223 const VkFence* pFences)
2224{
2225 auto stream = mImpl->stream();
2226 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002227 auto resources = mImpl->resources();
2228 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002229 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002230 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002231 uint32_t local_fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002232 VkFence* local_pFences;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002233 local_device = device;
2234 local_fenceCount = fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002235 local_pFences = nullptr;
2236 if (pFences)
2237 {
2238 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2239 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002240 countingStream->rewind();
2241 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002242 uint64_t cgen_var_162;
2243 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_162, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002244 countingStream->write((uint64_t*)&cgen_var_162, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002245 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002246 if (((fenceCount)))
2247 {
2248 uint64_t* cgen_var_163;
2249 countingStream->alloc((void**)&cgen_var_163, ((fenceCount)) * 8);
2250 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_163, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002251 countingStream->write((uint64_t*)cgen_var_163, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002252 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002253 }
2254 uint32_t packetSize_vkResetFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2255 countingStream->rewind();
2256 uint32_t opcode_vkResetFences = OP_vkResetFences;
2257 stream->write(&opcode_vkResetFences, sizeof(uint32_t));
2258 stream->write(&packetSize_vkResetFences, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002259 uint64_t cgen_var_164;
2260 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_164, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002261 stream->write((uint64_t*)&cgen_var_164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002262 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002263 if (((fenceCount)))
2264 {
2265 uint64_t* cgen_var_165;
2266 stream->alloc((void**)&cgen_var_165, ((fenceCount)) * 8);
2267 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_165, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002268 stream->write((uint64_t*)cgen_var_165, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002269 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002270 VkResult vkResetFences_VkResult_return = (VkResult)0;
2271 stream->read(&vkResetFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002272 countingStream->clearPool();
2273 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002274 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002275 return vkResetFences_VkResult_return;
2276}
2277
2278VkResult VkEncoder::vkGetFenceStatus(
2279 VkDevice device,
2280 VkFence fence)
2281{
2282 auto stream = mImpl->stream();
2283 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002284 auto resources = mImpl->resources();
2285 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002286 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002287 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002288 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002289 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002290 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002291 countingStream->rewind();
2292 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002293 uint64_t cgen_var_166;
2294 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_166, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002295 countingStream->write((uint64_t*)&cgen_var_166, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002296 uint64_t cgen_var_167;
2297 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_167, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002298 countingStream->write((uint64_t*)&cgen_var_167, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002299 }
2300 uint32_t packetSize_vkGetFenceStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2301 countingStream->rewind();
2302 uint32_t opcode_vkGetFenceStatus = OP_vkGetFenceStatus;
2303 stream->write(&opcode_vkGetFenceStatus, sizeof(uint32_t));
2304 stream->write(&packetSize_vkGetFenceStatus, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002305 uint64_t cgen_var_168;
2306 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_168, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002307 stream->write((uint64_t*)&cgen_var_168, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002308 uint64_t cgen_var_169;
2309 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_169, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002310 stream->write((uint64_t*)&cgen_var_169, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002311 VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
2312 stream->read(&vkGetFenceStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002313 countingStream->clearPool();
2314 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002315 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002316 return vkGetFenceStatus_VkResult_return;
2317}
2318
2319VkResult VkEncoder::vkWaitForFences(
2320 VkDevice device,
2321 uint32_t fenceCount,
2322 const VkFence* pFences,
2323 VkBool32 waitAll,
2324 uint64_t timeout)
2325{
2326 auto stream = mImpl->stream();
2327 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002328 auto resources = mImpl->resources();
2329 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002330 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002331 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002332 uint32_t local_fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002333 VkFence* local_pFences;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002334 VkBool32 local_waitAll;
2335 uint64_t local_timeout;
2336 local_device = device;
2337 local_fenceCount = fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002338 local_pFences = nullptr;
2339 if (pFences)
2340 {
2341 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2342 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002343 local_waitAll = waitAll;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002344 local_timeout = timeout;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002345 countingStream->rewind();
2346 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002347 uint64_t cgen_var_170;
2348 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_170, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002349 countingStream->write((uint64_t*)&cgen_var_170, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002350 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002351 if (((fenceCount)))
2352 {
2353 uint64_t* cgen_var_171;
2354 countingStream->alloc((void**)&cgen_var_171, ((fenceCount)) * 8);
2355 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_171, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002356 countingStream->write((uint64_t*)cgen_var_171, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002357 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002358 countingStream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2359 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002360 }
2361 uint32_t packetSize_vkWaitForFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2362 countingStream->rewind();
2363 uint32_t opcode_vkWaitForFences = OP_vkWaitForFences;
2364 stream->write(&opcode_vkWaitForFences, sizeof(uint32_t));
2365 stream->write(&packetSize_vkWaitForFences, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002366 uint64_t cgen_var_172;
2367 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_172, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002368 stream->write((uint64_t*)&cgen_var_172, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002369 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002370 if (((fenceCount)))
2371 {
2372 uint64_t* cgen_var_173;
2373 stream->alloc((void**)&cgen_var_173, ((fenceCount)) * 8);
2374 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_173, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002375 stream->write((uint64_t*)cgen_var_173, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002376 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002377 stream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2378 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002379 VkResult vkWaitForFences_VkResult_return = (VkResult)0;
2380 stream->read(&vkWaitForFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002381 countingStream->clearPool();
2382 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002383 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002384 return vkWaitForFences_VkResult_return;
2385}
2386
2387VkResult VkEncoder::vkCreateSemaphore(
2388 VkDevice device,
2389 const VkSemaphoreCreateInfo* pCreateInfo,
2390 const VkAllocationCallbacks* pAllocator,
2391 VkSemaphore* pSemaphore)
2392{
2393 auto stream = mImpl->stream();
2394 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002395 auto resources = mImpl->resources();
2396 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002397 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002398 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002399 VkSemaphoreCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002400 VkAllocationCallbacks* local_pAllocator;
2401 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002402 local_pCreateInfo = nullptr;
2403 if (pCreateInfo)
2404 {
2405 local_pCreateInfo = (VkSemaphoreCreateInfo*)pool->alloc(sizeof(const VkSemaphoreCreateInfo));
2406 deepcopy_VkSemaphoreCreateInfo(pool, pCreateInfo, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
2407 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002408 local_pAllocator = nullptr;
2409 if (pAllocator)
2410 {
2411 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2412 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2413 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002414 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002415 countingStream->rewind();
2416 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002417 uint64_t cgen_var_174;
2418 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_174, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002419 countingStream->write((uint64_t*)&cgen_var_174, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002420 marshal_VkSemaphoreCreateInfo(countingStream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002421 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002422 uint64_t cgen_var_175 = (uint64_t)(uintptr_t)local_pAllocator;
2423 countingStream->putBe64(cgen_var_175);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002424 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002425 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002426 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002427 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002428 uint64_t cgen_var_176;
2429 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_176, 1);
2430 countingStream->write((uint64_t*)&cgen_var_176, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002431 }
2432 uint32_t packetSize_vkCreateSemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2433 countingStream->rewind();
2434 uint32_t opcode_vkCreateSemaphore = OP_vkCreateSemaphore;
2435 stream->write(&opcode_vkCreateSemaphore, sizeof(uint32_t));
2436 stream->write(&packetSize_vkCreateSemaphore, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002437 uint64_t cgen_var_177;
2438 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_177, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002439 stream->write((uint64_t*)&cgen_var_177, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002440 marshal_VkSemaphoreCreateInfo(stream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002441 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002442 uint64_t cgen_var_178 = (uint64_t)(uintptr_t)local_pAllocator;
2443 stream->putBe64(cgen_var_178);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002444 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002445 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002446 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002447 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002448 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002449 uint64_t cgen_var_179;
2450 stream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_179, 1);
2451 stream->write((uint64_t*)&cgen_var_179, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002452 stream->setHandleMapping(resources->unwrapMapping());
2453 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002454 uint64_t cgen_var_180;
2455 stream->read((uint64_t*)&cgen_var_180, 8);
2456 stream->handleMapping()->mapHandles_u64_VkSemaphore(&cgen_var_180, (VkSemaphore*)pSemaphore, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002457 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002458 VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
2459 stream->read(&vkCreateSemaphore_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002460 countingStream->clearPool();
2461 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002462 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002463 return vkCreateSemaphore_VkResult_return;
2464}
2465
2466void VkEncoder::vkDestroySemaphore(
2467 VkDevice device,
2468 VkSemaphore semaphore,
2469 const VkAllocationCallbacks* pAllocator)
2470{
2471 auto stream = mImpl->stream();
2472 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002473 auto resources = mImpl->resources();
2474 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002475 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002476 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002477 VkSemaphore local_semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002478 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002479 local_device = device;
2480 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002481 local_pAllocator = nullptr;
2482 if (pAllocator)
2483 {
2484 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2485 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2486 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002487 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002488 countingStream->rewind();
2489 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002490 uint64_t cgen_var_181;
2491 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_181, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002492 countingStream->write((uint64_t*)&cgen_var_181, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002493 uint64_t cgen_var_182;
2494 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_182, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002495 countingStream->write((uint64_t*)&cgen_var_182, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002496 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002497 uint64_t cgen_var_183 = (uint64_t)(uintptr_t)local_pAllocator;
2498 countingStream->putBe64(cgen_var_183);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002499 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002500 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002501 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002502 }
2503 }
2504 uint32_t packetSize_vkDestroySemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2505 countingStream->rewind();
2506 uint32_t opcode_vkDestroySemaphore = OP_vkDestroySemaphore;
2507 stream->write(&opcode_vkDestroySemaphore, sizeof(uint32_t));
2508 stream->write(&packetSize_vkDestroySemaphore, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002509 uint64_t cgen_var_184;
2510 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_184, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002511 stream->write((uint64_t*)&cgen_var_184, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002512 uint64_t cgen_var_185;
2513 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_185, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002514 stream->write((uint64_t*)&cgen_var_185, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002515 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002516 uint64_t cgen_var_186 = (uint64_t)(uintptr_t)local_pAllocator;
2517 stream->putBe64(cgen_var_186);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002518 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002519 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002520 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002521 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002522 resources->destroyMapping()->mapHandles_VkSemaphore((VkSemaphore*)&semaphore);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002523}
2524
2525VkResult VkEncoder::vkCreateEvent(
2526 VkDevice device,
2527 const VkEventCreateInfo* pCreateInfo,
2528 const VkAllocationCallbacks* pAllocator,
2529 VkEvent* pEvent)
2530{
2531 auto stream = mImpl->stream();
2532 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002533 auto resources = mImpl->resources();
2534 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002535 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002536 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002537 VkEventCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002538 VkAllocationCallbacks* local_pAllocator;
2539 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002540 local_pCreateInfo = nullptr;
2541 if (pCreateInfo)
2542 {
2543 local_pCreateInfo = (VkEventCreateInfo*)pool->alloc(sizeof(const VkEventCreateInfo));
2544 deepcopy_VkEventCreateInfo(pool, pCreateInfo, (VkEventCreateInfo*)(local_pCreateInfo));
2545 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002546 local_pAllocator = nullptr;
2547 if (pAllocator)
2548 {
2549 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2550 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2551 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002552 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002553 countingStream->rewind();
2554 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002555 uint64_t cgen_var_187;
2556 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_187, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002557 countingStream->write((uint64_t*)&cgen_var_187, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002558 marshal_VkEventCreateInfo(countingStream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002559 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002560 uint64_t cgen_var_188 = (uint64_t)(uintptr_t)local_pAllocator;
2561 countingStream->putBe64(cgen_var_188);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002562 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002563 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002564 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002565 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002566 uint64_t cgen_var_189;
2567 countingStream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_189, 1);
2568 countingStream->write((uint64_t*)&cgen_var_189, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002569 }
2570 uint32_t packetSize_vkCreateEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2571 countingStream->rewind();
2572 uint32_t opcode_vkCreateEvent = OP_vkCreateEvent;
2573 stream->write(&opcode_vkCreateEvent, sizeof(uint32_t));
2574 stream->write(&packetSize_vkCreateEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002575 uint64_t cgen_var_190;
2576 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_190, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002577 stream->write((uint64_t*)&cgen_var_190, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002578 marshal_VkEventCreateInfo(stream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002579 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002580 uint64_t cgen_var_191 = (uint64_t)(uintptr_t)local_pAllocator;
2581 stream->putBe64(cgen_var_191);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002582 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002583 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002584 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002585 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002586 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002587 uint64_t cgen_var_192;
2588 stream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_192, 1);
2589 stream->write((uint64_t*)&cgen_var_192, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002590 stream->setHandleMapping(resources->unwrapMapping());
2591 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002592 uint64_t cgen_var_193;
2593 stream->read((uint64_t*)&cgen_var_193, 8);
2594 stream->handleMapping()->mapHandles_u64_VkEvent(&cgen_var_193, (VkEvent*)pEvent, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002595 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002596 VkResult vkCreateEvent_VkResult_return = (VkResult)0;
2597 stream->read(&vkCreateEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002598 countingStream->clearPool();
2599 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002600 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002601 return vkCreateEvent_VkResult_return;
2602}
2603
2604void VkEncoder::vkDestroyEvent(
2605 VkDevice device,
2606 VkEvent event,
2607 const VkAllocationCallbacks* pAllocator)
2608{
2609 auto stream = mImpl->stream();
2610 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002611 auto resources = mImpl->resources();
2612 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002613 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002614 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002615 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002616 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002617 local_device = device;
2618 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002619 local_pAllocator = nullptr;
2620 if (pAllocator)
2621 {
2622 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2623 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2624 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002625 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002626 countingStream->rewind();
2627 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002628 uint64_t cgen_var_194;
2629 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_194, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002630 countingStream->write((uint64_t*)&cgen_var_194, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002631 uint64_t cgen_var_195;
2632 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_195, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002633 countingStream->write((uint64_t*)&cgen_var_195, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002634 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002635 uint64_t cgen_var_196 = (uint64_t)(uintptr_t)local_pAllocator;
2636 countingStream->putBe64(cgen_var_196);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002637 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002638 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002639 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002640 }
2641 }
2642 uint32_t packetSize_vkDestroyEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2643 countingStream->rewind();
2644 uint32_t opcode_vkDestroyEvent = OP_vkDestroyEvent;
2645 stream->write(&opcode_vkDestroyEvent, sizeof(uint32_t));
2646 stream->write(&packetSize_vkDestroyEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002647 uint64_t cgen_var_197;
2648 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_197, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002649 stream->write((uint64_t*)&cgen_var_197, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002650 uint64_t cgen_var_198;
2651 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_198, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002652 stream->write((uint64_t*)&cgen_var_198, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002653 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002654 uint64_t cgen_var_199 = (uint64_t)(uintptr_t)local_pAllocator;
2655 stream->putBe64(cgen_var_199);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002656 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002657 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002658 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002659 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002660 resources->destroyMapping()->mapHandles_VkEvent((VkEvent*)&event);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002661}
2662
2663VkResult VkEncoder::vkGetEventStatus(
2664 VkDevice device,
2665 VkEvent event)
2666{
2667 auto stream = mImpl->stream();
2668 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002669 auto resources = mImpl->resources();
2670 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002671 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002672 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002673 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002674 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002675 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002676 countingStream->rewind();
2677 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002678 uint64_t cgen_var_200;
2679 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_200, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002680 countingStream->write((uint64_t*)&cgen_var_200, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002681 uint64_t cgen_var_201;
2682 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_201, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002683 countingStream->write((uint64_t*)&cgen_var_201, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002684 }
2685 uint32_t packetSize_vkGetEventStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2686 countingStream->rewind();
2687 uint32_t opcode_vkGetEventStatus = OP_vkGetEventStatus;
2688 stream->write(&opcode_vkGetEventStatus, sizeof(uint32_t));
2689 stream->write(&packetSize_vkGetEventStatus, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002690 uint64_t cgen_var_202;
2691 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_202, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002692 stream->write((uint64_t*)&cgen_var_202, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002693 uint64_t cgen_var_203;
2694 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_203, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002695 stream->write((uint64_t*)&cgen_var_203, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002696 VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
2697 stream->read(&vkGetEventStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002698 countingStream->clearPool();
2699 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002700 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002701 return vkGetEventStatus_VkResult_return;
2702}
2703
2704VkResult VkEncoder::vkSetEvent(
2705 VkDevice device,
2706 VkEvent event)
2707{
2708 auto stream = mImpl->stream();
2709 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002710 auto resources = mImpl->resources();
2711 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002712 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002713 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002714 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002715 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002716 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002717 countingStream->rewind();
2718 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002719 uint64_t cgen_var_204;
2720 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_204, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002721 countingStream->write((uint64_t*)&cgen_var_204, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002722 uint64_t cgen_var_205;
2723 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_205, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002724 countingStream->write((uint64_t*)&cgen_var_205, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002725 }
2726 uint32_t packetSize_vkSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2727 countingStream->rewind();
2728 uint32_t opcode_vkSetEvent = OP_vkSetEvent;
2729 stream->write(&opcode_vkSetEvent, sizeof(uint32_t));
2730 stream->write(&packetSize_vkSetEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002731 uint64_t cgen_var_206;
2732 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_206, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002733 stream->write((uint64_t*)&cgen_var_206, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002734 uint64_t cgen_var_207;
2735 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_207, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002736 stream->write((uint64_t*)&cgen_var_207, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002737 VkResult vkSetEvent_VkResult_return = (VkResult)0;
2738 stream->read(&vkSetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002739 countingStream->clearPool();
2740 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002741 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002742 return vkSetEvent_VkResult_return;
2743}
2744
2745VkResult VkEncoder::vkResetEvent(
2746 VkDevice device,
2747 VkEvent event)
2748{
2749 auto stream = mImpl->stream();
2750 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002751 auto resources = mImpl->resources();
2752 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002753 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002754 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002755 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002756 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002757 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002758 countingStream->rewind();
2759 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002760 uint64_t cgen_var_208;
2761 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_208, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002762 countingStream->write((uint64_t*)&cgen_var_208, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002763 uint64_t cgen_var_209;
2764 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_209, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002765 countingStream->write((uint64_t*)&cgen_var_209, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002766 }
2767 uint32_t packetSize_vkResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2768 countingStream->rewind();
2769 uint32_t opcode_vkResetEvent = OP_vkResetEvent;
2770 stream->write(&opcode_vkResetEvent, sizeof(uint32_t));
2771 stream->write(&packetSize_vkResetEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002772 uint64_t cgen_var_210;
2773 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_210, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002774 stream->write((uint64_t*)&cgen_var_210, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002775 uint64_t cgen_var_211;
2776 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_211, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002777 stream->write((uint64_t*)&cgen_var_211, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002778 VkResult vkResetEvent_VkResult_return = (VkResult)0;
2779 stream->read(&vkResetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002780 countingStream->clearPool();
2781 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002782 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002783 return vkResetEvent_VkResult_return;
2784}
2785
2786VkResult VkEncoder::vkCreateQueryPool(
2787 VkDevice device,
2788 const VkQueryPoolCreateInfo* pCreateInfo,
2789 const VkAllocationCallbacks* pAllocator,
2790 VkQueryPool* pQueryPool)
2791{
2792 auto stream = mImpl->stream();
2793 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002794 auto resources = mImpl->resources();
2795 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002796 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002797 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002798 VkQueryPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002799 VkAllocationCallbacks* local_pAllocator;
2800 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002801 local_pCreateInfo = nullptr;
2802 if (pCreateInfo)
2803 {
2804 local_pCreateInfo = (VkQueryPoolCreateInfo*)pool->alloc(sizeof(const VkQueryPoolCreateInfo));
2805 deepcopy_VkQueryPoolCreateInfo(pool, pCreateInfo, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
2806 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002807 local_pAllocator = nullptr;
2808 if (pAllocator)
2809 {
2810 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2811 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2812 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002813 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002814 countingStream->rewind();
2815 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002816 uint64_t cgen_var_212;
2817 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_212, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002818 countingStream->write((uint64_t*)&cgen_var_212, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002819 marshal_VkQueryPoolCreateInfo(countingStream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002820 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002821 uint64_t cgen_var_213 = (uint64_t)(uintptr_t)local_pAllocator;
2822 countingStream->putBe64(cgen_var_213);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002823 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002824 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002825 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002826 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002827 uint64_t cgen_var_214;
2828 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_214, 1);
2829 countingStream->write((uint64_t*)&cgen_var_214, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002830 }
2831 uint32_t packetSize_vkCreateQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2832 countingStream->rewind();
2833 uint32_t opcode_vkCreateQueryPool = OP_vkCreateQueryPool;
2834 stream->write(&opcode_vkCreateQueryPool, sizeof(uint32_t));
2835 stream->write(&packetSize_vkCreateQueryPool, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002836 uint64_t cgen_var_215;
2837 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_215, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002838 stream->write((uint64_t*)&cgen_var_215, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002839 marshal_VkQueryPoolCreateInfo(stream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002840 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002841 uint64_t cgen_var_216 = (uint64_t)(uintptr_t)local_pAllocator;
2842 stream->putBe64(cgen_var_216);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002843 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002844 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002845 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002846 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002847 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002848 uint64_t cgen_var_217;
2849 stream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_217, 1);
2850 stream->write((uint64_t*)&cgen_var_217, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002851 stream->setHandleMapping(resources->unwrapMapping());
2852 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002853 uint64_t cgen_var_218;
2854 stream->read((uint64_t*)&cgen_var_218, 8);
2855 stream->handleMapping()->mapHandles_u64_VkQueryPool(&cgen_var_218, (VkQueryPool*)pQueryPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002856 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002857 VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
2858 stream->read(&vkCreateQueryPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002859 countingStream->clearPool();
2860 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002861 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002862 return vkCreateQueryPool_VkResult_return;
2863}
2864
2865void VkEncoder::vkDestroyQueryPool(
2866 VkDevice device,
2867 VkQueryPool queryPool,
2868 const VkAllocationCallbacks* pAllocator)
2869{
2870 auto stream = mImpl->stream();
2871 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002872 auto resources = mImpl->resources();
2873 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002874 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002875 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002876 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002877 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002878 local_device = device;
2879 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002880 local_pAllocator = nullptr;
2881 if (pAllocator)
2882 {
2883 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2884 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2885 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002886 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002887 countingStream->rewind();
2888 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002889 uint64_t cgen_var_219;
2890 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_219, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002891 countingStream->write((uint64_t*)&cgen_var_219, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002892 uint64_t cgen_var_220;
2893 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_220, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002894 countingStream->write((uint64_t*)&cgen_var_220, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002895 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002896 uint64_t cgen_var_221 = (uint64_t)(uintptr_t)local_pAllocator;
2897 countingStream->putBe64(cgen_var_221);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002898 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002899 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002900 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002901 }
2902 }
2903 uint32_t packetSize_vkDestroyQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2904 countingStream->rewind();
2905 uint32_t opcode_vkDestroyQueryPool = OP_vkDestroyQueryPool;
2906 stream->write(&opcode_vkDestroyQueryPool, sizeof(uint32_t));
2907 stream->write(&packetSize_vkDestroyQueryPool, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002908 uint64_t cgen_var_222;
2909 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_222, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002910 stream->write((uint64_t*)&cgen_var_222, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002911 uint64_t cgen_var_223;
2912 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_223, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002913 stream->write((uint64_t*)&cgen_var_223, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002914 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002915 uint64_t cgen_var_224 = (uint64_t)(uintptr_t)local_pAllocator;
2916 stream->putBe64(cgen_var_224);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002917 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002918 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002919 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002920 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002921 resources->destroyMapping()->mapHandles_VkQueryPool((VkQueryPool*)&queryPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002922}
2923
2924VkResult VkEncoder::vkGetQueryPoolResults(
2925 VkDevice device,
2926 VkQueryPool queryPool,
2927 uint32_t firstQuery,
2928 uint32_t queryCount,
2929 size_t dataSize,
2930 void* pData,
2931 VkDeviceSize stride,
2932 VkQueryResultFlags flags)
2933{
2934 auto stream = mImpl->stream();
2935 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002936 auto resources = mImpl->resources();
2937 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002938 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002939 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002940 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002941 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002942 uint32_t local_queryCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002943 size_t local_dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002944 VkDeviceSize local_stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002945 VkQueryResultFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002946 local_device = device;
2947 local_queryPool = queryPool;
2948 local_firstQuery = firstQuery;
2949 local_queryCount = queryCount;
2950 local_dataSize = dataSize;
2951 local_stride = stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002952 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002953 countingStream->rewind();
2954 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002955 uint64_t cgen_var_225;
2956 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_225, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002957 countingStream->write((uint64_t*)&cgen_var_225, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002958 uint64_t cgen_var_226;
2959 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_226, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002960 countingStream->write((uint64_t*)&cgen_var_226, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002961 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
2962 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08002963 uint64_t cgen_var_227 = (uint64_t)local_dataSize;
2964 countingStream->putBe64(cgen_var_227);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002965 countingStream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002966 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
2967 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002968 }
2969 uint32_t packetSize_vkGetQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2970 countingStream->rewind();
2971 uint32_t opcode_vkGetQueryPoolResults = OP_vkGetQueryPoolResults;
2972 stream->write(&opcode_vkGetQueryPoolResults, sizeof(uint32_t));
2973 stream->write(&packetSize_vkGetQueryPoolResults, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002974 uint64_t cgen_var_228;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08002975 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_228, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002976 stream->write((uint64_t*)&cgen_var_228, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08002977 uint64_t cgen_var_229;
2978 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_229, 1);
2979 stream->write((uint64_t*)&cgen_var_229, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002980 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
2981 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08002982 uint64_t cgen_var_230 = (uint64_t)local_dataSize;
2983 stream->putBe64(cgen_var_230);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002984 stream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002985 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
2986 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002987 stream->read((void*)pData, ((dataSize)) * sizeof(uint8_t));
2988 VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
2989 stream->read(&vkGetQueryPoolResults_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002990 countingStream->clearPool();
2991 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002992 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002993 return vkGetQueryPoolResults_VkResult_return;
2994}
2995
2996VkResult VkEncoder::vkCreateBuffer(
2997 VkDevice device,
2998 const VkBufferCreateInfo* pCreateInfo,
2999 const VkAllocationCallbacks* pAllocator,
3000 VkBuffer* pBuffer)
3001{
3002 auto stream = mImpl->stream();
3003 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003004 auto resources = mImpl->resources();
3005 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003006 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003007 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003008 VkBufferCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003009 VkAllocationCallbacks* local_pAllocator;
3010 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003011 local_pCreateInfo = nullptr;
3012 if (pCreateInfo)
3013 {
3014 local_pCreateInfo = (VkBufferCreateInfo*)pool->alloc(sizeof(const VkBufferCreateInfo));
3015 deepcopy_VkBufferCreateInfo(pool, pCreateInfo, (VkBufferCreateInfo*)(local_pCreateInfo));
3016 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003017 local_pAllocator = nullptr;
3018 if (pAllocator)
3019 {
3020 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3021 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3022 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003023 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003024 countingStream->rewind();
3025 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003026 uint64_t cgen_var_231;
3027 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_231, 1);
3028 countingStream->write((uint64_t*)&cgen_var_231, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003029 marshal_VkBufferCreateInfo(countingStream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003030 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003031 uint64_t cgen_var_232 = (uint64_t)(uintptr_t)local_pAllocator;
3032 countingStream->putBe64(cgen_var_232);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003033 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003034 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003035 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003036 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003037 uint64_t cgen_var_233;
3038 countingStream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_233, 1);
3039 countingStream->write((uint64_t*)&cgen_var_233, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003040 }
3041 uint32_t packetSize_vkCreateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3042 countingStream->rewind();
3043 uint32_t opcode_vkCreateBuffer = OP_vkCreateBuffer;
3044 stream->write(&opcode_vkCreateBuffer, sizeof(uint32_t));
3045 stream->write(&packetSize_vkCreateBuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003046 uint64_t cgen_var_234;
3047 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_234, 1);
3048 stream->write((uint64_t*)&cgen_var_234, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003049 marshal_VkBufferCreateInfo(stream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003050 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003051 uint64_t cgen_var_235 = (uint64_t)(uintptr_t)local_pAllocator;
3052 stream->putBe64(cgen_var_235);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003053 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003054 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003055 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003056 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003057 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003058 uint64_t cgen_var_236;
3059 stream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_236, 1);
3060 stream->write((uint64_t*)&cgen_var_236, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003061 stream->setHandleMapping(resources->unwrapMapping());
3062 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003063 uint64_t cgen_var_237;
3064 stream->read((uint64_t*)&cgen_var_237, 8);
3065 stream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_237, (VkBuffer*)pBuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003066 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003067 VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
3068 stream->read(&vkCreateBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003069 countingStream->clearPool();
3070 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003071 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003072 return vkCreateBuffer_VkResult_return;
3073}
3074
3075void VkEncoder::vkDestroyBuffer(
3076 VkDevice device,
3077 VkBuffer buffer,
3078 const VkAllocationCallbacks* pAllocator)
3079{
3080 auto stream = mImpl->stream();
3081 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003082 auto resources = mImpl->resources();
3083 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003084 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003085 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003086 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003087 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003088 local_device = device;
3089 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003090 local_pAllocator = nullptr;
3091 if (pAllocator)
3092 {
3093 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3094 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3095 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003096 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003097 countingStream->rewind();
3098 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003099 uint64_t cgen_var_238;
3100 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_238, 1);
3101 countingStream->write((uint64_t*)&cgen_var_238, 1 * 8);
3102 uint64_t cgen_var_239;
3103 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_239, 1);
3104 countingStream->write((uint64_t*)&cgen_var_239, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003105 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003106 uint64_t cgen_var_240 = (uint64_t)(uintptr_t)local_pAllocator;
3107 countingStream->putBe64(cgen_var_240);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003108 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003109 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003110 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003111 }
3112 }
3113 uint32_t packetSize_vkDestroyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3114 countingStream->rewind();
3115 uint32_t opcode_vkDestroyBuffer = OP_vkDestroyBuffer;
3116 stream->write(&opcode_vkDestroyBuffer, sizeof(uint32_t));
3117 stream->write(&packetSize_vkDestroyBuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003118 uint64_t cgen_var_241;
3119 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_241, 1);
3120 stream->write((uint64_t*)&cgen_var_241, 1 * 8);
3121 uint64_t cgen_var_242;
3122 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_242, 1);
3123 stream->write((uint64_t*)&cgen_var_242, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003124 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003125 uint64_t cgen_var_243 = (uint64_t)(uintptr_t)local_pAllocator;
3126 stream->putBe64(cgen_var_243);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003127 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003128 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003129 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003130 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003131 resources->destroyMapping()->mapHandles_VkBuffer((VkBuffer*)&buffer);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003132}
3133
3134VkResult VkEncoder::vkCreateBufferView(
3135 VkDevice device,
3136 const VkBufferViewCreateInfo* pCreateInfo,
3137 const VkAllocationCallbacks* pAllocator,
3138 VkBufferView* pView)
3139{
3140 auto stream = mImpl->stream();
3141 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003142 auto resources = mImpl->resources();
3143 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003144 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003145 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003146 VkBufferViewCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003147 VkAllocationCallbacks* local_pAllocator;
3148 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003149 local_pCreateInfo = nullptr;
3150 if (pCreateInfo)
3151 {
3152 local_pCreateInfo = (VkBufferViewCreateInfo*)pool->alloc(sizeof(const VkBufferViewCreateInfo));
3153 deepcopy_VkBufferViewCreateInfo(pool, pCreateInfo, (VkBufferViewCreateInfo*)(local_pCreateInfo));
3154 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003155 local_pAllocator = nullptr;
3156 if (pAllocator)
3157 {
3158 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3159 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3160 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003161 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003162 countingStream->rewind();
3163 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003164 uint64_t cgen_var_244;
3165 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_244, 1);
3166 countingStream->write((uint64_t*)&cgen_var_244, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003167 marshal_VkBufferViewCreateInfo(countingStream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003168 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003169 uint64_t cgen_var_245 = (uint64_t)(uintptr_t)local_pAllocator;
3170 countingStream->putBe64(cgen_var_245);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003171 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003172 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003173 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003174 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003175 uint64_t cgen_var_246;
3176 countingStream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_246, 1);
3177 countingStream->write((uint64_t*)&cgen_var_246, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003178 }
3179 uint32_t packetSize_vkCreateBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3180 countingStream->rewind();
3181 uint32_t opcode_vkCreateBufferView = OP_vkCreateBufferView;
3182 stream->write(&opcode_vkCreateBufferView, sizeof(uint32_t));
3183 stream->write(&packetSize_vkCreateBufferView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003184 uint64_t cgen_var_247;
3185 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_247, 1);
3186 stream->write((uint64_t*)&cgen_var_247, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003187 marshal_VkBufferViewCreateInfo(stream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003188 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003189 uint64_t cgen_var_248 = (uint64_t)(uintptr_t)local_pAllocator;
3190 stream->putBe64(cgen_var_248);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003191 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003192 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003193 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003194 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003195 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003196 uint64_t cgen_var_249;
3197 stream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_249, 1);
3198 stream->write((uint64_t*)&cgen_var_249, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003199 stream->setHandleMapping(resources->unwrapMapping());
3200 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003201 uint64_t cgen_var_250;
3202 stream->read((uint64_t*)&cgen_var_250, 8);
3203 stream->handleMapping()->mapHandles_u64_VkBufferView(&cgen_var_250, (VkBufferView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003204 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003205 VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
3206 stream->read(&vkCreateBufferView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003207 countingStream->clearPool();
3208 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003209 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003210 return vkCreateBufferView_VkResult_return;
3211}
3212
3213void VkEncoder::vkDestroyBufferView(
3214 VkDevice device,
3215 VkBufferView bufferView,
3216 const VkAllocationCallbacks* pAllocator)
3217{
3218 auto stream = mImpl->stream();
3219 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003220 auto resources = mImpl->resources();
3221 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003222 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003223 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003224 VkBufferView local_bufferView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003225 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003226 local_device = device;
3227 local_bufferView = bufferView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003228 local_pAllocator = nullptr;
3229 if (pAllocator)
3230 {
3231 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3232 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3233 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003234 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003235 countingStream->rewind();
3236 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003237 uint64_t cgen_var_251;
3238 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_251, 1);
3239 countingStream->write((uint64_t*)&cgen_var_251, 1 * 8);
3240 uint64_t cgen_var_252;
3241 countingStream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_252, 1);
3242 countingStream->write((uint64_t*)&cgen_var_252, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003243 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003244 uint64_t cgen_var_253 = (uint64_t)(uintptr_t)local_pAllocator;
3245 countingStream->putBe64(cgen_var_253);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003246 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003247 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003248 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003249 }
3250 }
3251 uint32_t packetSize_vkDestroyBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3252 countingStream->rewind();
3253 uint32_t opcode_vkDestroyBufferView = OP_vkDestroyBufferView;
3254 stream->write(&opcode_vkDestroyBufferView, sizeof(uint32_t));
3255 stream->write(&packetSize_vkDestroyBufferView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003256 uint64_t cgen_var_254;
3257 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_254, 1);
3258 stream->write((uint64_t*)&cgen_var_254, 1 * 8);
3259 uint64_t cgen_var_255;
3260 stream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_255, 1);
3261 stream->write((uint64_t*)&cgen_var_255, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003262 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003263 uint64_t cgen_var_256 = (uint64_t)(uintptr_t)local_pAllocator;
3264 stream->putBe64(cgen_var_256);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003265 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003266 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003267 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003268 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003269 resources->destroyMapping()->mapHandles_VkBufferView((VkBufferView*)&bufferView);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003270}
3271
3272VkResult VkEncoder::vkCreateImage(
3273 VkDevice device,
3274 const VkImageCreateInfo* pCreateInfo,
3275 const VkAllocationCallbacks* pAllocator,
3276 VkImage* pImage)
3277{
3278 auto stream = mImpl->stream();
3279 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003280 auto resources = mImpl->resources();
3281 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003282 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003283 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003284 VkImageCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003285 VkAllocationCallbacks* local_pAllocator;
3286 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003287 local_pCreateInfo = nullptr;
3288 if (pCreateInfo)
3289 {
3290 local_pCreateInfo = (VkImageCreateInfo*)pool->alloc(sizeof(const VkImageCreateInfo));
3291 deepcopy_VkImageCreateInfo(pool, pCreateInfo, (VkImageCreateInfo*)(local_pCreateInfo));
3292 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003293 local_pAllocator = nullptr;
3294 if (pAllocator)
3295 {
3296 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3297 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3298 }
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08003299 mImpl->resources()->unwrap_VkNativeBufferANDROID(pCreateInfo, local_pCreateInfo);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003300 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003301 countingStream->rewind();
3302 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003303 uint64_t cgen_var_257;
3304 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_257, 1);
3305 countingStream->write((uint64_t*)&cgen_var_257, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003306 marshal_VkImageCreateInfo(countingStream, (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003307 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003308 uint64_t cgen_var_258 = (uint64_t)(uintptr_t)local_pAllocator;
3309 countingStream->putBe64(cgen_var_258);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003310 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003311 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003312 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003313 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003314 uint64_t cgen_var_259;
3315 countingStream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_259, 1);
3316 countingStream->write((uint64_t*)&cgen_var_259, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003317 }
3318 uint32_t packetSize_vkCreateImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3319 countingStream->rewind();
3320 uint32_t opcode_vkCreateImage = OP_vkCreateImage;
3321 stream->write(&opcode_vkCreateImage, sizeof(uint32_t));
3322 stream->write(&packetSize_vkCreateImage, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003323 uint64_t cgen_var_260;
3324 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_260, 1);
3325 stream->write((uint64_t*)&cgen_var_260, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003326 marshal_VkImageCreateInfo(stream, (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003327 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003328 uint64_t cgen_var_261 = (uint64_t)(uintptr_t)local_pAllocator;
3329 stream->putBe64(cgen_var_261);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003330 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003331 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003332 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003333 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003334 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003335 uint64_t cgen_var_262;
3336 stream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_262, 1);
3337 stream->write((uint64_t*)&cgen_var_262, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003338 stream->setHandleMapping(resources->unwrapMapping());
3339 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003340 uint64_t cgen_var_263;
3341 stream->read((uint64_t*)&cgen_var_263, 8);
3342 stream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_263, (VkImage*)pImage, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003343 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003344 VkResult vkCreateImage_VkResult_return = (VkResult)0;
3345 stream->read(&vkCreateImage_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003346 countingStream->clearPool();
3347 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003348 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003349 return vkCreateImage_VkResult_return;
3350}
3351
3352void VkEncoder::vkDestroyImage(
3353 VkDevice device,
3354 VkImage image,
3355 const VkAllocationCallbacks* pAllocator)
3356{
3357 auto stream = mImpl->stream();
3358 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003359 auto resources = mImpl->resources();
3360 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003361 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003362 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003363 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003364 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003365 local_device = device;
3366 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003367 local_pAllocator = nullptr;
3368 if (pAllocator)
3369 {
3370 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3371 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3372 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003373 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003374 countingStream->rewind();
3375 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003376 uint64_t cgen_var_264;
3377 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_264, 1);
3378 countingStream->write((uint64_t*)&cgen_var_264, 1 * 8);
3379 uint64_t cgen_var_265;
3380 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_265, 1);
3381 countingStream->write((uint64_t*)&cgen_var_265, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003382 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003383 uint64_t cgen_var_266 = (uint64_t)(uintptr_t)local_pAllocator;
3384 countingStream->putBe64(cgen_var_266);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003385 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003386 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003387 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003388 }
3389 }
3390 uint32_t packetSize_vkDestroyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3391 countingStream->rewind();
3392 uint32_t opcode_vkDestroyImage = OP_vkDestroyImage;
3393 stream->write(&opcode_vkDestroyImage, sizeof(uint32_t));
3394 stream->write(&packetSize_vkDestroyImage, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003395 uint64_t cgen_var_267;
3396 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_267, 1);
3397 stream->write((uint64_t*)&cgen_var_267, 1 * 8);
3398 uint64_t cgen_var_268;
3399 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_268, 1);
3400 stream->write((uint64_t*)&cgen_var_268, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003401 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003402 uint64_t cgen_var_269 = (uint64_t)(uintptr_t)local_pAllocator;
3403 stream->putBe64(cgen_var_269);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003404 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003405 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003406 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003407 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003408 resources->destroyMapping()->mapHandles_VkImage((VkImage*)&image);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003409}
3410
3411void VkEncoder::vkGetImageSubresourceLayout(
3412 VkDevice device,
3413 VkImage image,
3414 const VkImageSubresource* pSubresource,
3415 VkSubresourceLayout* pLayout)
3416{
3417 auto stream = mImpl->stream();
3418 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003419 auto resources = mImpl->resources();
3420 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003421 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003422 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003423 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003424 VkImageSubresource* local_pSubresource;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003425 local_device = device;
3426 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003427 local_pSubresource = nullptr;
3428 if (pSubresource)
3429 {
3430 local_pSubresource = (VkImageSubresource*)pool->alloc(sizeof(const VkImageSubresource));
3431 deepcopy_VkImageSubresource(pool, pSubresource, (VkImageSubresource*)(local_pSubresource));
3432 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003433 countingStream->rewind();
3434 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003435 uint64_t cgen_var_270;
3436 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_270, 1);
3437 countingStream->write((uint64_t*)&cgen_var_270, 1 * 8);
3438 uint64_t cgen_var_271;
3439 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_271, 1);
3440 countingStream->write((uint64_t*)&cgen_var_271, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003441 marshal_VkImageSubresource(countingStream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003442 marshal_VkSubresourceLayout(countingStream, (VkSubresourceLayout*)(pLayout));
3443 }
3444 uint32_t packetSize_vkGetImageSubresourceLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3445 countingStream->rewind();
3446 uint32_t opcode_vkGetImageSubresourceLayout = OP_vkGetImageSubresourceLayout;
3447 stream->write(&opcode_vkGetImageSubresourceLayout, sizeof(uint32_t));
3448 stream->write(&packetSize_vkGetImageSubresourceLayout, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003449 uint64_t cgen_var_272;
3450 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_272, 1);
3451 stream->write((uint64_t*)&cgen_var_272, 1 * 8);
3452 uint64_t cgen_var_273;
3453 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_273, 1);
3454 stream->write((uint64_t*)&cgen_var_273, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003455 marshal_VkImageSubresource(stream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003456 marshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
3457 unmarshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
3458}
3459
3460VkResult VkEncoder::vkCreateImageView(
3461 VkDevice device,
3462 const VkImageViewCreateInfo* pCreateInfo,
3463 const VkAllocationCallbacks* pAllocator,
3464 VkImageView* pView)
3465{
3466 auto stream = mImpl->stream();
3467 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003468 auto resources = mImpl->resources();
3469 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003470 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003471 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003472 VkImageViewCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003473 VkAllocationCallbacks* local_pAllocator;
3474 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003475 local_pCreateInfo = nullptr;
3476 if (pCreateInfo)
3477 {
3478 local_pCreateInfo = (VkImageViewCreateInfo*)pool->alloc(sizeof(const VkImageViewCreateInfo));
3479 deepcopy_VkImageViewCreateInfo(pool, pCreateInfo, (VkImageViewCreateInfo*)(local_pCreateInfo));
3480 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003481 local_pAllocator = nullptr;
3482 if (pAllocator)
3483 {
3484 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3485 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3486 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003487 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003488 countingStream->rewind();
3489 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003490 uint64_t cgen_var_274;
3491 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_274, 1);
3492 countingStream->write((uint64_t*)&cgen_var_274, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003493 marshal_VkImageViewCreateInfo(countingStream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003494 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003495 uint64_t cgen_var_275 = (uint64_t)(uintptr_t)local_pAllocator;
3496 countingStream->putBe64(cgen_var_275);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003497 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003498 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003499 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003500 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003501 uint64_t cgen_var_276;
3502 countingStream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_276, 1);
3503 countingStream->write((uint64_t*)&cgen_var_276, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003504 }
3505 uint32_t packetSize_vkCreateImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3506 countingStream->rewind();
3507 uint32_t opcode_vkCreateImageView = OP_vkCreateImageView;
3508 stream->write(&opcode_vkCreateImageView, sizeof(uint32_t));
3509 stream->write(&packetSize_vkCreateImageView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003510 uint64_t cgen_var_277;
3511 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_277, 1);
3512 stream->write((uint64_t*)&cgen_var_277, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003513 marshal_VkImageViewCreateInfo(stream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003514 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003515 uint64_t cgen_var_278 = (uint64_t)(uintptr_t)local_pAllocator;
3516 stream->putBe64(cgen_var_278);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003517 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003518 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003519 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003520 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003521 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003522 uint64_t cgen_var_279;
3523 stream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_279, 1);
3524 stream->write((uint64_t*)&cgen_var_279, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003525 stream->setHandleMapping(resources->unwrapMapping());
3526 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003527 uint64_t cgen_var_280;
3528 stream->read((uint64_t*)&cgen_var_280, 8);
3529 stream->handleMapping()->mapHandles_u64_VkImageView(&cgen_var_280, (VkImageView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003530 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003531 VkResult vkCreateImageView_VkResult_return = (VkResult)0;
3532 stream->read(&vkCreateImageView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003533 countingStream->clearPool();
3534 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003535 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003536 return vkCreateImageView_VkResult_return;
3537}
3538
3539void VkEncoder::vkDestroyImageView(
3540 VkDevice device,
3541 VkImageView imageView,
3542 const VkAllocationCallbacks* pAllocator)
3543{
3544 auto stream = mImpl->stream();
3545 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003546 auto resources = mImpl->resources();
3547 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003548 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003549 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003550 VkImageView local_imageView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003551 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003552 local_device = device;
3553 local_imageView = imageView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003554 local_pAllocator = nullptr;
3555 if (pAllocator)
3556 {
3557 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3558 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3559 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003560 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003561 countingStream->rewind();
3562 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003563 uint64_t cgen_var_281;
3564 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_281, 1);
3565 countingStream->write((uint64_t*)&cgen_var_281, 1 * 8);
3566 uint64_t cgen_var_282;
3567 countingStream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_282, 1);
3568 countingStream->write((uint64_t*)&cgen_var_282, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003569 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003570 uint64_t cgen_var_283 = (uint64_t)(uintptr_t)local_pAllocator;
3571 countingStream->putBe64(cgen_var_283);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003572 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003573 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003574 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003575 }
3576 }
3577 uint32_t packetSize_vkDestroyImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3578 countingStream->rewind();
3579 uint32_t opcode_vkDestroyImageView = OP_vkDestroyImageView;
3580 stream->write(&opcode_vkDestroyImageView, sizeof(uint32_t));
3581 stream->write(&packetSize_vkDestroyImageView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003582 uint64_t cgen_var_284;
3583 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_284, 1);
3584 stream->write((uint64_t*)&cgen_var_284, 1 * 8);
3585 uint64_t cgen_var_285;
3586 stream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_285, 1);
3587 stream->write((uint64_t*)&cgen_var_285, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003588 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003589 uint64_t cgen_var_286 = (uint64_t)(uintptr_t)local_pAllocator;
3590 stream->putBe64(cgen_var_286);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003591 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003592 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003593 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003594 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003595 resources->destroyMapping()->mapHandles_VkImageView((VkImageView*)&imageView);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003596}
3597
3598VkResult VkEncoder::vkCreateShaderModule(
3599 VkDevice device,
3600 const VkShaderModuleCreateInfo* pCreateInfo,
3601 const VkAllocationCallbacks* pAllocator,
3602 VkShaderModule* pShaderModule)
3603{
3604 auto stream = mImpl->stream();
3605 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003606 auto resources = mImpl->resources();
3607 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003608 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003609 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003610 VkShaderModuleCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003611 VkAllocationCallbacks* local_pAllocator;
3612 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003613 local_pCreateInfo = nullptr;
3614 if (pCreateInfo)
3615 {
3616 local_pCreateInfo = (VkShaderModuleCreateInfo*)pool->alloc(sizeof(const VkShaderModuleCreateInfo));
3617 deepcopy_VkShaderModuleCreateInfo(pool, pCreateInfo, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
3618 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003619 local_pAllocator = nullptr;
3620 if (pAllocator)
3621 {
3622 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3623 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3624 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003625 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003626 countingStream->rewind();
3627 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003628 uint64_t cgen_var_287;
3629 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_287, 1);
3630 countingStream->write((uint64_t*)&cgen_var_287, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003631 marshal_VkShaderModuleCreateInfo(countingStream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003632 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003633 uint64_t cgen_var_288 = (uint64_t)(uintptr_t)local_pAllocator;
3634 countingStream->putBe64(cgen_var_288);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003635 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003636 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003637 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003638 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003639 uint64_t cgen_var_289;
3640 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_289, 1);
3641 countingStream->write((uint64_t*)&cgen_var_289, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003642 }
3643 uint32_t packetSize_vkCreateShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3644 countingStream->rewind();
3645 uint32_t opcode_vkCreateShaderModule = OP_vkCreateShaderModule;
3646 stream->write(&opcode_vkCreateShaderModule, sizeof(uint32_t));
3647 stream->write(&packetSize_vkCreateShaderModule, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003648 uint64_t cgen_var_290;
3649 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_290, 1);
3650 stream->write((uint64_t*)&cgen_var_290, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003651 marshal_VkShaderModuleCreateInfo(stream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003652 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003653 uint64_t cgen_var_291 = (uint64_t)(uintptr_t)local_pAllocator;
3654 stream->putBe64(cgen_var_291);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003655 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003656 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003657 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003658 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003659 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003660 uint64_t cgen_var_292;
3661 stream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_292, 1);
3662 stream->write((uint64_t*)&cgen_var_292, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003663 stream->setHandleMapping(resources->unwrapMapping());
3664 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003665 uint64_t cgen_var_293;
3666 stream->read((uint64_t*)&cgen_var_293, 8);
3667 stream->handleMapping()->mapHandles_u64_VkShaderModule(&cgen_var_293, (VkShaderModule*)pShaderModule, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003668 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003669 VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
3670 stream->read(&vkCreateShaderModule_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003671 countingStream->clearPool();
3672 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003673 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003674 return vkCreateShaderModule_VkResult_return;
3675}
3676
3677void VkEncoder::vkDestroyShaderModule(
3678 VkDevice device,
3679 VkShaderModule shaderModule,
3680 const VkAllocationCallbacks* pAllocator)
3681{
3682 auto stream = mImpl->stream();
3683 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003684 auto resources = mImpl->resources();
3685 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003686 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003687 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003688 VkShaderModule local_shaderModule;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003689 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003690 local_device = device;
3691 local_shaderModule = shaderModule;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003692 local_pAllocator = nullptr;
3693 if (pAllocator)
3694 {
3695 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3696 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3697 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003698 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003699 countingStream->rewind();
3700 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003701 uint64_t cgen_var_294;
3702 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_294, 1);
3703 countingStream->write((uint64_t*)&cgen_var_294, 1 * 8);
3704 uint64_t cgen_var_295;
3705 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_295, 1);
3706 countingStream->write((uint64_t*)&cgen_var_295, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003707 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003708 uint64_t cgen_var_296 = (uint64_t)(uintptr_t)local_pAllocator;
3709 countingStream->putBe64(cgen_var_296);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003710 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003711 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003712 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003713 }
3714 }
3715 uint32_t packetSize_vkDestroyShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3716 countingStream->rewind();
3717 uint32_t opcode_vkDestroyShaderModule = OP_vkDestroyShaderModule;
3718 stream->write(&opcode_vkDestroyShaderModule, sizeof(uint32_t));
3719 stream->write(&packetSize_vkDestroyShaderModule, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003720 uint64_t cgen_var_297;
3721 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_297, 1);
3722 stream->write((uint64_t*)&cgen_var_297, 1 * 8);
3723 uint64_t cgen_var_298;
3724 stream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_298, 1);
3725 stream->write((uint64_t*)&cgen_var_298, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003726 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003727 uint64_t cgen_var_299 = (uint64_t)(uintptr_t)local_pAllocator;
3728 stream->putBe64(cgen_var_299);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003729 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003730 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003731 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003732 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003733 resources->destroyMapping()->mapHandles_VkShaderModule((VkShaderModule*)&shaderModule);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003734}
3735
3736VkResult VkEncoder::vkCreatePipelineCache(
3737 VkDevice device,
3738 const VkPipelineCacheCreateInfo* pCreateInfo,
3739 const VkAllocationCallbacks* pAllocator,
3740 VkPipelineCache* pPipelineCache)
3741{
3742 auto stream = mImpl->stream();
3743 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003744 auto resources = mImpl->resources();
3745 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003746 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003747 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003748 VkPipelineCacheCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003749 VkAllocationCallbacks* local_pAllocator;
3750 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003751 local_pCreateInfo = nullptr;
3752 if (pCreateInfo)
3753 {
3754 local_pCreateInfo = (VkPipelineCacheCreateInfo*)pool->alloc(sizeof(const VkPipelineCacheCreateInfo));
3755 deepcopy_VkPipelineCacheCreateInfo(pool, pCreateInfo, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
3756 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003757 local_pAllocator = nullptr;
3758 if (pAllocator)
3759 {
3760 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3761 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3762 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003763 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003764 countingStream->rewind();
3765 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003766 uint64_t cgen_var_300;
3767 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_300, 1);
3768 countingStream->write((uint64_t*)&cgen_var_300, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003769 marshal_VkPipelineCacheCreateInfo(countingStream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003770 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003771 uint64_t cgen_var_301 = (uint64_t)(uintptr_t)local_pAllocator;
3772 countingStream->putBe64(cgen_var_301);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003773 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003774 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003775 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003776 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003777 uint64_t cgen_var_302;
3778 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_302, 1);
3779 countingStream->write((uint64_t*)&cgen_var_302, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003780 }
3781 uint32_t packetSize_vkCreatePipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3782 countingStream->rewind();
3783 uint32_t opcode_vkCreatePipelineCache = OP_vkCreatePipelineCache;
3784 stream->write(&opcode_vkCreatePipelineCache, sizeof(uint32_t));
3785 stream->write(&packetSize_vkCreatePipelineCache, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003786 uint64_t cgen_var_303;
3787 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_303, 1);
3788 stream->write((uint64_t*)&cgen_var_303, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003789 marshal_VkPipelineCacheCreateInfo(stream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003790 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003791 uint64_t cgen_var_304 = (uint64_t)(uintptr_t)local_pAllocator;
3792 stream->putBe64(cgen_var_304);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003793 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003794 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003795 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003796 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003797 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003798 uint64_t cgen_var_305;
3799 stream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_305, 1);
3800 stream->write((uint64_t*)&cgen_var_305, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003801 stream->setHandleMapping(resources->unwrapMapping());
3802 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003803 uint64_t cgen_var_306;
3804 stream->read((uint64_t*)&cgen_var_306, 8);
3805 stream->handleMapping()->mapHandles_u64_VkPipelineCache(&cgen_var_306, (VkPipelineCache*)pPipelineCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003806 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003807 VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
3808 stream->read(&vkCreatePipelineCache_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003809 countingStream->clearPool();
3810 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003811 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003812 return vkCreatePipelineCache_VkResult_return;
3813}
3814
3815void VkEncoder::vkDestroyPipelineCache(
3816 VkDevice device,
3817 VkPipelineCache pipelineCache,
3818 const VkAllocationCallbacks* pAllocator)
3819{
3820 auto stream = mImpl->stream();
3821 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003822 auto resources = mImpl->resources();
3823 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003824 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003825 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003826 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003827 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003828 local_device = device;
3829 local_pipelineCache = pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003830 local_pAllocator = nullptr;
3831 if (pAllocator)
3832 {
3833 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3834 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3835 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003836 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003837 countingStream->rewind();
3838 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003839 uint64_t cgen_var_307;
3840 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_307, 1);
3841 countingStream->write((uint64_t*)&cgen_var_307, 1 * 8);
3842 uint64_t cgen_var_308;
3843 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_308, 1);
3844 countingStream->write((uint64_t*)&cgen_var_308, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003845 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003846 uint64_t cgen_var_309 = (uint64_t)(uintptr_t)local_pAllocator;
3847 countingStream->putBe64(cgen_var_309);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003848 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003849 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003850 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003851 }
3852 }
3853 uint32_t packetSize_vkDestroyPipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3854 countingStream->rewind();
3855 uint32_t opcode_vkDestroyPipelineCache = OP_vkDestroyPipelineCache;
3856 stream->write(&opcode_vkDestroyPipelineCache, sizeof(uint32_t));
3857 stream->write(&packetSize_vkDestroyPipelineCache, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003858 uint64_t cgen_var_310;
3859 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_310, 1);
3860 stream->write((uint64_t*)&cgen_var_310, 1 * 8);
3861 uint64_t cgen_var_311;
3862 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_311, 1);
3863 stream->write((uint64_t*)&cgen_var_311, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003864 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003865 uint64_t cgen_var_312 = (uint64_t)(uintptr_t)local_pAllocator;
3866 stream->putBe64(cgen_var_312);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003867 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003868 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003869 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003870 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003871 resources->destroyMapping()->mapHandles_VkPipelineCache((VkPipelineCache*)&pipelineCache);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003872}
3873
3874VkResult VkEncoder::vkGetPipelineCacheData(
3875 VkDevice device,
3876 VkPipelineCache pipelineCache,
3877 size_t* pDataSize,
3878 void* pData)
3879{
3880 auto stream = mImpl->stream();
3881 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003882 auto resources = mImpl->resources();
3883 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003884 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003885 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003886 VkPipelineCache local_pipelineCache;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003887 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003888 local_pipelineCache = pipelineCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003889 countingStream->rewind();
3890 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003891 uint64_t cgen_var_313;
3892 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_313, 1);
3893 countingStream->write((uint64_t*)&cgen_var_313, 1 * 8);
3894 uint64_t cgen_var_314;
3895 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_314, 1);
3896 countingStream->write((uint64_t*)&cgen_var_314, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003897 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003898 uint64_t cgen_var_315 = (uint64_t)(uintptr_t)pDataSize;
3899 countingStream->putBe64(cgen_var_315);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003900 if (pDataSize)
3901 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003902 uint64_t cgen_var_316 = (uint64_t)(*pDataSize);
3903 countingStream->putBe64(cgen_var_316);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003904 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003905 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003906 uint64_t cgen_var_317 = (uint64_t)(uintptr_t)pData;
3907 countingStream->putBe64(cgen_var_317);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003908 if (pData)
3909 {
3910 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
3911 }
3912 }
3913 uint32_t packetSize_vkGetPipelineCacheData = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3914 countingStream->rewind();
3915 uint32_t opcode_vkGetPipelineCacheData = OP_vkGetPipelineCacheData;
3916 stream->write(&opcode_vkGetPipelineCacheData, sizeof(uint32_t));
3917 stream->write(&packetSize_vkGetPipelineCacheData, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003918 uint64_t cgen_var_318;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003919 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_318, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003920 stream->write((uint64_t*)&cgen_var_318, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003921 uint64_t cgen_var_319;
3922 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_319, 1);
3923 stream->write((uint64_t*)&cgen_var_319, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003924 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003925 uint64_t cgen_var_320 = (uint64_t)(uintptr_t)pDataSize;
3926 stream->putBe64(cgen_var_320);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003927 if (pDataSize)
3928 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003929 uint64_t cgen_var_321 = (uint64_t)(*pDataSize);
3930 stream->putBe64(cgen_var_321);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003931 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003932 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003933 uint64_t cgen_var_322 = (uint64_t)(uintptr_t)pData;
3934 stream->putBe64(cgen_var_322);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003935 if (pData)
3936 {
3937 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
3938 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003939 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003940 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003941 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003942 if (pDataSize)
3943 {
3944 if (!(check_pDataSize))
3945 {
3946 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
3947 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003948 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003949 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003950 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003951 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003952 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003953 if (pData)
3954 {
3955 if (!(check_pData))
3956 {
3957 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
3958 }
3959 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
3960 }
3961 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
3962 stream->read(&vkGetPipelineCacheData_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003963 countingStream->clearPool();
3964 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003965 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003966 return vkGetPipelineCacheData_VkResult_return;
3967}
3968
3969VkResult VkEncoder::vkMergePipelineCaches(
3970 VkDevice device,
3971 VkPipelineCache dstCache,
3972 uint32_t srcCacheCount,
3973 const VkPipelineCache* pSrcCaches)
3974{
3975 auto stream = mImpl->stream();
3976 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003977 auto resources = mImpl->resources();
3978 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003979 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003980 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003981 VkPipelineCache local_dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003982 uint32_t local_srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003983 VkPipelineCache* local_pSrcCaches;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003984 local_device = device;
3985 local_dstCache = dstCache;
3986 local_srcCacheCount = srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003987 local_pSrcCaches = nullptr;
3988 if (pSrcCaches)
3989 {
3990 local_pSrcCaches = (VkPipelineCache*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache));
3991 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003992 countingStream->rewind();
3993 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003994 uint64_t cgen_var_326;
3995 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_326, 1);
3996 countingStream->write((uint64_t*)&cgen_var_326, 1 * 8);
3997 uint64_t cgen_var_327;
3998 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_327, 1);
3999 countingStream->write((uint64_t*)&cgen_var_327, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004000 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004001 if (((srcCacheCount)))
4002 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004003 uint64_t* cgen_var_328;
4004 countingStream->alloc((void**)&cgen_var_328, ((srcCacheCount)) * 8);
4005 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_328, ((srcCacheCount)));
4006 countingStream->write((uint64_t*)cgen_var_328, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004007 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004008 }
4009 uint32_t packetSize_vkMergePipelineCaches = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4010 countingStream->rewind();
4011 uint32_t opcode_vkMergePipelineCaches = OP_vkMergePipelineCaches;
4012 stream->write(&opcode_vkMergePipelineCaches, sizeof(uint32_t));
4013 stream->write(&packetSize_vkMergePipelineCaches, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004014 uint64_t cgen_var_329;
4015 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_329, 1);
4016 stream->write((uint64_t*)&cgen_var_329, 1 * 8);
4017 uint64_t cgen_var_330;
4018 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_330, 1);
4019 stream->write((uint64_t*)&cgen_var_330, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004020 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004021 if (((srcCacheCount)))
4022 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004023 uint64_t* cgen_var_331;
4024 stream->alloc((void**)&cgen_var_331, ((srcCacheCount)) * 8);
4025 stream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_331, ((srcCacheCount)));
4026 stream->write((uint64_t*)cgen_var_331, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004027 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004028 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
4029 stream->read(&vkMergePipelineCaches_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004030 countingStream->clearPool();
4031 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004032 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004033 return vkMergePipelineCaches_VkResult_return;
4034}
4035
4036VkResult VkEncoder::vkCreateGraphicsPipelines(
4037 VkDevice device,
4038 VkPipelineCache pipelineCache,
4039 uint32_t createInfoCount,
4040 const VkGraphicsPipelineCreateInfo* pCreateInfos,
4041 const VkAllocationCallbacks* pAllocator,
4042 VkPipeline* pPipelines)
4043{
4044 auto stream = mImpl->stream();
4045 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004046 auto resources = mImpl->resources();
4047 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004048 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004049 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004050 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004051 uint32_t local_createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004052 VkGraphicsPipelineCreateInfo* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004053 VkAllocationCallbacks* local_pAllocator;
4054 local_device = device;
4055 local_pipelineCache = pipelineCache;
4056 local_createInfoCount = createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004057 local_pCreateInfos = nullptr;
4058 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004059 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004060 local_pCreateInfos = (VkGraphicsPipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkGraphicsPipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004061 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4062 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004063 deepcopy_VkGraphicsPipelineCreateInfo(pool, pCreateInfos + i, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004064 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004065 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004066 local_pAllocator = nullptr;
4067 if (pAllocator)
4068 {
4069 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4070 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4071 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004072 local_pAllocator = nullptr;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004073 countingStream->rewind();
4074 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004075 uint64_t cgen_var_332;
4076 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_332, 1);
4077 countingStream->write((uint64_t*)&cgen_var_332, 1 * 8);
4078 uint64_t cgen_var_333;
4079 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_333, 1);
4080 countingStream->write((uint64_t*)&cgen_var_333, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004081 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4082 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4083 {
4084 marshal_VkGraphicsPipelineCreateInfo(countingStream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
4085 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004086 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004087 uint64_t cgen_var_334 = (uint64_t)(uintptr_t)local_pAllocator;
4088 countingStream->putBe64(cgen_var_334);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004089 if (local_pAllocator)
4090 {
4091 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004092 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004093 if (((createInfoCount)))
4094 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004095 uint64_t* cgen_var_335;
4096 countingStream->alloc((void**)&cgen_var_335, ((createInfoCount)) * 8);
4097 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_335, ((createInfoCount)));
4098 countingStream->write((uint64_t*)cgen_var_335, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004099 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004100 }
4101 uint32_t packetSize_vkCreateGraphicsPipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4102 countingStream->rewind();
4103 uint32_t opcode_vkCreateGraphicsPipelines = OP_vkCreateGraphicsPipelines;
4104 stream->write(&opcode_vkCreateGraphicsPipelines, sizeof(uint32_t));
4105 stream->write(&packetSize_vkCreateGraphicsPipelines, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004106 uint64_t cgen_var_336;
4107 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_336, 1);
4108 stream->write((uint64_t*)&cgen_var_336, 1 * 8);
4109 uint64_t cgen_var_337;
4110 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_337, 1);
4111 stream->write((uint64_t*)&cgen_var_337, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004112 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004113 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4114 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004115 marshal_VkGraphicsPipelineCreateInfo(stream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004116 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004117 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004118 uint64_t cgen_var_338 = (uint64_t)(uintptr_t)local_pAllocator;
4119 stream->putBe64(cgen_var_338);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004120 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004121 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004122 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004123 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004124 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004125 if (((createInfoCount)))
4126 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004127 uint64_t* cgen_var_339;
4128 stream->alloc((void**)&cgen_var_339, ((createInfoCount)) * 8);
4129 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_339, ((createInfoCount)));
4130 stream->write((uint64_t*)cgen_var_339, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004131 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004132 stream->setHandleMapping(resources->unwrapMapping());
4133 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004134 if (((createInfoCount)))
4135 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004136 uint64_t* cgen_var_340;
4137 stream->alloc((void**)&cgen_var_340, ((createInfoCount)) * 8);
4138 stream->read((uint64_t*)cgen_var_340, ((createInfoCount)) * 8);
4139 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_340, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004140 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004141 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004142 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
4143 stream->read(&vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004144 countingStream->clearPool();
4145 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004146 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004147 return vkCreateGraphicsPipelines_VkResult_return;
4148}
4149
4150VkResult VkEncoder::vkCreateComputePipelines(
4151 VkDevice device,
4152 VkPipelineCache pipelineCache,
4153 uint32_t createInfoCount,
4154 const VkComputePipelineCreateInfo* pCreateInfos,
4155 const VkAllocationCallbacks* pAllocator,
4156 VkPipeline* pPipelines)
4157{
4158 auto stream = mImpl->stream();
4159 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004160 auto resources = mImpl->resources();
4161 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004162 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004163 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004164 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004165 uint32_t local_createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004166 VkComputePipelineCreateInfo* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004167 VkAllocationCallbacks* local_pAllocator;
4168 local_device = device;
4169 local_pipelineCache = pipelineCache;
4170 local_createInfoCount = createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004171 local_pCreateInfos = nullptr;
4172 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004173 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004174 local_pCreateInfos = (VkComputePipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkComputePipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004175 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4176 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004177 deepcopy_VkComputePipelineCreateInfo(pool, pCreateInfos + i, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004178 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004179 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004180 local_pAllocator = nullptr;
4181 if (pAllocator)
4182 {
4183 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4184 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4185 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004186 local_pAllocator = nullptr;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004187 countingStream->rewind();
4188 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004189 uint64_t cgen_var_341;
4190 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_341, 1);
4191 countingStream->write((uint64_t*)&cgen_var_341, 1 * 8);
4192 uint64_t cgen_var_342;
4193 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_342, 1);
4194 countingStream->write((uint64_t*)&cgen_var_342, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004195 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4196 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4197 {
4198 marshal_VkComputePipelineCreateInfo(countingStream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
4199 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004200 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004201 uint64_t cgen_var_343 = (uint64_t)(uintptr_t)local_pAllocator;
4202 countingStream->putBe64(cgen_var_343);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004203 if (local_pAllocator)
4204 {
4205 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004206 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004207 if (((createInfoCount)))
4208 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004209 uint64_t* cgen_var_344;
4210 countingStream->alloc((void**)&cgen_var_344, ((createInfoCount)) * 8);
4211 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_344, ((createInfoCount)));
4212 countingStream->write((uint64_t*)cgen_var_344, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004213 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004214 }
4215 uint32_t packetSize_vkCreateComputePipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4216 countingStream->rewind();
4217 uint32_t opcode_vkCreateComputePipelines = OP_vkCreateComputePipelines;
4218 stream->write(&opcode_vkCreateComputePipelines, sizeof(uint32_t));
4219 stream->write(&packetSize_vkCreateComputePipelines, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004220 uint64_t cgen_var_345;
4221 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_345, 1);
4222 stream->write((uint64_t*)&cgen_var_345, 1 * 8);
4223 uint64_t cgen_var_346;
4224 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_346, 1);
4225 stream->write((uint64_t*)&cgen_var_346, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004226 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004227 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4228 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004229 marshal_VkComputePipelineCreateInfo(stream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004230 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004231 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004232 uint64_t cgen_var_347 = (uint64_t)(uintptr_t)local_pAllocator;
4233 stream->putBe64(cgen_var_347);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004234 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004235 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004236 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004237 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004238 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004239 if (((createInfoCount)))
4240 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004241 uint64_t* cgen_var_348;
4242 stream->alloc((void**)&cgen_var_348, ((createInfoCount)) * 8);
4243 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_348, ((createInfoCount)));
4244 stream->write((uint64_t*)cgen_var_348, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004245 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004246 stream->setHandleMapping(resources->unwrapMapping());
4247 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004248 if (((createInfoCount)))
4249 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004250 uint64_t* cgen_var_349;
4251 stream->alloc((void**)&cgen_var_349, ((createInfoCount)) * 8);
4252 stream->read((uint64_t*)cgen_var_349, ((createInfoCount)) * 8);
4253 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_349, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004254 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004255 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004256 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
4257 stream->read(&vkCreateComputePipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004258 countingStream->clearPool();
4259 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004260 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004261 return vkCreateComputePipelines_VkResult_return;
4262}
4263
4264void VkEncoder::vkDestroyPipeline(
4265 VkDevice device,
4266 VkPipeline pipeline,
4267 const VkAllocationCallbacks* pAllocator)
4268{
4269 auto stream = mImpl->stream();
4270 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004271 auto resources = mImpl->resources();
4272 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004273 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004274 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004275 VkPipeline local_pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004276 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004277 local_device = device;
4278 local_pipeline = pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004279 local_pAllocator = nullptr;
4280 if (pAllocator)
4281 {
4282 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4283 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4284 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004285 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004286 countingStream->rewind();
4287 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004288 uint64_t cgen_var_350;
4289 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_350, 1);
4290 countingStream->write((uint64_t*)&cgen_var_350, 1 * 8);
4291 uint64_t cgen_var_351;
4292 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_351, 1);
4293 countingStream->write((uint64_t*)&cgen_var_351, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004294 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004295 uint64_t cgen_var_352 = (uint64_t)(uintptr_t)local_pAllocator;
4296 countingStream->putBe64(cgen_var_352);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004297 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004298 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004299 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004300 }
4301 }
4302 uint32_t packetSize_vkDestroyPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4303 countingStream->rewind();
4304 uint32_t opcode_vkDestroyPipeline = OP_vkDestroyPipeline;
4305 stream->write(&opcode_vkDestroyPipeline, sizeof(uint32_t));
4306 stream->write(&packetSize_vkDestroyPipeline, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004307 uint64_t cgen_var_353;
4308 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_353, 1);
4309 stream->write((uint64_t*)&cgen_var_353, 1 * 8);
4310 uint64_t cgen_var_354;
4311 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_354, 1);
4312 stream->write((uint64_t*)&cgen_var_354, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004313 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004314 uint64_t cgen_var_355 = (uint64_t)(uintptr_t)local_pAllocator;
4315 stream->putBe64(cgen_var_355);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004316 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004317 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004318 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004319 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004320 resources->destroyMapping()->mapHandles_VkPipeline((VkPipeline*)&pipeline);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004321}
4322
4323VkResult VkEncoder::vkCreatePipelineLayout(
4324 VkDevice device,
4325 const VkPipelineLayoutCreateInfo* pCreateInfo,
4326 const VkAllocationCallbacks* pAllocator,
4327 VkPipelineLayout* pPipelineLayout)
4328{
4329 auto stream = mImpl->stream();
4330 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004331 auto resources = mImpl->resources();
4332 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004333 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004334 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004335 VkPipelineLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004336 VkAllocationCallbacks* local_pAllocator;
4337 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004338 local_pCreateInfo = nullptr;
4339 if (pCreateInfo)
4340 {
4341 local_pCreateInfo = (VkPipelineLayoutCreateInfo*)pool->alloc(sizeof(const VkPipelineLayoutCreateInfo));
4342 deepcopy_VkPipelineLayoutCreateInfo(pool, pCreateInfo, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
4343 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004344 local_pAllocator = nullptr;
4345 if (pAllocator)
4346 {
4347 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4348 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4349 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004350 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004351 countingStream->rewind();
4352 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004353 uint64_t cgen_var_356;
4354 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_356, 1);
4355 countingStream->write((uint64_t*)&cgen_var_356, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004356 marshal_VkPipelineLayoutCreateInfo(countingStream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004357 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004358 uint64_t cgen_var_357 = (uint64_t)(uintptr_t)local_pAllocator;
4359 countingStream->putBe64(cgen_var_357);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004360 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004361 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004362 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004363 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004364 uint64_t cgen_var_358;
4365 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_358, 1);
4366 countingStream->write((uint64_t*)&cgen_var_358, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004367 }
4368 uint32_t packetSize_vkCreatePipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4369 countingStream->rewind();
4370 uint32_t opcode_vkCreatePipelineLayout = OP_vkCreatePipelineLayout;
4371 stream->write(&opcode_vkCreatePipelineLayout, sizeof(uint32_t));
4372 stream->write(&packetSize_vkCreatePipelineLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004373 uint64_t cgen_var_359;
4374 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_359, 1);
4375 stream->write((uint64_t*)&cgen_var_359, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004376 marshal_VkPipelineLayoutCreateInfo(stream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004377 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004378 uint64_t cgen_var_360 = (uint64_t)(uintptr_t)local_pAllocator;
4379 stream->putBe64(cgen_var_360);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004380 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004381 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004382 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004383 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004384 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004385 uint64_t cgen_var_361;
4386 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_361, 1);
4387 stream->write((uint64_t*)&cgen_var_361, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004388 stream->setHandleMapping(resources->unwrapMapping());
4389 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004390 uint64_t cgen_var_362;
4391 stream->read((uint64_t*)&cgen_var_362, 8);
4392 stream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_362, (VkPipelineLayout*)pPipelineLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004393 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004394 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
4395 stream->read(&vkCreatePipelineLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004396 countingStream->clearPool();
4397 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004398 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004399 return vkCreatePipelineLayout_VkResult_return;
4400}
4401
4402void VkEncoder::vkDestroyPipelineLayout(
4403 VkDevice device,
4404 VkPipelineLayout pipelineLayout,
4405 const VkAllocationCallbacks* pAllocator)
4406{
4407 auto stream = mImpl->stream();
4408 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004409 auto resources = mImpl->resources();
4410 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004411 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004412 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004413 VkPipelineLayout local_pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004414 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004415 local_device = device;
4416 local_pipelineLayout = pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004417 local_pAllocator = nullptr;
4418 if (pAllocator)
4419 {
4420 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4421 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4422 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004423 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004424 countingStream->rewind();
4425 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004426 uint64_t cgen_var_363;
4427 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_363, 1);
4428 countingStream->write((uint64_t*)&cgen_var_363, 1 * 8);
4429 uint64_t cgen_var_364;
4430 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_364, 1);
4431 countingStream->write((uint64_t*)&cgen_var_364, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004432 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004433 uint64_t cgen_var_365 = (uint64_t)(uintptr_t)local_pAllocator;
4434 countingStream->putBe64(cgen_var_365);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004435 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004436 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004437 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004438 }
4439 }
4440 uint32_t packetSize_vkDestroyPipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4441 countingStream->rewind();
4442 uint32_t opcode_vkDestroyPipelineLayout = OP_vkDestroyPipelineLayout;
4443 stream->write(&opcode_vkDestroyPipelineLayout, sizeof(uint32_t));
4444 stream->write(&packetSize_vkDestroyPipelineLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004445 uint64_t cgen_var_366;
4446 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_366, 1);
4447 stream->write((uint64_t*)&cgen_var_366, 1 * 8);
4448 uint64_t cgen_var_367;
4449 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_367, 1);
4450 stream->write((uint64_t*)&cgen_var_367, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004451 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004452 uint64_t cgen_var_368 = (uint64_t)(uintptr_t)local_pAllocator;
4453 stream->putBe64(cgen_var_368);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004454 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004455 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004456 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004457 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004458 resources->destroyMapping()->mapHandles_VkPipelineLayout((VkPipelineLayout*)&pipelineLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004459}
4460
4461VkResult VkEncoder::vkCreateSampler(
4462 VkDevice device,
4463 const VkSamplerCreateInfo* pCreateInfo,
4464 const VkAllocationCallbacks* pAllocator,
4465 VkSampler* pSampler)
4466{
4467 auto stream = mImpl->stream();
4468 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004469 auto resources = mImpl->resources();
4470 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004471 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004472 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004473 VkSamplerCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004474 VkAllocationCallbacks* local_pAllocator;
4475 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004476 local_pCreateInfo = nullptr;
4477 if (pCreateInfo)
4478 {
4479 local_pCreateInfo = (VkSamplerCreateInfo*)pool->alloc(sizeof(const VkSamplerCreateInfo));
4480 deepcopy_VkSamplerCreateInfo(pool, pCreateInfo, (VkSamplerCreateInfo*)(local_pCreateInfo));
4481 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004482 local_pAllocator = nullptr;
4483 if (pAllocator)
4484 {
4485 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4486 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4487 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004488 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004489 countingStream->rewind();
4490 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004491 uint64_t cgen_var_369;
4492 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_369, 1);
4493 countingStream->write((uint64_t*)&cgen_var_369, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004494 marshal_VkSamplerCreateInfo(countingStream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004495 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004496 uint64_t cgen_var_370 = (uint64_t)(uintptr_t)local_pAllocator;
4497 countingStream->putBe64(cgen_var_370);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004498 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004499 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004500 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004501 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004502 uint64_t cgen_var_371;
4503 countingStream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_371, 1);
4504 countingStream->write((uint64_t*)&cgen_var_371, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004505 }
4506 uint32_t packetSize_vkCreateSampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4507 countingStream->rewind();
4508 uint32_t opcode_vkCreateSampler = OP_vkCreateSampler;
4509 stream->write(&opcode_vkCreateSampler, sizeof(uint32_t));
4510 stream->write(&packetSize_vkCreateSampler, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004511 uint64_t cgen_var_372;
4512 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_372, 1);
4513 stream->write((uint64_t*)&cgen_var_372, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004514 marshal_VkSamplerCreateInfo(stream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004515 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004516 uint64_t cgen_var_373 = (uint64_t)(uintptr_t)local_pAllocator;
4517 stream->putBe64(cgen_var_373);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004518 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004519 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004520 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004521 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004522 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004523 uint64_t cgen_var_374;
4524 stream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_374, 1);
4525 stream->write((uint64_t*)&cgen_var_374, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004526 stream->setHandleMapping(resources->unwrapMapping());
4527 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004528 uint64_t cgen_var_375;
4529 stream->read((uint64_t*)&cgen_var_375, 8);
4530 stream->handleMapping()->mapHandles_u64_VkSampler(&cgen_var_375, (VkSampler*)pSampler, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004531 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004532 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
4533 stream->read(&vkCreateSampler_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004534 countingStream->clearPool();
4535 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004536 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004537 return vkCreateSampler_VkResult_return;
4538}
4539
4540void VkEncoder::vkDestroySampler(
4541 VkDevice device,
4542 VkSampler sampler,
4543 const VkAllocationCallbacks* pAllocator)
4544{
4545 auto stream = mImpl->stream();
4546 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004547 auto resources = mImpl->resources();
4548 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004549 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004550 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004551 VkSampler local_sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004552 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004553 local_device = device;
4554 local_sampler = sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004555 local_pAllocator = nullptr;
4556 if (pAllocator)
4557 {
4558 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4559 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4560 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004561 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004562 countingStream->rewind();
4563 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004564 uint64_t cgen_var_376;
4565 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_376, 1);
4566 countingStream->write((uint64_t*)&cgen_var_376, 1 * 8);
4567 uint64_t cgen_var_377;
4568 countingStream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_377, 1);
4569 countingStream->write((uint64_t*)&cgen_var_377, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004570 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004571 uint64_t cgen_var_378 = (uint64_t)(uintptr_t)local_pAllocator;
4572 countingStream->putBe64(cgen_var_378);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004573 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004574 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004575 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004576 }
4577 }
4578 uint32_t packetSize_vkDestroySampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4579 countingStream->rewind();
4580 uint32_t opcode_vkDestroySampler = OP_vkDestroySampler;
4581 stream->write(&opcode_vkDestroySampler, sizeof(uint32_t));
4582 stream->write(&packetSize_vkDestroySampler, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004583 uint64_t cgen_var_379;
4584 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_379, 1);
4585 stream->write((uint64_t*)&cgen_var_379, 1 * 8);
4586 uint64_t cgen_var_380;
4587 stream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_380, 1);
4588 stream->write((uint64_t*)&cgen_var_380, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004589 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004590 uint64_t cgen_var_381 = (uint64_t)(uintptr_t)local_pAllocator;
4591 stream->putBe64(cgen_var_381);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004592 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004593 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004594 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004595 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004596 resources->destroyMapping()->mapHandles_VkSampler((VkSampler*)&sampler);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004597}
4598
4599VkResult VkEncoder::vkCreateDescriptorSetLayout(
4600 VkDevice device,
4601 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
4602 const VkAllocationCallbacks* pAllocator,
4603 VkDescriptorSetLayout* pSetLayout)
4604{
4605 auto stream = mImpl->stream();
4606 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004607 auto resources = mImpl->resources();
4608 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004609 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004610 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004611 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004612 VkAllocationCallbacks* local_pAllocator;
4613 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004614 local_pCreateInfo = nullptr;
4615 if (pCreateInfo)
4616 {
4617 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
4618 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
4619 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004620 local_pAllocator = nullptr;
4621 if (pAllocator)
4622 {
4623 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4624 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4625 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004626 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004627 countingStream->rewind();
4628 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004629 uint64_t cgen_var_382;
4630 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_382, 1);
4631 countingStream->write((uint64_t*)&cgen_var_382, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004632 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004633 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004634 uint64_t cgen_var_383 = (uint64_t)(uintptr_t)local_pAllocator;
4635 countingStream->putBe64(cgen_var_383);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004636 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004637 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004638 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004639 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004640 uint64_t cgen_var_384;
4641 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_384, 1);
4642 countingStream->write((uint64_t*)&cgen_var_384, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004643 }
4644 uint32_t packetSize_vkCreateDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4645 countingStream->rewind();
4646 uint32_t opcode_vkCreateDescriptorSetLayout = OP_vkCreateDescriptorSetLayout;
4647 stream->write(&opcode_vkCreateDescriptorSetLayout, sizeof(uint32_t));
4648 stream->write(&packetSize_vkCreateDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004649 uint64_t cgen_var_385;
4650 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_385, 1);
4651 stream->write((uint64_t*)&cgen_var_385, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004652 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004653 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004654 uint64_t cgen_var_386 = (uint64_t)(uintptr_t)local_pAllocator;
4655 stream->putBe64(cgen_var_386);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004656 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004657 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004658 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004659 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004660 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004661 uint64_t cgen_var_387;
4662 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_387, 1);
4663 stream->write((uint64_t*)&cgen_var_387, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004664 stream->setHandleMapping(resources->unwrapMapping());
4665 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004666 uint64_t cgen_var_388;
4667 stream->read((uint64_t*)&cgen_var_388, 8);
4668 stream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(&cgen_var_388, (VkDescriptorSetLayout*)pSetLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004669 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004670 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
4671 stream->read(&vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004672 countingStream->clearPool();
4673 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004674 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004675 return vkCreateDescriptorSetLayout_VkResult_return;
4676}
4677
4678void VkEncoder::vkDestroyDescriptorSetLayout(
4679 VkDevice device,
4680 VkDescriptorSetLayout descriptorSetLayout,
4681 const VkAllocationCallbacks* pAllocator)
4682{
4683 auto stream = mImpl->stream();
4684 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004685 auto resources = mImpl->resources();
4686 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004687 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004688 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004689 VkDescriptorSetLayout local_descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004690 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004691 local_device = device;
4692 local_descriptorSetLayout = descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004693 local_pAllocator = nullptr;
4694 if (pAllocator)
4695 {
4696 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4697 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4698 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004699 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004700 countingStream->rewind();
4701 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004702 uint64_t cgen_var_389;
4703 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_389, 1);
4704 countingStream->write((uint64_t*)&cgen_var_389, 1 * 8);
4705 uint64_t cgen_var_390;
4706 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_390, 1);
4707 countingStream->write((uint64_t*)&cgen_var_390, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004708 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004709 uint64_t cgen_var_391 = (uint64_t)(uintptr_t)local_pAllocator;
4710 countingStream->putBe64(cgen_var_391);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004711 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004712 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004713 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004714 }
4715 }
4716 uint32_t packetSize_vkDestroyDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4717 countingStream->rewind();
4718 uint32_t opcode_vkDestroyDescriptorSetLayout = OP_vkDestroyDescriptorSetLayout;
4719 stream->write(&opcode_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
4720 stream->write(&packetSize_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004721 uint64_t cgen_var_392;
4722 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_392, 1);
4723 stream->write((uint64_t*)&cgen_var_392, 1 * 8);
4724 uint64_t cgen_var_393;
4725 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_393, 1);
4726 stream->write((uint64_t*)&cgen_var_393, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004727 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004728 uint64_t cgen_var_394 = (uint64_t)(uintptr_t)local_pAllocator;
4729 stream->putBe64(cgen_var_394);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004730 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004731 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004732 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004733 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004734 resources->destroyMapping()->mapHandles_VkDescriptorSetLayout((VkDescriptorSetLayout*)&descriptorSetLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004735}
4736
4737VkResult VkEncoder::vkCreateDescriptorPool(
4738 VkDevice device,
4739 const VkDescriptorPoolCreateInfo* pCreateInfo,
4740 const VkAllocationCallbacks* pAllocator,
4741 VkDescriptorPool* pDescriptorPool)
4742{
4743 auto stream = mImpl->stream();
4744 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004745 auto resources = mImpl->resources();
4746 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004747 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004748 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004749 VkDescriptorPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004750 VkAllocationCallbacks* local_pAllocator;
4751 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004752 local_pCreateInfo = nullptr;
4753 if (pCreateInfo)
4754 {
4755 local_pCreateInfo = (VkDescriptorPoolCreateInfo*)pool->alloc(sizeof(const VkDescriptorPoolCreateInfo));
4756 deepcopy_VkDescriptorPoolCreateInfo(pool, pCreateInfo, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
4757 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004758 local_pAllocator = nullptr;
4759 if (pAllocator)
4760 {
4761 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4762 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4763 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004764 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004765 countingStream->rewind();
4766 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004767 uint64_t cgen_var_395;
4768 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_395, 1);
4769 countingStream->write((uint64_t*)&cgen_var_395, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004770 marshal_VkDescriptorPoolCreateInfo(countingStream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004771 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004772 uint64_t cgen_var_396 = (uint64_t)(uintptr_t)local_pAllocator;
4773 countingStream->putBe64(cgen_var_396);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004774 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004775 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004776 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004777 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004778 uint64_t cgen_var_397;
4779 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_397, 1);
4780 countingStream->write((uint64_t*)&cgen_var_397, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004781 }
4782 uint32_t packetSize_vkCreateDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4783 countingStream->rewind();
4784 uint32_t opcode_vkCreateDescriptorPool = OP_vkCreateDescriptorPool;
4785 stream->write(&opcode_vkCreateDescriptorPool, sizeof(uint32_t));
4786 stream->write(&packetSize_vkCreateDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004787 uint64_t cgen_var_398;
4788 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_398, 1);
4789 stream->write((uint64_t*)&cgen_var_398, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004790 marshal_VkDescriptorPoolCreateInfo(stream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004791 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004792 uint64_t cgen_var_399 = (uint64_t)(uintptr_t)local_pAllocator;
4793 stream->putBe64(cgen_var_399);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004794 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004795 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004796 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004797 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004798 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004799 uint64_t cgen_var_400;
4800 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_400, 1);
4801 stream->write((uint64_t*)&cgen_var_400, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004802 stream->setHandleMapping(resources->unwrapMapping());
4803 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004804 uint64_t cgen_var_401;
4805 stream->read((uint64_t*)&cgen_var_401, 8);
4806 stream->handleMapping()->mapHandles_u64_VkDescriptorPool(&cgen_var_401, (VkDescriptorPool*)pDescriptorPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004807 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004808 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
4809 stream->read(&vkCreateDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004810 countingStream->clearPool();
4811 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004812 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004813 return vkCreateDescriptorPool_VkResult_return;
4814}
4815
4816void VkEncoder::vkDestroyDescriptorPool(
4817 VkDevice device,
4818 VkDescriptorPool descriptorPool,
4819 const VkAllocationCallbacks* pAllocator)
4820{
4821 auto stream = mImpl->stream();
4822 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004823 auto resources = mImpl->resources();
4824 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004825 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004826 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004827 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004828 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004829 local_device = device;
4830 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004831 local_pAllocator = nullptr;
4832 if (pAllocator)
4833 {
4834 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4835 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4836 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004837 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004838 countingStream->rewind();
4839 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004840 uint64_t cgen_var_402;
4841 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_402, 1);
4842 countingStream->write((uint64_t*)&cgen_var_402, 1 * 8);
4843 uint64_t cgen_var_403;
4844 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_403, 1);
4845 countingStream->write((uint64_t*)&cgen_var_403, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004846 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004847 uint64_t cgen_var_404 = (uint64_t)(uintptr_t)local_pAllocator;
4848 countingStream->putBe64(cgen_var_404);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004849 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004850 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004851 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004852 }
4853 }
4854 uint32_t packetSize_vkDestroyDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4855 countingStream->rewind();
4856 uint32_t opcode_vkDestroyDescriptorPool = OP_vkDestroyDescriptorPool;
4857 stream->write(&opcode_vkDestroyDescriptorPool, sizeof(uint32_t));
4858 stream->write(&packetSize_vkDestroyDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004859 uint64_t cgen_var_405;
4860 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_405, 1);
4861 stream->write((uint64_t*)&cgen_var_405, 1 * 8);
4862 uint64_t cgen_var_406;
4863 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_406, 1);
4864 stream->write((uint64_t*)&cgen_var_406, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004865 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004866 uint64_t cgen_var_407 = (uint64_t)(uintptr_t)local_pAllocator;
4867 stream->putBe64(cgen_var_407);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004868 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004869 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004870 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004871 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004872 resources->destroyMapping()->mapHandles_VkDescriptorPool((VkDescriptorPool*)&descriptorPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004873}
4874
4875VkResult VkEncoder::vkResetDescriptorPool(
4876 VkDevice device,
4877 VkDescriptorPool descriptorPool,
4878 VkDescriptorPoolResetFlags flags)
4879{
4880 auto stream = mImpl->stream();
4881 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004882 auto resources = mImpl->resources();
4883 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004884 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004885 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004886 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004887 VkDescriptorPoolResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004888 local_device = device;
4889 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004890 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004891 countingStream->rewind();
4892 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004893 uint64_t cgen_var_408;
4894 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_408, 1);
4895 countingStream->write((uint64_t*)&cgen_var_408, 1 * 8);
4896 uint64_t cgen_var_409;
4897 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_409, 1);
4898 countingStream->write((uint64_t*)&cgen_var_409, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004899 countingStream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004900 }
4901 uint32_t packetSize_vkResetDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4902 countingStream->rewind();
4903 uint32_t opcode_vkResetDescriptorPool = OP_vkResetDescriptorPool;
4904 stream->write(&opcode_vkResetDescriptorPool, sizeof(uint32_t));
4905 stream->write(&packetSize_vkResetDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004906 uint64_t cgen_var_410;
4907 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_410, 1);
4908 stream->write((uint64_t*)&cgen_var_410, 1 * 8);
4909 uint64_t cgen_var_411;
4910 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_411, 1);
4911 stream->write((uint64_t*)&cgen_var_411, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004912 stream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004913 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
4914 stream->read(&vkResetDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004915 countingStream->clearPool();
4916 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004917 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004918 return vkResetDescriptorPool_VkResult_return;
4919}
4920
4921VkResult VkEncoder::vkAllocateDescriptorSets(
4922 VkDevice device,
4923 const VkDescriptorSetAllocateInfo* pAllocateInfo,
4924 VkDescriptorSet* pDescriptorSets)
4925{
4926 auto stream = mImpl->stream();
4927 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004928 auto resources = mImpl->resources();
4929 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004930 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004931 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004932 VkDescriptorSetAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004933 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004934 local_pAllocateInfo = nullptr;
4935 if (pAllocateInfo)
4936 {
4937 local_pAllocateInfo = (VkDescriptorSetAllocateInfo*)pool->alloc(sizeof(const VkDescriptorSetAllocateInfo));
4938 deepcopy_VkDescriptorSetAllocateInfo(pool, pAllocateInfo, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
4939 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004940 countingStream->rewind();
4941 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004942 uint64_t cgen_var_412;
4943 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_412, 1);
4944 countingStream->write((uint64_t*)&cgen_var_412, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004945 marshal_VkDescriptorSetAllocateInfo(countingStream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004946 if (pAllocateInfo->descriptorSetCount)
4947 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004948 uint64_t* cgen_var_413;
4949 countingStream->alloc((void**)&cgen_var_413, pAllocateInfo->descriptorSetCount * 8);
4950 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_413, pAllocateInfo->descriptorSetCount);
4951 countingStream->write((uint64_t*)cgen_var_413, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004952 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004953 }
4954 uint32_t packetSize_vkAllocateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4955 countingStream->rewind();
4956 uint32_t opcode_vkAllocateDescriptorSets = OP_vkAllocateDescriptorSets;
4957 stream->write(&opcode_vkAllocateDescriptorSets, sizeof(uint32_t));
4958 stream->write(&packetSize_vkAllocateDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004959 uint64_t cgen_var_414;
4960 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_414, 1);
4961 stream->write((uint64_t*)&cgen_var_414, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004962 marshal_VkDescriptorSetAllocateInfo(stream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08004963 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004964 if (pAllocateInfo->descriptorSetCount)
4965 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004966 uint64_t* cgen_var_415;
4967 stream->alloc((void**)&cgen_var_415, pAllocateInfo->descriptorSetCount * 8);
4968 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_415, pAllocateInfo->descriptorSetCount);
4969 stream->write((uint64_t*)cgen_var_415, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004970 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004971 stream->setHandleMapping(resources->unwrapMapping());
4972 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004973 if (pAllocateInfo->descriptorSetCount)
4974 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004975 uint64_t* cgen_var_416;
4976 stream->alloc((void**)&cgen_var_416, pAllocateInfo->descriptorSetCount * 8);
4977 stream->read((uint64_t*)cgen_var_416, pAllocateInfo->descriptorSetCount * 8);
4978 stream->handleMapping()->mapHandles_u64_VkDescriptorSet(cgen_var_416, (VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004979 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004980 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004981 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
4982 stream->read(&vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004983 countingStream->clearPool();
4984 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004985 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004986 return vkAllocateDescriptorSets_VkResult_return;
4987}
4988
4989VkResult VkEncoder::vkFreeDescriptorSets(
4990 VkDevice device,
4991 VkDescriptorPool descriptorPool,
4992 uint32_t descriptorSetCount,
4993 const VkDescriptorSet* pDescriptorSets)
4994{
4995 auto stream = mImpl->stream();
4996 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004997 auto resources = mImpl->resources();
4998 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004999 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005000 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005001 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005002 uint32_t local_descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005003 VkDescriptorSet* local_pDescriptorSets;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005004 local_device = device;
5005 local_descriptorPool = descriptorPool;
5006 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005007 local_pDescriptorSets = nullptr;
5008 if (pDescriptorSets)
5009 {
5010 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
5011 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005012 countingStream->rewind();
5013 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005014 uint64_t cgen_var_417;
5015 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_417, 1);
5016 countingStream->write((uint64_t*)&cgen_var_417, 1 * 8);
5017 uint64_t cgen_var_418;
5018 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_418, 1);
5019 countingStream->write((uint64_t*)&cgen_var_418, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005020 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005021 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005022 uint64_t cgen_var_419 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5023 countingStream->putBe64(cgen_var_419);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005024 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005025 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005026 if (((descriptorSetCount)))
5027 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005028 uint64_t* cgen_var_420;
5029 countingStream->alloc((void**)&cgen_var_420, ((descriptorSetCount)) * 8);
5030 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_420, ((descriptorSetCount)));
5031 countingStream->write((uint64_t*)cgen_var_420, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005032 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005033 }
5034 }
5035 uint32_t packetSize_vkFreeDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5036 countingStream->rewind();
5037 uint32_t opcode_vkFreeDescriptorSets = OP_vkFreeDescriptorSets;
5038 stream->write(&opcode_vkFreeDescriptorSets, sizeof(uint32_t));
5039 stream->write(&packetSize_vkFreeDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005040 uint64_t cgen_var_421;
5041 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_421, 1);
5042 stream->write((uint64_t*)&cgen_var_421, 1 * 8);
5043 uint64_t cgen_var_422;
5044 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_422, 1);
5045 stream->write((uint64_t*)&cgen_var_422, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005046 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005047 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005048 uint64_t cgen_var_423 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5049 stream->putBe64(cgen_var_423);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005050 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005051 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005052 if (((descriptorSetCount)))
5053 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005054 uint64_t* cgen_var_424;
5055 stream->alloc((void**)&cgen_var_424, ((descriptorSetCount)) * 8);
5056 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_424, ((descriptorSetCount)));
5057 stream->write((uint64_t*)cgen_var_424, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005058 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005059 }
5060 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
5061 stream->read(&vkFreeDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005062 countingStream->clearPool();
5063 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005064 pool->freeAll();
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08005065 if (pDescriptorSets)
5066 {
5067 resources->destroyMapping()->mapHandles_VkDescriptorSet((VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)));
5068 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005069 return vkFreeDescriptorSets_VkResult_return;
5070}
5071
5072void VkEncoder::vkUpdateDescriptorSets(
5073 VkDevice device,
5074 uint32_t descriptorWriteCount,
5075 const VkWriteDescriptorSet* pDescriptorWrites,
5076 uint32_t descriptorCopyCount,
5077 const VkCopyDescriptorSet* pDescriptorCopies)
5078{
5079 auto stream = mImpl->stream();
5080 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005081 auto resources = mImpl->resources();
5082 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005083 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005084 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005085 uint32_t local_descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005086 VkWriteDescriptorSet* local_pDescriptorWrites;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005087 uint32_t local_descriptorCopyCount;
5088 VkCopyDescriptorSet* local_pDescriptorCopies;
5089 local_device = device;
5090 local_descriptorWriteCount = descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005091 local_pDescriptorWrites = nullptr;
5092 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005093 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005094 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005095 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5096 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005097 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005098 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005099 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005100 local_descriptorCopyCount = descriptorCopyCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005101 local_pDescriptorCopies = nullptr;
5102 if (pDescriptorCopies)
5103 {
5104 local_pDescriptorCopies = (VkCopyDescriptorSet*)pool->alloc(((descriptorCopyCount)) * sizeof(const VkCopyDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005105 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5106 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005107 deepcopy_VkCopyDescriptorSet(pool, pDescriptorCopies + i, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
5108 }
5109 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005110 countingStream->rewind();
5111 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005112 uint64_t cgen_var_425;
5113 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_425, 1);
5114 countingStream->write((uint64_t*)&cgen_var_425, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005115 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
5116 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5117 {
5118 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
5119 }
5120 countingStream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
5121 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5122 {
5123 marshal_VkCopyDescriptorSet(countingStream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005124 }
5125 }
5126 uint32_t packetSize_vkUpdateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5127 countingStream->rewind();
5128 uint32_t opcode_vkUpdateDescriptorSets = OP_vkUpdateDescriptorSets;
5129 stream->write(&opcode_vkUpdateDescriptorSets, sizeof(uint32_t));
5130 stream->write(&packetSize_vkUpdateDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005131 uint64_t cgen_var_426;
5132 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_426, 1);
5133 stream->write((uint64_t*)&cgen_var_426, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005134 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005135 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5136 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005137 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005138 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005139 stream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005140 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5141 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005142 marshal_VkCopyDescriptorSet(stream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005143 }
5144}
5145
5146VkResult VkEncoder::vkCreateFramebuffer(
5147 VkDevice device,
5148 const VkFramebufferCreateInfo* pCreateInfo,
5149 const VkAllocationCallbacks* pAllocator,
5150 VkFramebuffer* pFramebuffer)
5151{
5152 auto stream = mImpl->stream();
5153 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005154 auto resources = mImpl->resources();
5155 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005156 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005157 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005158 VkFramebufferCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005159 VkAllocationCallbacks* local_pAllocator;
5160 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005161 local_pCreateInfo = nullptr;
5162 if (pCreateInfo)
5163 {
5164 local_pCreateInfo = (VkFramebufferCreateInfo*)pool->alloc(sizeof(const VkFramebufferCreateInfo));
5165 deepcopy_VkFramebufferCreateInfo(pool, pCreateInfo, (VkFramebufferCreateInfo*)(local_pCreateInfo));
5166 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005167 local_pAllocator = nullptr;
5168 if (pAllocator)
5169 {
5170 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5171 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5172 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005173 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005174 countingStream->rewind();
5175 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005176 uint64_t cgen_var_427;
5177 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_427, 1);
5178 countingStream->write((uint64_t*)&cgen_var_427, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005179 marshal_VkFramebufferCreateInfo(countingStream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005180 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005181 uint64_t cgen_var_428 = (uint64_t)(uintptr_t)local_pAllocator;
5182 countingStream->putBe64(cgen_var_428);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005183 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005184 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005185 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005186 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005187 uint64_t cgen_var_429;
5188 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_429, 1);
5189 countingStream->write((uint64_t*)&cgen_var_429, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005190 }
5191 uint32_t packetSize_vkCreateFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5192 countingStream->rewind();
5193 uint32_t opcode_vkCreateFramebuffer = OP_vkCreateFramebuffer;
5194 stream->write(&opcode_vkCreateFramebuffer, sizeof(uint32_t));
5195 stream->write(&packetSize_vkCreateFramebuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005196 uint64_t cgen_var_430;
5197 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_430, 1);
5198 stream->write((uint64_t*)&cgen_var_430, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005199 marshal_VkFramebufferCreateInfo(stream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005200 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005201 uint64_t cgen_var_431 = (uint64_t)(uintptr_t)local_pAllocator;
5202 stream->putBe64(cgen_var_431);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005203 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005204 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005205 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005206 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005207 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005208 uint64_t cgen_var_432;
5209 stream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_432, 1);
5210 stream->write((uint64_t*)&cgen_var_432, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005211 stream->setHandleMapping(resources->unwrapMapping());
5212 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005213 uint64_t cgen_var_433;
5214 stream->read((uint64_t*)&cgen_var_433, 8);
5215 stream->handleMapping()->mapHandles_u64_VkFramebuffer(&cgen_var_433, (VkFramebuffer*)pFramebuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005216 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005217 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
5218 stream->read(&vkCreateFramebuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005219 countingStream->clearPool();
5220 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005221 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005222 return vkCreateFramebuffer_VkResult_return;
5223}
5224
5225void VkEncoder::vkDestroyFramebuffer(
5226 VkDevice device,
5227 VkFramebuffer framebuffer,
5228 const VkAllocationCallbacks* pAllocator)
5229{
5230 auto stream = mImpl->stream();
5231 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005232 auto resources = mImpl->resources();
5233 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005234 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005235 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005236 VkFramebuffer local_framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005237 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005238 local_device = device;
5239 local_framebuffer = framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005240 local_pAllocator = nullptr;
5241 if (pAllocator)
5242 {
5243 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5244 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5245 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005246 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005247 countingStream->rewind();
5248 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005249 uint64_t cgen_var_434;
5250 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_434, 1);
5251 countingStream->write((uint64_t*)&cgen_var_434, 1 * 8);
5252 uint64_t cgen_var_435;
5253 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_435, 1);
5254 countingStream->write((uint64_t*)&cgen_var_435, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005255 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005256 uint64_t cgen_var_436 = (uint64_t)(uintptr_t)local_pAllocator;
5257 countingStream->putBe64(cgen_var_436);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005258 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005259 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005260 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005261 }
5262 }
5263 uint32_t packetSize_vkDestroyFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5264 countingStream->rewind();
5265 uint32_t opcode_vkDestroyFramebuffer = OP_vkDestroyFramebuffer;
5266 stream->write(&opcode_vkDestroyFramebuffer, sizeof(uint32_t));
5267 stream->write(&packetSize_vkDestroyFramebuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005268 uint64_t cgen_var_437;
5269 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_437, 1);
5270 stream->write((uint64_t*)&cgen_var_437, 1 * 8);
5271 uint64_t cgen_var_438;
5272 stream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_438, 1);
5273 stream->write((uint64_t*)&cgen_var_438, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005274 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005275 uint64_t cgen_var_439 = (uint64_t)(uintptr_t)local_pAllocator;
5276 stream->putBe64(cgen_var_439);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005277 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005278 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005279 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005280 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005281 resources->destroyMapping()->mapHandles_VkFramebuffer((VkFramebuffer*)&framebuffer);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005282}
5283
5284VkResult VkEncoder::vkCreateRenderPass(
5285 VkDevice device,
5286 const VkRenderPassCreateInfo* pCreateInfo,
5287 const VkAllocationCallbacks* pAllocator,
5288 VkRenderPass* pRenderPass)
5289{
5290 auto stream = mImpl->stream();
5291 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005292 auto resources = mImpl->resources();
5293 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005294 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005295 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005296 VkRenderPassCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005297 VkAllocationCallbacks* local_pAllocator;
5298 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005299 local_pCreateInfo = nullptr;
5300 if (pCreateInfo)
5301 {
5302 local_pCreateInfo = (VkRenderPassCreateInfo*)pool->alloc(sizeof(const VkRenderPassCreateInfo));
5303 deepcopy_VkRenderPassCreateInfo(pool, pCreateInfo, (VkRenderPassCreateInfo*)(local_pCreateInfo));
5304 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005305 local_pAllocator = nullptr;
5306 if (pAllocator)
5307 {
5308 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5309 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5310 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005311 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005312 countingStream->rewind();
5313 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005314 uint64_t cgen_var_440;
5315 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_440, 1);
5316 countingStream->write((uint64_t*)&cgen_var_440, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005317 marshal_VkRenderPassCreateInfo(countingStream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005318 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005319 uint64_t cgen_var_441 = (uint64_t)(uintptr_t)local_pAllocator;
5320 countingStream->putBe64(cgen_var_441);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005321 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005322 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005323 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005324 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005325 uint64_t cgen_var_442;
5326 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_442, 1);
5327 countingStream->write((uint64_t*)&cgen_var_442, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005328 }
5329 uint32_t packetSize_vkCreateRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5330 countingStream->rewind();
5331 uint32_t opcode_vkCreateRenderPass = OP_vkCreateRenderPass;
5332 stream->write(&opcode_vkCreateRenderPass, sizeof(uint32_t));
5333 stream->write(&packetSize_vkCreateRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005334 uint64_t cgen_var_443;
5335 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_443, 1);
5336 stream->write((uint64_t*)&cgen_var_443, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005337 marshal_VkRenderPassCreateInfo(stream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005338 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005339 uint64_t cgen_var_444 = (uint64_t)(uintptr_t)local_pAllocator;
5340 stream->putBe64(cgen_var_444);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005341 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005342 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005343 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005344 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005345 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005346 uint64_t cgen_var_445;
5347 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_445, 1);
5348 stream->write((uint64_t*)&cgen_var_445, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005349 stream->setHandleMapping(resources->unwrapMapping());
5350 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005351 uint64_t cgen_var_446;
5352 stream->read((uint64_t*)&cgen_var_446, 8);
5353 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_446, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005354 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005355 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
5356 stream->read(&vkCreateRenderPass_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005357 countingStream->clearPool();
5358 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005359 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005360 return vkCreateRenderPass_VkResult_return;
5361}
5362
5363void VkEncoder::vkDestroyRenderPass(
5364 VkDevice device,
5365 VkRenderPass renderPass,
5366 const VkAllocationCallbacks* pAllocator)
5367{
5368 auto stream = mImpl->stream();
5369 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005370 auto resources = mImpl->resources();
5371 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005372 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005373 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005374 VkRenderPass local_renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005375 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005376 local_device = device;
5377 local_renderPass = renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005378 local_pAllocator = nullptr;
5379 if (pAllocator)
5380 {
5381 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5382 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5383 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005384 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005385 countingStream->rewind();
5386 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005387 uint64_t cgen_var_447;
5388 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_447, 1);
5389 countingStream->write((uint64_t*)&cgen_var_447, 1 * 8);
5390 uint64_t cgen_var_448;
5391 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_448, 1);
5392 countingStream->write((uint64_t*)&cgen_var_448, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005393 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005394 uint64_t cgen_var_449 = (uint64_t)(uintptr_t)local_pAllocator;
5395 countingStream->putBe64(cgen_var_449);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005396 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005397 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005398 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005399 }
5400 }
5401 uint32_t packetSize_vkDestroyRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5402 countingStream->rewind();
5403 uint32_t opcode_vkDestroyRenderPass = OP_vkDestroyRenderPass;
5404 stream->write(&opcode_vkDestroyRenderPass, sizeof(uint32_t));
5405 stream->write(&packetSize_vkDestroyRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005406 uint64_t cgen_var_450;
5407 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_450, 1);
5408 stream->write((uint64_t*)&cgen_var_450, 1 * 8);
5409 uint64_t cgen_var_451;
5410 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_451, 1);
5411 stream->write((uint64_t*)&cgen_var_451, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005412 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005413 uint64_t cgen_var_452 = (uint64_t)(uintptr_t)local_pAllocator;
5414 stream->putBe64(cgen_var_452);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005415 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005416 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005417 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005418 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005419 resources->destroyMapping()->mapHandles_VkRenderPass((VkRenderPass*)&renderPass);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005420}
5421
5422void VkEncoder::vkGetRenderAreaGranularity(
5423 VkDevice device,
5424 VkRenderPass renderPass,
5425 VkExtent2D* pGranularity)
5426{
5427 auto stream = mImpl->stream();
5428 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005429 auto resources = mImpl->resources();
5430 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005431 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005432 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005433 VkRenderPass local_renderPass;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005434 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005435 local_renderPass = renderPass;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005436 countingStream->rewind();
5437 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005438 uint64_t cgen_var_453;
5439 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_453, 1);
5440 countingStream->write((uint64_t*)&cgen_var_453, 1 * 8);
5441 uint64_t cgen_var_454;
5442 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_454, 1);
5443 countingStream->write((uint64_t*)&cgen_var_454, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005444 marshal_VkExtent2D(countingStream, (VkExtent2D*)(pGranularity));
5445 }
5446 uint32_t packetSize_vkGetRenderAreaGranularity = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5447 countingStream->rewind();
5448 uint32_t opcode_vkGetRenderAreaGranularity = OP_vkGetRenderAreaGranularity;
5449 stream->write(&opcode_vkGetRenderAreaGranularity, sizeof(uint32_t));
5450 stream->write(&packetSize_vkGetRenderAreaGranularity, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005451 uint64_t cgen_var_455;
5452 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_455, 1);
5453 stream->write((uint64_t*)&cgen_var_455, 1 * 8);
5454 uint64_t cgen_var_456;
5455 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_456, 1);
5456 stream->write((uint64_t*)&cgen_var_456, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005457 marshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
5458 unmarshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
5459}
5460
5461VkResult VkEncoder::vkCreateCommandPool(
5462 VkDevice device,
5463 const VkCommandPoolCreateInfo* pCreateInfo,
5464 const VkAllocationCallbacks* pAllocator,
5465 VkCommandPool* pCommandPool)
5466{
5467 auto stream = mImpl->stream();
5468 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005469 auto resources = mImpl->resources();
5470 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005471 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005472 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005473 VkCommandPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005474 VkAllocationCallbacks* local_pAllocator;
5475 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005476 local_pCreateInfo = nullptr;
5477 if (pCreateInfo)
5478 {
5479 local_pCreateInfo = (VkCommandPoolCreateInfo*)pool->alloc(sizeof(const VkCommandPoolCreateInfo));
5480 deepcopy_VkCommandPoolCreateInfo(pool, pCreateInfo, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
5481 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005482 local_pAllocator = nullptr;
5483 if (pAllocator)
5484 {
5485 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5486 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5487 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005488 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005489 countingStream->rewind();
5490 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005491 uint64_t cgen_var_457;
5492 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_457, 1);
5493 countingStream->write((uint64_t*)&cgen_var_457, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005494 marshal_VkCommandPoolCreateInfo(countingStream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005495 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005496 uint64_t cgen_var_458 = (uint64_t)(uintptr_t)local_pAllocator;
5497 countingStream->putBe64(cgen_var_458);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005498 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005499 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005500 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005501 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005502 uint64_t cgen_var_459;
5503 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_459, 1);
5504 countingStream->write((uint64_t*)&cgen_var_459, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005505 }
5506 uint32_t packetSize_vkCreateCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5507 countingStream->rewind();
5508 uint32_t opcode_vkCreateCommandPool = OP_vkCreateCommandPool;
5509 stream->write(&opcode_vkCreateCommandPool, sizeof(uint32_t));
5510 stream->write(&packetSize_vkCreateCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005511 uint64_t cgen_var_460;
5512 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_460, 1);
5513 stream->write((uint64_t*)&cgen_var_460, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005514 marshal_VkCommandPoolCreateInfo(stream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005515 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005516 uint64_t cgen_var_461 = (uint64_t)(uintptr_t)local_pAllocator;
5517 stream->putBe64(cgen_var_461);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005518 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005519 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005520 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005521 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005522 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005523 uint64_t cgen_var_462;
5524 stream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_462, 1);
5525 stream->write((uint64_t*)&cgen_var_462, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005526 stream->setHandleMapping(resources->unwrapMapping());
5527 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005528 uint64_t cgen_var_463;
5529 stream->read((uint64_t*)&cgen_var_463, 8);
5530 stream->handleMapping()->mapHandles_u64_VkCommandPool(&cgen_var_463, (VkCommandPool*)pCommandPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005531 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005532 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
5533 stream->read(&vkCreateCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005534 countingStream->clearPool();
5535 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005536 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005537 return vkCreateCommandPool_VkResult_return;
5538}
5539
5540void VkEncoder::vkDestroyCommandPool(
5541 VkDevice device,
5542 VkCommandPool commandPool,
5543 const VkAllocationCallbacks* pAllocator)
5544{
5545 auto stream = mImpl->stream();
5546 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005547 auto resources = mImpl->resources();
5548 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005549 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005550 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005551 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005552 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005553 local_device = device;
5554 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005555 local_pAllocator = nullptr;
5556 if (pAllocator)
5557 {
5558 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5559 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5560 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005561 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005562 countingStream->rewind();
5563 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005564 uint64_t cgen_var_464;
5565 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_464, 1);
5566 countingStream->write((uint64_t*)&cgen_var_464, 1 * 8);
5567 uint64_t cgen_var_465;
5568 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_465, 1);
5569 countingStream->write((uint64_t*)&cgen_var_465, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005570 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005571 uint64_t cgen_var_466 = (uint64_t)(uintptr_t)local_pAllocator;
5572 countingStream->putBe64(cgen_var_466);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005573 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005574 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005575 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005576 }
5577 }
5578 uint32_t packetSize_vkDestroyCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5579 countingStream->rewind();
5580 uint32_t opcode_vkDestroyCommandPool = OP_vkDestroyCommandPool;
5581 stream->write(&opcode_vkDestroyCommandPool, sizeof(uint32_t));
5582 stream->write(&packetSize_vkDestroyCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005583 uint64_t cgen_var_467;
5584 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_467, 1);
5585 stream->write((uint64_t*)&cgen_var_467, 1 * 8);
5586 uint64_t cgen_var_468;
5587 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_468, 1);
5588 stream->write((uint64_t*)&cgen_var_468, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005589 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005590 uint64_t cgen_var_469 = (uint64_t)(uintptr_t)local_pAllocator;
5591 stream->putBe64(cgen_var_469);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005592 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005593 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005594 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005595 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005596 resources->destroyMapping()->mapHandles_VkCommandPool((VkCommandPool*)&commandPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005597}
5598
5599VkResult VkEncoder::vkResetCommandPool(
5600 VkDevice device,
5601 VkCommandPool commandPool,
5602 VkCommandPoolResetFlags flags)
5603{
5604 auto stream = mImpl->stream();
5605 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005606 auto resources = mImpl->resources();
5607 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005608 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005609 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005610 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005611 VkCommandPoolResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005612 local_device = device;
5613 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005614 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005615 countingStream->rewind();
5616 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005617 uint64_t cgen_var_470;
5618 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_470, 1);
5619 countingStream->write((uint64_t*)&cgen_var_470, 1 * 8);
5620 uint64_t cgen_var_471;
5621 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_471, 1);
5622 countingStream->write((uint64_t*)&cgen_var_471, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005623 countingStream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005624 }
5625 uint32_t packetSize_vkResetCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5626 countingStream->rewind();
5627 uint32_t opcode_vkResetCommandPool = OP_vkResetCommandPool;
5628 stream->write(&opcode_vkResetCommandPool, sizeof(uint32_t));
5629 stream->write(&packetSize_vkResetCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005630 uint64_t cgen_var_472;
5631 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_472, 1);
5632 stream->write((uint64_t*)&cgen_var_472, 1 * 8);
5633 uint64_t cgen_var_473;
5634 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_473, 1);
5635 stream->write((uint64_t*)&cgen_var_473, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005636 stream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005637 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
5638 stream->read(&vkResetCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005639 countingStream->clearPool();
5640 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005641 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005642 return vkResetCommandPool_VkResult_return;
5643}
5644
5645VkResult VkEncoder::vkAllocateCommandBuffers(
5646 VkDevice device,
5647 const VkCommandBufferAllocateInfo* pAllocateInfo,
5648 VkCommandBuffer* pCommandBuffers)
5649{
5650 auto stream = mImpl->stream();
5651 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005652 auto resources = mImpl->resources();
5653 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005654 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005655 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005656 VkCommandBufferAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005657 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005658 local_pAllocateInfo = nullptr;
5659 if (pAllocateInfo)
5660 {
5661 local_pAllocateInfo = (VkCommandBufferAllocateInfo*)pool->alloc(sizeof(const VkCommandBufferAllocateInfo));
5662 deepcopy_VkCommandBufferAllocateInfo(pool, pAllocateInfo, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
5663 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005664 countingStream->rewind();
5665 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005666 uint64_t cgen_var_474;
5667 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_474, 1);
5668 countingStream->write((uint64_t*)&cgen_var_474, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005669 marshal_VkCommandBufferAllocateInfo(countingStream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005670 if (pAllocateInfo->commandBufferCount)
5671 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005672 uint64_t* cgen_var_475;
5673 countingStream->alloc((void**)&cgen_var_475, pAllocateInfo->commandBufferCount * 8);
5674 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_475, pAllocateInfo->commandBufferCount);
5675 countingStream->write((uint64_t*)cgen_var_475, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005676 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005677 }
5678 uint32_t packetSize_vkAllocateCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5679 countingStream->rewind();
5680 uint32_t opcode_vkAllocateCommandBuffers = OP_vkAllocateCommandBuffers;
5681 stream->write(&opcode_vkAllocateCommandBuffers, sizeof(uint32_t));
5682 stream->write(&packetSize_vkAllocateCommandBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005683 uint64_t cgen_var_476;
5684 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_476, 1);
5685 stream->write((uint64_t*)&cgen_var_476, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005686 marshal_VkCommandBufferAllocateInfo(stream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08005687 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08005688 if (pAllocateInfo->commandBufferCount)
5689 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005690 uint64_t* cgen_var_477;
5691 stream->alloc((void**)&cgen_var_477, pAllocateInfo->commandBufferCount * 8);
5692 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_477, pAllocateInfo->commandBufferCount);
5693 stream->write((uint64_t*)cgen_var_477, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005694 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005695 stream->setHandleMapping(resources->unwrapMapping());
5696 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08005697 if (pAllocateInfo->commandBufferCount)
5698 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005699 uint64_t* cgen_var_478;
5700 stream->alloc((void**)&cgen_var_478, pAllocateInfo->commandBufferCount * 8);
5701 stream->read((uint64_t*)cgen_var_478, pAllocateInfo->commandBufferCount * 8);
5702 stream->handleMapping()->mapHandles_u64_VkCommandBuffer(cgen_var_478, (VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005703 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005704 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005705 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
5706 stream->read(&vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005707 countingStream->clearPool();
5708 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005709 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005710 return vkAllocateCommandBuffers_VkResult_return;
5711}
5712
5713void VkEncoder::vkFreeCommandBuffers(
5714 VkDevice device,
5715 VkCommandPool commandPool,
5716 uint32_t commandBufferCount,
5717 const VkCommandBuffer* pCommandBuffers)
5718{
5719 auto stream = mImpl->stream();
5720 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005721 auto resources = mImpl->resources();
5722 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005723 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005724 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005725 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005726 uint32_t local_commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005727 VkCommandBuffer* local_pCommandBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005728 local_device = device;
5729 local_commandPool = commandPool;
5730 local_commandBufferCount = commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005731 local_pCommandBuffers = nullptr;
5732 if (pCommandBuffers)
5733 {
5734 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
5735 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005736 countingStream->rewind();
5737 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005738 uint64_t cgen_var_479;
5739 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_479, 1);
5740 countingStream->write((uint64_t*)&cgen_var_479, 1 * 8);
5741 uint64_t cgen_var_480;
5742 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_480, 1);
5743 countingStream->write((uint64_t*)&cgen_var_480, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005744 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005745 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005746 uint64_t cgen_var_481 = (uint64_t)(uintptr_t)local_pCommandBuffers;
5747 countingStream->putBe64(cgen_var_481);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005748 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005749 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005750 if (((commandBufferCount)))
5751 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005752 uint64_t* cgen_var_482;
5753 countingStream->alloc((void**)&cgen_var_482, ((commandBufferCount)) * 8);
5754 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_482, ((commandBufferCount)));
5755 countingStream->write((uint64_t*)cgen_var_482, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005756 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005757 }
5758 }
5759 uint32_t packetSize_vkFreeCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5760 countingStream->rewind();
5761 uint32_t opcode_vkFreeCommandBuffers = OP_vkFreeCommandBuffers;
5762 stream->write(&opcode_vkFreeCommandBuffers, sizeof(uint32_t));
5763 stream->write(&packetSize_vkFreeCommandBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005764 uint64_t cgen_var_483;
5765 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_483, 1);
5766 stream->write((uint64_t*)&cgen_var_483, 1 * 8);
5767 uint64_t cgen_var_484;
5768 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_484, 1);
5769 stream->write((uint64_t*)&cgen_var_484, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005770 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005771 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005772 uint64_t cgen_var_485 = (uint64_t)(uintptr_t)local_pCommandBuffers;
5773 stream->putBe64(cgen_var_485);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005774 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005775 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005776 if (((commandBufferCount)))
5777 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005778 uint64_t* cgen_var_486;
5779 stream->alloc((void**)&cgen_var_486, ((commandBufferCount)) * 8);
5780 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_486, ((commandBufferCount)));
5781 stream->write((uint64_t*)cgen_var_486, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005782 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005783 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005784 if (pCommandBuffers)
5785 {
5786 resources->destroyMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)));
5787 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005788}
5789
5790VkResult VkEncoder::vkBeginCommandBuffer(
5791 VkCommandBuffer commandBuffer,
5792 const VkCommandBufferBeginInfo* pBeginInfo)
5793{
5794 auto stream = mImpl->stream();
5795 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005796 auto resources = mImpl->resources();
5797 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005798 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005799 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005800 VkCommandBufferBeginInfo* local_pBeginInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005801 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005802 local_pBeginInfo = nullptr;
5803 if (pBeginInfo)
5804 {
5805 local_pBeginInfo = (VkCommandBufferBeginInfo*)pool->alloc(sizeof(const VkCommandBufferBeginInfo));
5806 deepcopy_VkCommandBufferBeginInfo(pool, pBeginInfo, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
5807 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005808 countingStream->rewind();
5809 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005810 uint64_t cgen_var_487;
5811 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_487, 1);
5812 countingStream->write((uint64_t*)&cgen_var_487, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005813 marshal_VkCommandBufferBeginInfo(countingStream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005814 }
5815 uint32_t packetSize_vkBeginCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5816 countingStream->rewind();
5817 uint32_t opcode_vkBeginCommandBuffer = OP_vkBeginCommandBuffer;
5818 stream->write(&opcode_vkBeginCommandBuffer, sizeof(uint32_t));
5819 stream->write(&packetSize_vkBeginCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005820 uint64_t cgen_var_488;
5821 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_488, 1);
5822 stream->write((uint64_t*)&cgen_var_488, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005823 marshal_VkCommandBufferBeginInfo(stream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005824 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
5825 stream->read(&vkBeginCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005826 countingStream->clearPool();
5827 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005828 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005829 return vkBeginCommandBuffer_VkResult_return;
5830}
5831
5832VkResult VkEncoder::vkEndCommandBuffer(
5833 VkCommandBuffer commandBuffer)
5834{
5835 auto stream = mImpl->stream();
5836 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005837 auto resources = mImpl->resources();
5838 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005839 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005840 VkCommandBuffer local_commandBuffer;
5841 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005842 countingStream->rewind();
5843 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005844 uint64_t cgen_var_489;
5845 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_489, 1);
5846 countingStream->write((uint64_t*)&cgen_var_489, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005847 }
5848 uint32_t packetSize_vkEndCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5849 countingStream->rewind();
5850 uint32_t opcode_vkEndCommandBuffer = OP_vkEndCommandBuffer;
5851 stream->write(&opcode_vkEndCommandBuffer, sizeof(uint32_t));
5852 stream->write(&packetSize_vkEndCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005853 uint64_t cgen_var_490;
5854 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_490, 1);
5855 stream->write((uint64_t*)&cgen_var_490, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005856 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
5857 stream->read(&vkEndCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005858 countingStream->clearPool();
5859 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005860 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005861 return vkEndCommandBuffer_VkResult_return;
5862}
5863
5864VkResult VkEncoder::vkResetCommandBuffer(
5865 VkCommandBuffer commandBuffer,
5866 VkCommandBufferResetFlags flags)
5867{
5868 auto stream = mImpl->stream();
5869 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005870 auto resources = mImpl->resources();
5871 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005872 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005873 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005874 VkCommandBufferResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005875 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005876 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005877 countingStream->rewind();
5878 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005879 uint64_t cgen_var_491;
5880 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_491, 1);
5881 countingStream->write((uint64_t*)&cgen_var_491, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005882 countingStream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005883 }
5884 uint32_t packetSize_vkResetCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5885 countingStream->rewind();
5886 uint32_t opcode_vkResetCommandBuffer = OP_vkResetCommandBuffer;
5887 stream->write(&opcode_vkResetCommandBuffer, sizeof(uint32_t));
5888 stream->write(&packetSize_vkResetCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005889 uint64_t cgen_var_492;
5890 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_492, 1);
5891 stream->write((uint64_t*)&cgen_var_492, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005892 stream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005893 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
5894 stream->read(&vkResetCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005895 countingStream->clearPool();
5896 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005897 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005898 return vkResetCommandBuffer_VkResult_return;
5899}
5900
5901void VkEncoder::vkCmdBindPipeline(
5902 VkCommandBuffer commandBuffer,
5903 VkPipelineBindPoint pipelineBindPoint,
5904 VkPipeline pipeline)
5905{
5906 auto stream = mImpl->stream();
5907 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005908 auto resources = mImpl->resources();
5909 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005910 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005911 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005912 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005913 VkPipeline local_pipeline;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005914 local_commandBuffer = commandBuffer;
5915 local_pipelineBindPoint = pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005916 local_pipeline = pipeline;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005917 countingStream->rewind();
5918 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005919 uint64_t cgen_var_493;
5920 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_493, 1);
5921 countingStream->write((uint64_t*)&cgen_var_493, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005922 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005923 uint64_t cgen_var_494;
5924 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_494, 1);
5925 countingStream->write((uint64_t*)&cgen_var_494, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005926 }
5927 uint32_t packetSize_vkCmdBindPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5928 countingStream->rewind();
5929 uint32_t opcode_vkCmdBindPipeline = OP_vkCmdBindPipeline;
5930 stream->write(&opcode_vkCmdBindPipeline, sizeof(uint32_t));
5931 stream->write(&packetSize_vkCmdBindPipeline, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005932 uint64_t cgen_var_495;
5933 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_495, 1);
5934 stream->write((uint64_t*)&cgen_var_495, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005935 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005936 uint64_t cgen_var_496;
5937 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_496, 1);
5938 stream->write((uint64_t*)&cgen_var_496, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005939}
5940
5941void VkEncoder::vkCmdSetViewport(
5942 VkCommandBuffer commandBuffer,
5943 uint32_t firstViewport,
5944 uint32_t viewportCount,
5945 const VkViewport* pViewports)
5946{
5947 auto stream = mImpl->stream();
5948 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005949 auto resources = mImpl->resources();
5950 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005951 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005952 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005953 uint32_t local_firstViewport;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005954 uint32_t local_viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005955 VkViewport* local_pViewports;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005956 local_commandBuffer = commandBuffer;
5957 local_firstViewport = firstViewport;
5958 local_viewportCount = viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005959 local_pViewports = nullptr;
5960 if (pViewports)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005961 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005962 local_pViewports = (VkViewport*)pool->alloc(((viewportCount)) * sizeof(const VkViewport));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005963 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
5964 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005965 deepcopy_VkViewport(pool, pViewports + i, (VkViewport*)(local_pViewports + i));
5966 }
5967 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005968 countingStream->rewind();
5969 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005970 uint64_t cgen_var_497;
5971 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_497, 1);
5972 countingStream->write((uint64_t*)&cgen_var_497, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005973 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
5974 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
5975 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
5976 {
5977 marshal_VkViewport(countingStream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005978 }
5979 }
5980 uint32_t packetSize_vkCmdSetViewport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5981 countingStream->rewind();
5982 uint32_t opcode_vkCmdSetViewport = OP_vkCmdSetViewport;
5983 stream->write(&opcode_vkCmdSetViewport, sizeof(uint32_t));
5984 stream->write(&packetSize_vkCmdSetViewport, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005985 uint64_t cgen_var_498;
5986 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_498, 1);
5987 stream->write((uint64_t*)&cgen_var_498, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005988 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
5989 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005990 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
5991 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005992 marshal_VkViewport(stream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005993 }
5994}
5995
5996void VkEncoder::vkCmdSetScissor(
5997 VkCommandBuffer commandBuffer,
5998 uint32_t firstScissor,
5999 uint32_t scissorCount,
6000 const VkRect2D* pScissors)
6001{
6002 auto stream = mImpl->stream();
6003 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006004 auto resources = mImpl->resources();
6005 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006006 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006007 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006008 uint32_t local_firstScissor;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006009 uint32_t local_scissorCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006010 VkRect2D* local_pScissors;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006011 local_commandBuffer = commandBuffer;
6012 local_firstScissor = firstScissor;
6013 local_scissorCount = scissorCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006014 local_pScissors = nullptr;
6015 if (pScissors)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006016 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006017 local_pScissors = (VkRect2D*)pool->alloc(((scissorCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006018 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6019 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006020 deepcopy_VkRect2D(pool, pScissors + i, (VkRect2D*)(local_pScissors + i));
6021 }
6022 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006023 countingStream->rewind();
6024 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006025 uint64_t cgen_var_499;
6026 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_499, 1);
6027 countingStream->write((uint64_t*)&cgen_var_499, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006028 countingStream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
6029 countingStream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
6030 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6031 {
6032 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006033 }
6034 }
6035 uint32_t packetSize_vkCmdSetScissor = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6036 countingStream->rewind();
6037 uint32_t opcode_vkCmdSetScissor = OP_vkCmdSetScissor;
6038 stream->write(&opcode_vkCmdSetScissor, sizeof(uint32_t));
6039 stream->write(&packetSize_vkCmdSetScissor, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006040 uint64_t cgen_var_500;
6041 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_500, 1);
6042 stream->write((uint64_t*)&cgen_var_500, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006043 stream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
6044 stream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006045 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6046 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006047 marshal_VkRect2D(stream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006048 }
6049}
6050
6051void VkEncoder::vkCmdSetLineWidth(
6052 VkCommandBuffer commandBuffer,
6053 float lineWidth)
6054{
6055 auto stream = mImpl->stream();
6056 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006057 auto resources = mImpl->resources();
6058 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006059 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006060 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006061 float local_lineWidth;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006062 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006063 local_lineWidth = lineWidth;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006064 countingStream->rewind();
6065 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006066 uint64_t cgen_var_501;
6067 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_501, 1);
6068 countingStream->write((uint64_t*)&cgen_var_501, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006069 countingStream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006070 }
6071 uint32_t packetSize_vkCmdSetLineWidth = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6072 countingStream->rewind();
6073 uint32_t opcode_vkCmdSetLineWidth = OP_vkCmdSetLineWidth;
6074 stream->write(&opcode_vkCmdSetLineWidth, sizeof(uint32_t));
6075 stream->write(&packetSize_vkCmdSetLineWidth, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006076 uint64_t cgen_var_502;
6077 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_502, 1);
6078 stream->write((uint64_t*)&cgen_var_502, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006079 stream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006080}
6081
6082void VkEncoder::vkCmdSetDepthBias(
6083 VkCommandBuffer commandBuffer,
6084 float depthBiasConstantFactor,
6085 float depthBiasClamp,
6086 float depthBiasSlopeFactor)
6087{
6088 auto stream = mImpl->stream();
6089 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006090 auto resources = mImpl->resources();
6091 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006092 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006093 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006094 float local_depthBiasConstantFactor;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006095 float local_depthBiasClamp;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006096 float local_depthBiasSlopeFactor;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006097 local_commandBuffer = commandBuffer;
6098 local_depthBiasConstantFactor = depthBiasConstantFactor;
6099 local_depthBiasClamp = depthBiasClamp;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006100 local_depthBiasSlopeFactor = depthBiasSlopeFactor;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006101 countingStream->rewind();
6102 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006103 uint64_t cgen_var_503;
6104 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_503, 1);
6105 countingStream->write((uint64_t*)&cgen_var_503, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006106 countingStream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
6107 countingStream->write((float*)&local_depthBiasClamp, sizeof(float));
6108 countingStream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006109 }
6110 uint32_t packetSize_vkCmdSetDepthBias = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6111 countingStream->rewind();
6112 uint32_t opcode_vkCmdSetDepthBias = OP_vkCmdSetDepthBias;
6113 stream->write(&opcode_vkCmdSetDepthBias, sizeof(uint32_t));
6114 stream->write(&packetSize_vkCmdSetDepthBias, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006115 uint64_t cgen_var_504;
6116 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_504, 1);
6117 stream->write((uint64_t*)&cgen_var_504, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006118 stream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
6119 stream->write((float*)&local_depthBiasClamp, sizeof(float));
6120 stream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006121}
6122
6123void VkEncoder::vkCmdSetBlendConstants(
6124 VkCommandBuffer commandBuffer,
6125 const float blendConstants)
6126{
6127 auto stream = mImpl->stream();
6128 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006129 auto resources = mImpl->resources();
6130 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006131 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006132 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006133 float local_blendConstants[4];
Lingfeng Yang9666b852018-11-13 23:09:59 -08006134 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006135 memcpy(&local_blendConstants, &blendConstants, 4 * sizeof(const float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006136 countingStream->rewind();
6137 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006138 uint64_t cgen_var_505;
6139 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_505, 1);
6140 countingStream->write((uint64_t*)&cgen_var_505, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006141 countingStream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006142 }
6143 uint32_t packetSize_vkCmdSetBlendConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6144 countingStream->rewind();
6145 uint32_t opcode_vkCmdSetBlendConstants = OP_vkCmdSetBlendConstants;
6146 stream->write(&opcode_vkCmdSetBlendConstants, sizeof(uint32_t));
6147 stream->write(&packetSize_vkCmdSetBlendConstants, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006148 uint64_t cgen_var_506;
6149 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_506, 1);
6150 stream->write((uint64_t*)&cgen_var_506, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006151 stream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006152}
6153
6154void VkEncoder::vkCmdSetDepthBounds(
6155 VkCommandBuffer commandBuffer,
6156 float minDepthBounds,
6157 float maxDepthBounds)
6158{
6159 auto stream = mImpl->stream();
6160 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006161 auto resources = mImpl->resources();
6162 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006163 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006164 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006165 float local_minDepthBounds;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006166 float local_maxDepthBounds;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006167 local_commandBuffer = commandBuffer;
6168 local_minDepthBounds = minDepthBounds;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006169 local_maxDepthBounds = maxDepthBounds;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006170 countingStream->rewind();
6171 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006172 uint64_t cgen_var_507;
6173 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_507, 1);
6174 countingStream->write((uint64_t*)&cgen_var_507, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006175 countingStream->write((float*)&local_minDepthBounds, sizeof(float));
6176 countingStream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006177 }
6178 uint32_t packetSize_vkCmdSetDepthBounds = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6179 countingStream->rewind();
6180 uint32_t opcode_vkCmdSetDepthBounds = OP_vkCmdSetDepthBounds;
6181 stream->write(&opcode_vkCmdSetDepthBounds, sizeof(uint32_t));
6182 stream->write(&packetSize_vkCmdSetDepthBounds, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006183 uint64_t cgen_var_508;
6184 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_508, 1);
6185 stream->write((uint64_t*)&cgen_var_508, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006186 stream->write((float*)&local_minDepthBounds, sizeof(float));
6187 stream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006188}
6189
6190void VkEncoder::vkCmdSetStencilCompareMask(
6191 VkCommandBuffer commandBuffer,
6192 VkStencilFaceFlags faceMask,
6193 uint32_t compareMask)
6194{
6195 auto stream = mImpl->stream();
6196 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006197 auto resources = mImpl->resources();
6198 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006199 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006200 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006201 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006202 uint32_t local_compareMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006203 local_commandBuffer = commandBuffer;
6204 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006205 local_compareMask = compareMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006206 countingStream->rewind();
6207 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006208 uint64_t cgen_var_509;
6209 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_509, 1);
6210 countingStream->write((uint64_t*)&cgen_var_509, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006211 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6212 countingStream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006213 }
6214 uint32_t packetSize_vkCmdSetStencilCompareMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6215 countingStream->rewind();
6216 uint32_t opcode_vkCmdSetStencilCompareMask = OP_vkCmdSetStencilCompareMask;
6217 stream->write(&opcode_vkCmdSetStencilCompareMask, sizeof(uint32_t));
6218 stream->write(&packetSize_vkCmdSetStencilCompareMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006219 uint64_t cgen_var_510;
6220 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_510, 1);
6221 stream->write((uint64_t*)&cgen_var_510, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006222 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6223 stream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006224}
6225
6226void VkEncoder::vkCmdSetStencilWriteMask(
6227 VkCommandBuffer commandBuffer,
6228 VkStencilFaceFlags faceMask,
6229 uint32_t writeMask)
6230{
6231 auto stream = mImpl->stream();
6232 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006233 auto resources = mImpl->resources();
6234 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006235 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006236 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006237 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006238 uint32_t local_writeMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006239 local_commandBuffer = commandBuffer;
6240 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006241 local_writeMask = writeMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006242 countingStream->rewind();
6243 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006244 uint64_t cgen_var_511;
6245 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_511, 1);
6246 countingStream->write((uint64_t*)&cgen_var_511, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006247 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6248 countingStream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006249 }
6250 uint32_t packetSize_vkCmdSetStencilWriteMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6251 countingStream->rewind();
6252 uint32_t opcode_vkCmdSetStencilWriteMask = OP_vkCmdSetStencilWriteMask;
6253 stream->write(&opcode_vkCmdSetStencilWriteMask, sizeof(uint32_t));
6254 stream->write(&packetSize_vkCmdSetStencilWriteMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006255 uint64_t cgen_var_512;
6256 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_512, 1);
6257 stream->write((uint64_t*)&cgen_var_512, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006258 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6259 stream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006260}
6261
6262void VkEncoder::vkCmdSetStencilReference(
6263 VkCommandBuffer commandBuffer,
6264 VkStencilFaceFlags faceMask,
6265 uint32_t reference)
6266{
6267 auto stream = mImpl->stream();
6268 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006269 auto resources = mImpl->resources();
6270 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006271 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006272 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006273 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006274 uint32_t local_reference;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006275 local_commandBuffer = commandBuffer;
6276 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006277 local_reference = reference;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006278 countingStream->rewind();
6279 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006280 uint64_t cgen_var_513;
6281 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_513, 1);
6282 countingStream->write((uint64_t*)&cgen_var_513, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006283 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6284 countingStream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006285 }
6286 uint32_t packetSize_vkCmdSetStencilReference = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6287 countingStream->rewind();
6288 uint32_t opcode_vkCmdSetStencilReference = OP_vkCmdSetStencilReference;
6289 stream->write(&opcode_vkCmdSetStencilReference, sizeof(uint32_t));
6290 stream->write(&packetSize_vkCmdSetStencilReference, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006291 uint64_t cgen_var_514;
6292 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_514, 1);
6293 stream->write((uint64_t*)&cgen_var_514, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006294 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6295 stream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006296}
6297
6298void VkEncoder::vkCmdBindDescriptorSets(
6299 VkCommandBuffer commandBuffer,
6300 VkPipelineBindPoint pipelineBindPoint,
6301 VkPipelineLayout layout,
6302 uint32_t firstSet,
6303 uint32_t descriptorSetCount,
6304 const VkDescriptorSet* pDescriptorSets,
6305 uint32_t dynamicOffsetCount,
6306 const uint32_t* pDynamicOffsets)
6307{
6308 auto stream = mImpl->stream();
6309 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006310 auto resources = mImpl->resources();
6311 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006312 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006313 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006314 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006315 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006316 uint32_t local_firstSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006317 uint32_t local_descriptorSetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006318 VkDescriptorSet* local_pDescriptorSets;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006319 uint32_t local_dynamicOffsetCount;
6320 uint32_t* local_pDynamicOffsets;
6321 local_commandBuffer = commandBuffer;
6322 local_pipelineBindPoint = pipelineBindPoint;
6323 local_layout = layout;
6324 local_firstSet = firstSet;
6325 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006326 local_pDescriptorSets = nullptr;
6327 if (pDescriptorSets)
6328 {
6329 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
6330 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006331 local_dynamicOffsetCount = dynamicOffsetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006332 local_pDynamicOffsets = nullptr;
6333 if (pDynamicOffsets)
6334 {
6335 local_pDynamicOffsets = (uint32_t*)pool->dupArray(pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t));
6336 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006337 countingStream->rewind();
6338 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006339 uint64_t cgen_var_515;
6340 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_515, 1);
6341 countingStream->write((uint64_t*)&cgen_var_515, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006342 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006343 uint64_t cgen_var_516;
6344 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_516, 1);
6345 countingStream->write((uint64_t*)&cgen_var_516, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006346 countingStream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
6347 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006348 if (((descriptorSetCount)))
6349 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006350 uint64_t* cgen_var_517;
6351 countingStream->alloc((void**)&cgen_var_517, ((descriptorSetCount)) * 8);
6352 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_517, ((descriptorSetCount)));
6353 countingStream->write((uint64_t*)cgen_var_517, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006354 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006355 countingStream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
6356 countingStream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006357 }
6358 uint32_t packetSize_vkCmdBindDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6359 countingStream->rewind();
6360 uint32_t opcode_vkCmdBindDescriptorSets = OP_vkCmdBindDescriptorSets;
6361 stream->write(&opcode_vkCmdBindDescriptorSets, sizeof(uint32_t));
6362 stream->write(&packetSize_vkCmdBindDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006363 uint64_t cgen_var_518;
6364 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_518, 1);
6365 stream->write((uint64_t*)&cgen_var_518, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006366 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006367 uint64_t cgen_var_519;
6368 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_519, 1);
6369 stream->write((uint64_t*)&cgen_var_519, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006370 stream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
6371 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006372 if (((descriptorSetCount)))
6373 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006374 uint64_t* cgen_var_520;
6375 stream->alloc((void**)&cgen_var_520, ((descriptorSetCount)) * 8);
6376 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_520, ((descriptorSetCount)));
6377 stream->write((uint64_t*)cgen_var_520, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006378 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006379 stream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
6380 stream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006381}
6382
6383void VkEncoder::vkCmdBindIndexBuffer(
6384 VkCommandBuffer commandBuffer,
6385 VkBuffer buffer,
6386 VkDeviceSize offset,
6387 VkIndexType indexType)
6388{
6389 auto stream = mImpl->stream();
6390 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006391 auto resources = mImpl->resources();
6392 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006393 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006394 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006395 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006396 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006397 VkIndexType local_indexType;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006398 local_commandBuffer = commandBuffer;
6399 local_buffer = buffer;
6400 local_offset = offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006401 local_indexType = indexType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006402 countingStream->rewind();
6403 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006404 uint64_t cgen_var_521;
6405 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_521, 1);
6406 countingStream->write((uint64_t*)&cgen_var_521, 1 * 8);
6407 uint64_t cgen_var_522;
6408 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_522, 1);
6409 countingStream->write((uint64_t*)&cgen_var_522, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006410 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6411 countingStream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006412 }
6413 uint32_t packetSize_vkCmdBindIndexBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6414 countingStream->rewind();
6415 uint32_t opcode_vkCmdBindIndexBuffer = OP_vkCmdBindIndexBuffer;
6416 stream->write(&opcode_vkCmdBindIndexBuffer, sizeof(uint32_t));
6417 stream->write(&packetSize_vkCmdBindIndexBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006418 uint64_t cgen_var_523;
6419 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_523, 1);
6420 stream->write((uint64_t*)&cgen_var_523, 1 * 8);
6421 uint64_t cgen_var_524;
6422 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_524, 1);
6423 stream->write((uint64_t*)&cgen_var_524, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006424 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6425 stream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006426}
6427
6428void VkEncoder::vkCmdBindVertexBuffers(
6429 VkCommandBuffer commandBuffer,
6430 uint32_t firstBinding,
6431 uint32_t bindingCount,
6432 const VkBuffer* pBuffers,
6433 const VkDeviceSize* pOffsets)
6434{
6435 auto stream = mImpl->stream();
6436 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006437 auto resources = mImpl->resources();
6438 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006439 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006440 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006441 uint32_t local_firstBinding;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006442 uint32_t local_bindingCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006443 VkBuffer* local_pBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006444 VkDeviceSize* local_pOffsets;
6445 local_commandBuffer = commandBuffer;
6446 local_firstBinding = firstBinding;
6447 local_bindingCount = bindingCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006448 local_pBuffers = nullptr;
6449 if (pBuffers)
6450 {
6451 local_pBuffers = (VkBuffer*)pool->dupArray(pBuffers, ((bindingCount)) * sizeof(const VkBuffer));
6452 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006453 local_pOffsets = nullptr;
6454 if (pOffsets)
6455 {
6456 local_pOffsets = (VkDeviceSize*)pool->dupArray(pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize));
6457 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006458 countingStream->rewind();
6459 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006460 uint64_t cgen_var_525;
6461 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_525, 1);
6462 countingStream->write((uint64_t*)&cgen_var_525, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006463 countingStream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
6464 countingStream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006465 if (((bindingCount)))
6466 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006467 uint64_t* cgen_var_526;
6468 countingStream->alloc((void**)&cgen_var_526, ((bindingCount)) * 8);
6469 countingStream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_526, ((bindingCount)));
6470 countingStream->write((uint64_t*)cgen_var_526, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006471 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006472 countingStream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006473 }
6474 uint32_t packetSize_vkCmdBindVertexBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6475 countingStream->rewind();
6476 uint32_t opcode_vkCmdBindVertexBuffers = OP_vkCmdBindVertexBuffers;
6477 stream->write(&opcode_vkCmdBindVertexBuffers, sizeof(uint32_t));
6478 stream->write(&packetSize_vkCmdBindVertexBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006479 uint64_t cgen_var_527;
6480 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_527, 1);
6481 stream->write((uint64_t*)&cgen_var_527, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006482 stream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
6483 stream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006484 if (((bindingCount)))
6485 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006486 uint64_t* cgen_var_528;
6487 stream->alloc((void**)&cgen_var_528, ((bindingCount)) * 8);
6488 stream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_528, ((bindingCount)));
6489 stream->write((uint64_t*)cgen_var_528, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006490 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006491 stream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006492}
6493
6494void VkEncoder::vkCmdDraw(
6495 VkCommandBuffer commandBuffer,
6496 uint32_t vertexCount,
6497 uint32_t instanceCount,
6498 uint32_t firstVertex,
6499 uint32_t firstInstance)
6500{
6501 auto stream = mImpl->stream();
6502 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006503 auto resources = mImpl->resources();
6504 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006505 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006506 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006507 uint32_t local_vertexCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006508 uint32_t local_instanceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006509 uint32_t local_firstVertex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006510 uint32_t local_firstInstance;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006511 local_commandBuffer = commandBuffer;
6512 local_vertexCount = vertexCount;
6513 local_instanceCount = instanceCount;
6514 local_firstVertex = firstVertex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006515 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006516 countingStream->rewind();
6517 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006518 uint64_t cgen_var_529;
6519 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_529, 1);
6520 countingStream->write((uint64_t*)&cgen_var_529, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006521 countingStream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
6522 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6523 countingStream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
6524 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006525 }
6526 uint32_t packetSize_vkCmdDraw = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6527 countingStream->rewind();
6528 uint32_t opcode_vkCmdDraw = OP_vkCmdDraw;
6529 stream->write(&opcode_vkCmdDraw, sizeof(uint32_t));
6530 stream->write(&packetSize_vkCmdDraw, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006531 uint64_t cgen_var_530;
6532 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_530, 1);
6533 stream->write((uint64_t*)&cgen_var_530, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006534 stream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
6535 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6536 stream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
6537 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006538}
6539
6540void VkEncoder::vkCmdDrawIndexed(
6541 VkCommandBuffer commandBuffer,
6542 uint32_t indexCount,
6543 uint32_t instanceCount,
6544 uint32_t firstIndex,
6545 int32_t vertexOffset,
6546 uint32_t firstInstance)
6547{
6548 auto stream = mImpl->stream();
6549 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006550 auto resources = mImpl->resources();
6551 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006552 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006553 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006554 uint32_t local_indexCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006555 uint32_t local_instanceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006556 uint32_t local_firstIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006557 int32_t local_vertexOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006558 uint32_t local_firstInstance;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006559 local_commandBuffer = commandBuffer;
6560 local_indexCount = indexCount;
6561 local_instanceCount = instanceCount;
6562 local_firstIndex = firstIndex;
6563 local_vertexOffset = vertexOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006564 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006565 countingStream->rewind();
6566 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006567 uint64_t cgen_var_531;
6568 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_531, 1);
6569 countingStream->write((uint64_t*)&cgen_var_531, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006570 countingStream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
6571 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6572 countingStream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
6573 countingStream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
6574 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006575 }
6576 uint32_t packetSize_vkCmdDrawIndexed = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6577 countingStream->rewind();
6578 uint32_t opcode_vkCmdDrawIndexed = OP_vkCmdDrawIndexed;
6579 stream->write(&opcode_vkCmdDrawIndexed, sizeof(uint32_t));
6580 stream->write(&packetSize_vkCmdDrawIndexed, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006581 uint64_t cgen_var_532;
6582 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_532, 1);
6583 stream->write((uint64_t*)&cgen_var_532, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006584 stream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
6585 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6586 stream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
6587 stream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
6588 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006589}
6590
6591void VkEncoder::vkCmdDrawIndirect(
6592 VkCommandBuffer commandBuffer,
6593 VkBuffer buffer,
6594 VkDeviceSize offset,
6595 uint32_t drawCount,
6596 uint32_t stride)
6597{
6598 auto stream = mImpl->stream();
6599 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006600 auto resources = mImpl->resources();
6601 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006602 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006603 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006604 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006605 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006606 uint32_t local_drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006607 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006608 local_commandBuffer = commandBuffer;
6609 local_buffer = buffer;
6610 local_offset = offset;
6611 local_drawCount = drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006612 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006613 countingStream->rewind();
6614 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006615 uint64_t cgen_var_533;
6616 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_533, 1);
6617 countingStream->write((uint64_t*)&cgen_var_533, 1 * 8);
6618 uint64_t cgen_var_534;
6619 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_534, 1);
6620 countingStream->write((uint64_t*)&cgen_var_534, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006621 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6622 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6623 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006624 }
6625 uint32_t packetSize_vkCmdDrawIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6626 countingStream->rewind();
6627 uint32_t opcode_vkCmdDrawIndirect = OP_vkCmdDrawIndirect;
6628 stream->write(&opcode_vkCmdDrawIndirect, sizeof(uint32_t));
6629 stream->write(&packetSize_vkCmdDrawIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006630 uint64_t cgen_var_535;
6631 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_535, 1);
6632 stream->write((uint64_t*)&cgen_var_535, 1 * 8);
6633 uint64_t cgen_var_536;
6634 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_536, 1);
6635 stream->write((uint64_t*)&cgen_var_536, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006636 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6637 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6638 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006639}
6640
6641void VkEncoder::vkCmdDrawIndexedIndirect(
6642 VkCommandBuffer commandBuffer,
6643 VkBuffer buffer,
6644 VkDeviceSize offset,
6645 uint32_t drawCount,
6646 uint32_t stride)
6647{
6648 auto stream = mImpl->stream();
6649 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006650 auto resources = mImpl->resources();
6651 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006652 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006653 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006654 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006655 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006656 uint32_t local_drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006657 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006658 local_commandBuffer = commandBuffer;
6659 local_buffer = buffer;
6660 local_offset = offset;
6661 local_drawCount = drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006662 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006663 countingStream->rewind();
6664 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006665 uint64_t cgen_var_537;
6666 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_537, 1);
6667 countingStream->write((uint64_t*)&cgen_var_537, 1 * 8);
6668 uint64_t cgen_var_538;
6669 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_538, 1);
6670 countingStream->write((uint64_t*)&cgen_var_538, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006671 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6672 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6673 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006674 }
6675 uint32_t packetSize_vkCmdDrawIndexedIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6676 countingStream->rewind();
6677 uint32_t opcode_vkCmdDrawIndexedIndirect = OP_vkCmdDrawIndexedIndirect;
6678 stream->write(&opcode_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
6679 stream->write(&packetSize_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006680 uint64_t cgen_var_539;
6681 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_539, 1);
6682 stream->write((uint64_t*)&cgen_var_539, 1 * 8);
6683 uint64_t cgen_var_540;
6684 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_540, 1);
6685 stream->write((uint64_t*)&cgen_var_540, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006686 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6687 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6688 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006689}
6690
6691void VkEncoder::vkCmdDispatch(
6692 VkCommandBuffer commandBuffer,
6693 uint32_t groupCountX,
6694 uint32_t groupCountY,
6695 uint32_t groupCountZ)
6696{
6697 auto stream = mImpl->stream();
6698 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006699 auto resources = mImpl->resources();
6700 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006701 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006702 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006703 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006704 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006705 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006706 local_commandBuffer = commandBuffer;
6707 local_groupCountX = groupCountX;
6708 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006709 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006710 countingStream->rewind();
6711 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006712 uint64_t cgen_var_541;
6713 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_541, 1);
6714 countingStream->write((uint64_t*)&cgen_var_541, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006715 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
6716 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
6717 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006718 }
6719 uint32_t packetSize_vkCmdDispatch = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6720 countingStream->rewind();
6721 uint32_t opcode_vkCmdDispatch = OP_vkCmdDispatch;
6722 stream->write(&opcode_vkCmdDispatch, sizeof(uint32_t));
6723 stream->write(&packetSize_vkCmdDispatch, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006724 uint64_t cgen_var_542;
6725 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_542, 1);
6726 stream->write((uint64_t*)&cgen_var_542, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006727 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
6728 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
6729 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006730}
6731
6732void VkEncoder::vkCmdDispatchIndirect(
6733 VkCommandBuffer commandBuffer,
6734 VkBuffer buffer,
6735 VkDeviceSize offset)
6736{
6737 auto stream = mImpl->stream();
6738 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006739 auto resources = mImpl->resources();
6740 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006741 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006742 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006743 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006744 VkDeviceSize local_offset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006745 local_commandBuffer = commandBuffer;
6746 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006747 local_offset = offset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006748 countingStream->rewind();
6749 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006750 uint64_t cgen_var_543;
6751 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_543, 1);
6752 countingStream->write((uint64_t*)&cgen_var_543, 1 * 8);
6753 uint64_t cgen_var_544;
6754 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_544, 1);
6755 countingStream->write((uint64_t*)&cgen_var_544, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006756 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006757 }
6758 uint32_t packetSize_vkCmdDispatchIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6759 countingStream->rewind();
6760 uint32_t opcode_vkCmdDispatchIndirect = OP_vkCmdDispatchIndirect;
6761 stream->write(&opcode_vkCmdDispatchIndirect, sizeof(uint32_t));
6762 stream->write(&packetSize_vkCmdDispatchIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006763 uint64_t cgen_var_545;
6764 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_545, 1);
6765 stream->write((uint64_t*)&cgen_var_545, 1 * 8);
6766 uint64_t cgen_var_546;
6767 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_546, 1);
6768 stream->write((uint64_t*)&cgen_var_546, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006769 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006770}
6771
6772void VkEncoder::vkCmdCopyBuffer(
6773 VkCommandBuffer commandBuffer,
6774 VkBuffer srcBuffer,
6775 VkBuffer dstBuffer,
6776 uint32_t regionCount,
6777 const VkBufferCopy* pRegions)
6778{
6779 auto stream = mImpl->stream();
6780 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006781 auto resources = mImpl->resources();
6782 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006783 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006784 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006785 VkBuffer local_srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006786 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006787 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006788 VkBufferCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006789 local_commandBuffer = commandBuffer;
6790 local_srcBuffer = srcBuffer;
6791 local_dstBuffer = dstBuffer;
6792 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006793 local_pRegions = nullptr;
6794 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006795 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006796 local_pRegions = (VkBufferCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006797 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6798 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006799 deepcopy_VkBufferCopy(pool, pRegions + i, (VkBufferCopy*)(local_pRegions + i));
6800 }
6801 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006802 countingStream->rewind();
6803 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006804 uint64_t cgen_var_547;
6805 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_547, 1);
6806 countingStream->write((uint64_t*)&cgen_var_547, 1 * 8);
6807 uint64_t cgen_var_548;
6808 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_548, 1);
6809 countingStream->write((uint64_t*)&cgen_var_548, 1 * 8);
6810 uint64_t cgen_var_549;
6811 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_549, 1);
6812 countingStream->write((uint64_t*)&cgen_var_549, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006813 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
6814 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6815 {
6816 marshal_VkBufferCopy(countingStream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006817 }
6818 }
6819 uint32_t packetSize_vkCmdCopyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6820 countingStream->rewind();
6821 uint32_t opcode_vkCmdCopyBuffer = OP_vkCmdCopyBuffer;
6822 stream->write(&opcode_vkCmdCopyBuffer, sizeof(uint32_t));
6823 stream->write(&packetSize_vkCmdCopyBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006824 uint64_t cgen_var_550;
6825 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_550, 1);
6826 stream->write((uint64_t*)&cgen_var_550, 1 * 8);
6827 uint64_t cgen_var_551;
6828 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_551, 1);
6829 stream->write((uint64_t*)&cgen_var_551, 1 * 8);
6830 uint64_t cgen_var_552;
6831 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_552, 1);
6832 stream->write((uint64_t*)&cgen_var_552, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006833 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006834 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6835 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006836 marshal_VkBufferCopy(stream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006837 }
6838}
6839
6840void VkEncoder::vkCmdCopyImage(
6841 VkCommandBuffer commandBuffer,
6842 VkImage srcImage,
6843 VkImageLayout srcImageLayout,
6844 VkImage dstImage,
6845 VkImageLayout dstImageLayout,
6846 uint32_t regionCount,
6847 const VkImageCopy* pRegions)
6848{
6849 auto stream = mImpl->stream();
6850 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006851 auto resources = mImpl->resources();
6852 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006853 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006854 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006855 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006856 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006857 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006858 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006859 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006860 VkImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006861 local_commandBuffer = commandBuffer;
6862 local_srcImage = srcImage;
6863 local_srcImageLayout = srcImageLayout;
6864 local_dstImage = dstImage;
6865 local_dstImageLayout = dstImageLayout;
6866 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006867 local_pRegions = nullptr;
6868 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006869 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006870 local_pRegions = (VkImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006871 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6872 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006873 deepcopy_VkImageCopy(pool, pRegions + i, (VkImageCopy*)(local_pRegions + i));
6874 }
6875 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006876 countingStream->rewind();
6877 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006878 uint64_t cgen_var_553;
6879 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_553, 1);
6880 countingStream->write((uint64_t*)&cgen_var_553, 1 * 8);
6881 uint64_t cgen_var_554;
6882 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_554, 1);
6883 countingStream->write((uint64_t*)&cgen_var_554, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006884 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006885 uint64_t cgen_var_555;
6886 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_555, 1);
6887 countingStream->write((uint64_t*)&cgen_var_555, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006888 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6889 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
6890 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6891 {
6892 marshal_VkImageCopy(countingStream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006893 }
6894 }
6895 uint32_t packetSize_vkCmdCopyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6896 countingStream->rewind();
6897 uint32_t opcode_vkCmdCopyImage = OP_vkCmdCopyImage;
6898 stream->write(&opcode_vkCmdCopyImage, sizeof(uint32_t));
6899 stream->write(&packetSize_vkCmdCopyImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006900 uint64_t cgen_var_556;
6901 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_556, 1);
6902 stream->write((uint64_t*)&cgen_var_556, 1 * 8);
6903 uint64_t cgen_var_557;
6904 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_557, 1);
6905 stream->write((uint64_t*)&cgen_var_557, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006906 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006907 uint64_t cgen_var_558;
6908 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_558, 1);
6909 stream->write((uint64_t*)&cgen_var_558, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006910 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6911 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006912 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6913 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006914 marshal_VkImageCopy(stream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006915 }
6916}
6917
6918void VkEncoder::vkCmdBlitImage(
6919 VkCommandBuffer commandBuffer,
6920 VkImage srcImage,
6921 VkImageLayout srcImageLayout,
6922 VkImage dstImage,
6923 VkImageLayout dstImageLayout,
6924 uint32_t regionCount,
6925 const VkImageBlit* pRegions,
6926 VkFilter filter)
6927{
6928 auto stream = mImpl->stream();
6929 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006930 auto resources = mImpl->resources();
6931 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006932 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006933 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006934 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006935 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006936 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006937 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006938 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006939 VkImageBlit* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006940 VkFilter local_filter;
6941 local_commandBuffer = commandBuffer;
6942 local_srcImage = srcImage;
6943 local_srcImageLayout = srcImageLayout;
6944 local_dstImage = dstImage;
6945 local_dstImageLayout = dstImageLayout;
6946 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006947 local_pRegions = nullptr;
6948 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006949 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006950 local_pRegions = (VkImageBlit*)pool->alloc(((regionCount)) * sizeof(const VkImageBlit));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006951 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6952 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006953 deepcopy_VkImageBlit(pool, pRegions + i, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006954 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006955 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006956 local_filter = filter;
6957 countingStream->rewind();
6958 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006959 uint64_t cgen_var_559;
6960 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_559, 1);
6961 countingStream->write((uint64_t*)&cgen_var_559, 1 * 8);
6962 uint64_t cgen_var_560;
6963 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_560, 1);
6964 countingStream->write((uint64_t*)&cgen_var_560, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006965 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006966 uint64_t cgen_var_561;
6967 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_561, 1);
6968 countingStream->write((uint64_t*)&cgen_var_561, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006969 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6970 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
6971 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6972 {
6973 marshal_VkImageBlit(countingStream, (VkImageBlit*)(local_pRegions + i));
6974 }
6975 countingStream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006976 }
6977 uint32_t packetSize_vkCmdBlitImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6978 countingStream->rewind();
6979 uint32_t opcode_vkCmdBlitImage = OP_vkCmdBlitImage;
6980 stream->write(&opcode_vkCmdBlitImage, sizeof(uint32_t));
6981 stream->write(&packetSize_vkCmdBlitImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006982 uint64_t cgen_var_562;
6983 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_562, 1);
6984 stream->write((uint64_t*)&cgen_var_562, 1 * 8);
6985 uint64_t cgen_var_563;
6986 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_563, 1);
6987 stream->write((uint64_t*)&cgen_var_563, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006988 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006989 uint64_t cgen_var_564;
6990 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_564, 1);
6991 stream->write((uint64_t*)&cgen_var_564, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006992 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6993 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006994 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6995 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006996 marshal_VkImageBlit(stream, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006997 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006998 stream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006999}
7000
7001void VkEncoder::vkCmdCopyBufferToImage(
7002 VkCommandBuffer commandBuffer,
7003 VkBuffer srcBuffer,
7004 VkImage dstImage,
7005 VkImageLayout dstImageLayout,
7006 uint32_t regionCount,
7007 const VkBufferImageCopy* pRegions)
7008{
7009 auto stream = mImpl->stream();
7010 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007011 auto resources = mImpl->resources();
7012 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007013 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007014 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007015 VkBuffer local_srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007016 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007017 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007018 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007019 VkBufferImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007020 local_commandBuffer = commandBuffer;
7021 local_srcBuffer = srcBuffer;
7022 local_dstImage = dstImage;
7023 local_dstImageLayout = dstImageLayout;
7024 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007025 local_pRegions = nullptr;
7026 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007027 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007028 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007029 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7030 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007031 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
7032 }
7033 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007034 countingStream->rewind();
7035 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007036 uint64_t cgen_var_565;
7037 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_565, 1);
7038 countingStream->write((uint64_t*)&cgen_var_565, 1 * 8);
7039 uint64_t cgen_var_566;
7040 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_566, 1);
7041 countingStream->write((uint64_t*)&cgen_var_566, 1 * 8);
7042 uint64_t cgen_var_567;
7043 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_567, 1);
7044 countingStream->write((uint64_t*)&cgen_var_567, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007045 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7046 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7047 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7048 {
7049 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007050 }
7051 }
7052 uint32_t packetSize_vkCmdCopyBufferToImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7053 countingStream->rewind();
7054 uint32_t opcode_vkCmdCopyBufferToImage = OP_vkCmdCopyBufferToImage;
7055 stream->write(&opcode_vkCmdCopyBufferToImage, sizeof(uint32_t));
7056 stream->write(&packetSize_vkCmdCopyBufferToImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007057 uint64_t cgen_var_568;
7058 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_568, 1);
7059 stream->write((uint64_t*)&cgen_var_568, 1 * 8);
7060 uint64_t cgen_var_569;
7061 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_569, 1);
7062 stream->write((uint64_t*)&cgen_var_569, 1 * 8);
7063 uint64_t cgen_var_570;
7064 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_570, 1);
7065 stream->write((uint64_t*)&cgen_var_570, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007066 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7067 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007068 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7069 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007070 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007071 }
7072}
7073
7074void VkEncoder::vkCmdCopyImageToBuffer(
7075 VkCommandBuffer commandBuffer,
7076 VkImage srcImage,
7077 VkImageLayout srcImageLayout,
7078 VkBuffer dstBuffer,
7079 uint32_t regionCount,
7080 const VkBufferImageCopy* pRegions)
7081{
7082 auto stream = mImpl->stream();
7083 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007084 auto resources = mImpl->resources();
7085 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007086 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007087 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007088 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007089 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007090 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007091 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007092 VkBufferImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007093 local_commandBuffer = commandBuffer;
7094 local_srcImage = srcImage;
7095 local_srcImageLayout = srcImageLayout;
7096 local_dstBuffer = dstBuffer;
7097 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007098 local_pRegions = nullptr;
7099 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007100 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007101 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007102 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7103 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007104 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
7105 }
7106 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007107 countingStream->rewind();
7108 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007109 uint64_t cgen_var_571;
7110 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_571, 1);
7111 countingStream->write((uint64_t*)&cgen_var_571, 1 * 8);
7112 uint64_t cgen_var_572;
7113 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_572, 1);
7114 countingStream->write((uint64_t*)&cgen_var_572, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007115 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007116 uint64_t cgen_var_573;
7117 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_573, 1);
7118 countingStream->write((uint64_t*)&cgen_var_573, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007119 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7120 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7121 {
7122 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007123 }
7124 }
7125 uint32_t packetSize_vkCmdCopyImageToBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7126 countingStream->rewind();
7127 uint32_t opcode_vkCmdCopyImageToBuffer = OP_vkCmdCopyImageToBuffer;
7128 stream->write(&opcode_vkCmdCopyImageToBuffer, sizeof(uint32_t));
7129 stream->write(&packetSize_vkCmdCopyImageToBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007130 uint64_t cgen_var_574;
7131 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_574, 1);
7132 stream->write((uint64_t*)&cgen_var_574, 1 * 8);
7133 uint64_t cgen_var_575;
7134 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_575, 1);
7135 stream->write((uint64_t*)&cgen_var_575, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007136 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007137 uint64_t cgen_var_576;
7138 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_576, 1);
7139 stream->write((uint64_t*)&cgen_var_576, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007140 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007141 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7142 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007143 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007144 }
7145}
7146
7147void VkEncoder::vkCmdUpdateBuffer(
7148 VkCommandBuffer commandBuffer,
7149 VkBuffer dstBuffer,
7150 VkDeviceSize dstOffset,
7151 VkDeviceSize dataSize,
7152 const void* pData)
7153{
7154 auto stream = mImpl->stream();
7155 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007156 auto resources = mImpl->resources();
7157 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007158 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007159 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007160 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007161 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007162 VkDeviceSize local_dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007163 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007164 local_commandBuffer = commandBuffer;
7165 local_dstBuffer = dstBuffer;
7166 local_dstOffset = dstOffset;
7167 local_dataSize = dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007168 local_pData = nullptr;
7169 if (pData)
7170 {
7171 local_pData = (void*)pool->dupArray(pData, ((dataSize)) * sizeof(const uint8_t));
7172 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007173 countingStream->rewind();
7174 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007175 uint64_t cgen_var_577;
7176 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_577, 1);
7177 countingStream->write((uint64_t*)&cgen_var_577, 1 * 8);
7178 uint64_t cgen_var_578;
7179 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_578, 1);
7180 countingStream->write((uint64_t*)&cgen_var_578, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007181 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7182 countingStream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
7183 countingStream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007184 }
7185 uint32_t packetSize_vkCmdUpdateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7186 countingStream->rewind();
7187 uint32_t opcode_vkCmdUpdateBuffer = OP_vkCmdUpdateBuffer;
7188 stream->write(&opcode_vkCmdUpdateBuffer, sizeof(uint32_t));
7189 stream->write(&packetSize_vkCmdUpdateBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007190 uint64_t cgen_var_579;
7191 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_579, 1);
7192 stream->write((uint64_t*)&cgen_var_579, 1 * 8);
7193 uint64_t cgen_var_580;
7194 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_580, 1);
7195 stream->write((uint64_t*)&cgen_var_580, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007196 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7197 stream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
7198 stream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007199}
7200
7201void VkEncoder::vkCmdFillBuffer(
7202 VkCommandBuffer commandBuffer,
7203 VkBuffer dstBuffer,
7204 VkDeviceSize dstOffset,
7205 VkDeviceSize size,
7206 uint32_t data)
7207{
7208 auto stream = mImpl->stream();
7209 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007210 auto resources = mImpl->resources();
7211 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007212 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007213 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007214 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007215 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007216 VkDeviceSize local_size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007217 uint32_t local_data;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007218 local_commandBuffer = commandBuffer;
7219 local_dstBuffer = dstBuffer;
7220 local_dstOffset = dstOffset;
7221 local_size = size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007222 local_data = data;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007223 countingStream->rewind();
7224 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007225 uint64_t cgen_var_581;
7226 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_581, 1);
7227 countingStream->write((uint64_t*)&cgen_var_581, 1 * 8);
7228 uint64_t cgen_var_582;
7229 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_582, 1);
7230 countingStream->write((uint64_t*)&cgen_var_582, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007231 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7232 countingStream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
7233 countingStream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007234 }
7235 uint32_t packetSize_vkCmdFillBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7236 countingStream->rewind();
7237 uint32_t opcode_vkCmdFillBuffer = OP_vkCmdFillBuffer;
7238 stream->write(&opcode_vkCmdFillBuffer, sizeof(uint32_t));
7239 stream->write(&packetSize_vkCmdFillBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007240 uint64_t cgen_var_583;
7241 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_583, 1);
7242 stream->write((uint64_t*)&cgen_var_583, 1 * 8);
7243 uint64_t cgen_var_584;
7244 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_584, 1);
7245 stream->write((uint64_t*)&cgen_var_584, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007246 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7247 stream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
7248 stream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007249}
7250
7251void VkEncoder::vkCmdClearColorImage(
7252 VkCommandBuffer commandBuffer,
7253 VkImage image,
7254 VkImageLayout imageLayout,
7255 const VkClearColorValue* pColor,
7256 uint32_t rangeCount,
7257 const VkImageSubresourceRange* pRanges)
7258{
7259 auto stream = mImpl->stream();
7260 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007261 auto resources = mImpl->resources();
7262 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007263 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007264 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007265 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007266 VkImageLayout local_imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007267 VkClearColorValue* local_pColor;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007268 uint32_t local_rangeCount;
7269 VkImageSubresourceRange* local_pRanges;
7270 local_commandBuffer = commandBuffer;
7271 local_image = image;
7272 local_imageLayout = imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007273 local_pColor = nullptr;
7274 if (pColor)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007275 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007276 local_pColor = (VkClearColorValue*)pool->alloc(sizeof(const VkClearColorValue));
7277 deepcopy_VkClearColorValue(pool, pColor, (VkClearColorValue*)(local_pColor));
7278 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007279 local_rangeCount = rangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007280 local_pRanges = nullptr;
7281 if (pRanges)
7282 {
7283 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007284 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7285 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007286 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
7287 }
7288 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007289 countingStream->rewind();
7290 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007291 uint64_t cgen_var_585;
7292 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_585, 1);
7293 countingStream->write((uint64_t*)&cgen_var_585, 1 * 8);
7294 uint64_t cgen_var_586;
7295 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_586, 1);
7296 countingStream->write((uint64_t*)&cgen_var_586, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007297 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7298 marshal_VkClearColorValue(countingStream, (VkClearColorValue*)(local_pColor));
7299 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
7300 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7301 {
7302 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007303 }
7304 }
7305 uint32_t packetSize_vkCmdClearColorImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7306 countingStream->rewind();
7307 uint32_t opcode_vkCmdClearColorImage = OP_vkCmdClearColorImage;
7308 stream->write(&opcode_vkCmdClearColorImage, sizeof(uint32_t));
7309 stream->write(&packetSize_vkCmdClearColorImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007310 uint64_t cgen_var_587;
7311 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_587, 1);
7312 stream->write((uint64_t*)&cgen_var_587, 1 * 8);
7313 uint64_t cgen_var_588;
7314 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_588, 1);
7315 stream->write((uint64_t*)&cgen_var_588, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007316 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7317 marshal_VkClearColorValue(stream, (VkClearColorValue*)(local_pColor));
7318 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007319 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7320 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007321 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007322 }
7323}
7324
7325void VkEncoder::vkCmdClearDepthStencilImage(
7326 VkCommandBuffer commandBuffer,
7327 VkImage image,
7328 VkImageLayout imageLayout,
7329 const VkClearDepthStencilValue* pDepthStencil,
7330 uint32_t rangeCount,
7331 const VkImageSubresourceRange* pRanges)
7332{
7333 auto stream = mImpl->stream();
7334 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007335 auto resources = mImpl->resources();
7336 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007337 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007338 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007339 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007340 VkImageLayout local_imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007341 VkClearDepthStencilValue* local_pDepthStencil;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007342 uint32_t local_rangeCount;
7343 VkImageSubresourceRange* local_pRanges;
7344 local_commandBuffer = commandBuffer;
7345 local_image = image;
7346 local_imageLayout = imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007347 local_pDepthStencil = nullptr;
7348 if (pDepthStencil)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007349 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007350 local_pDepthStencil = (VkClearDepthStencilValue*)pool->alloc(sizeof(const VkClearDepthStencilValue));
7351 deepcopy_VkClearDepthStencilValue(pool, pDepthStencil, (VkClearDepthStencilValue*)(local_pDepthStencil));
7352 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007353 local_rangeCount = rangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007354 local_pRanges = nullptr;
7355 if (pRanges)
7356 {
7357 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007358 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7359 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007360 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
7361 }
7362 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007363 countingStream->rewind();
7364 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007365 uint64_t cgen_var_589;
7366 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_589, 1);
7367 countingStream->write((uint64_t*)&cgen_var_589, 1 * 8);
7368 uint64_t cgen_var_590;
7369 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_590, 1);
7370 countingStream->write((uint64_t*)&cgen_var_590, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007371 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7372 marshal_VkClearDepthStencilValue(countingStream, (VkClearDepthStencilValue*)(local_pDepthStencil));
7373 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
7374 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7375 {
7376 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007377 }
7378 }
7379 uint32_t packetSize_vkCmdClearDepthStencilImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7380 countingStream->rewind();
7381 uint32_t opcode_vkCmdClearDepthStencilImage = OP_vkCmdClearDepthStencilImage;
7382 stream->write(&opcode_vkCmdClearDepthStencilImage, sizeof(uint32_t));
7383 stream->write(&packetSize_vkCmdClearDepthStencilImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007384 uint64_t cgen_var_591;
7385 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_591, 1);
7386 stream->write((uint64_t*)&cgen_var_591, 1 * 8);
7387 uint64_t cgen_var_592;
7388 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_592, 1);
7389 stream->write((uint64_t*)&cgen_var_592, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007390 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7391 marshal_VkClearDepthStencilValue(stream, (VkClearDepthStencilValue*)(local_pDepthStencil));
7392 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007393 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7394 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007395 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007396 }
7397}
7398
7399void VkEncoder::vkCmdClearAttachments(
7400 VkCommandBuffer commandBuffer,
7401 uint32_t attachmentCount,
7402 const VkClearAttachment* pAttachments,
7403 uint32_t rectCount,
7404 const VkClearRect* pRects)
7405{
7406 auto stream = mImpl->stream();
7407 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007408 auto resources = mImpl->resources();
7409 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007410 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007411 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007412 uint32_t local_attachmentCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007413 VkClearAttachment* local_pAttachments;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007414 uint32_t local_rectCount;
7415 VkClearRect* local_pRects;
7416 local_commandBuffer = commandBuffer;
7417 local_attachmentCount = attachmentCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007418 local_pAttachments = nullptr;
7419 if (pAttachments)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007420 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007421 local_pAttachments = (VkClearAttachment*)pool->alloc(((attachmentCount)) * sizeof(const VkClearAttachment));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007422 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7423 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007424 deepcopy_VkClearAttachment(pool, pAttachments + i, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007425 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007426 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007427 local_rectCount = rectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007428 local_pRects = nullptr;
7429 if (pRects)
7430 {
7431 local_pRects = (VkClearRect*)pool->alloc(((rectCount)) * sizeof(const VkClearRect));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007432 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7433 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007434 deepcopy_VkClearRect(pool, pRects + i, (VkClearRect*)(local_pRects + i));
7435 }
7436 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007437 countingStream->rewind();
7438 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007439 uint64_t cgen_var_593;
7440 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_593, 1);
7441 countingStream->write((uint64_t*)&cgen_var_593, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007442 countingStream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
7443 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7444 {
7445 marshal_VkClearAttachment(countingStream, (VkClearAttachment*)(local_pAttachments + i));
7446 }
7447 countingStream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
7448 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7449 {
7450 marshal_VkClearRect(countingStream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007451 }
7452 }
7453 uint32_t packetSize_vkCmdClearAttachments = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7454 countingStream->rewind();
7455 uint32_t opcode_vkCmdClearAttachments = OP_vkCmdClearAttachments;
7456 stream->write(&opcode_vkCmdClearAttachments, sizeof(uint32_t));
7457 stream->write(&packetSize_vkCmdClearAttachments, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007458 uint64_t cgen_var_594;
7459 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_594, 1);
7460 stream->write((uint64_t*)&cgen_var_594, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007461 stream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007462 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7463 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007464 marshal_VkClearAttachment(stream, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007465 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007466 stream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007467 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7468 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007469 marshal_VkClearRect(stream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007470 }
7471}
7472
7473void VkEncoder::vkCmdResolveImage(
7474 VkCommandBuffer commandBuffer,
7475 VkImage srcImage,
7476 VkImageLayout srcImageLayout,
7477 VkImage dstImage,
7478 VkImageLayout dstImageLayout,
7479 uint32_t regionCount,
7480 const VkImageResolve* pRegions)
7481{
7482 auto stream = mImpl->stream();
7483 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007484 auto resources = mImpl->resources();
7485 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007486 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007487 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007488 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007489 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007490 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007491 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007492 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007493 VkImageResolve* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007494 local_commandBuffer = commandBuffer;
7495 local_srcImage = srcImage;
7496 local_srcImageLayout = srcImageLayout;
7497 local_dstImage = dstImage;
7498 local_dstImageLayout = dstImageLayout;
7499 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007500 local_pRegions = nullptr;
7501 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007502 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007503 local_pRegions = (VkImageResolve*)pool->alloc(((regionCount)) * sizeof(const VkImageResolve));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007504 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7505 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007506 deepcopy_VkImageResolve(pool, pRegions + i, (VkImageResolve*)(local_pRegions + i));
7507 }
7508 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007509 countingStream->rewind();
7510 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007511 uint64_t cgen_var_595;
7512 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_595, 1);
7513 countingStream->write((uint64_t*)&cgen_var_595, 1 * 8);
7514 uint64_t cgen_var_596;
7515 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_596, 1);
7516 countingStream->write((uint64_t*)&cgen_var_596, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007517 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007518 uint64_t cgen_var_597;
7519 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_597, 1);
7520 countingStream->write((uint64_t*)&cgen_var_597, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007521 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7522 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7523 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7524 {
7525 marshal_VkImageResolve(countingStream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007526 }
7527 }
7528 uint32_t packetSize_vkCmdResolveImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7529 countingStream->rewind();
7530 uint32_t opcode_vkCmdResolveImage = OP_vkCmdResolveImage;
7531 stream->write(&opcode_vkCmdResolveImage, sizeof(uint32_t));
7532 stream->write(&packetSize_vkCmdResolveImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007533 uint64_t cgen_var_598;
7534 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_598, 1);
7535 stream->write((uint64_t*)&cgen_var_598, 1 * 8);
7536 uint64_t cgen_var_599;
7537 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_599, 1);
7538 stream->write((uint64_t*)&cgen_var_599, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007539 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007540 uint64_t cgen_var_600;
7541 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_600, 1);
7542 stream->write((uint64_t*)&cgen_var_600, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007543 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7544 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007545 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7546 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007547 marshal_VkImageResolve(stream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007548 }
7549}
7550
7551void VkEncoder::vkCmdSetEvent(
7552 VkCommandBuffer commandBuffer,
7553 VkEvent event,
7554 VkPipelineStageFlags stageMask)
7555{
7556 auto stream = mImpl->stream();
7557 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007558 auto resources = mImpl->resources();
7559 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007560 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007561 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007562 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007563 VkPipelineStageFlags local_stageMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007564 local_commandBuffer = commandBuffer;
7565 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007566 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007567 countingStream->rewind();
7568 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007569 uint64_t cgen_var_601;
7570 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_601, 1);
7571 countingStream->write((uint64_t*)&cgen_var_601, 1 * 8);
7572 uint64_t cgen_var_602;
7573 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_602, 1);
7574 countingStream->write((uint64_t*)&cgen_var_602, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007575 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007576 }
7577 uint32_t packetSize_vkCmdSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7578 countingStream->rewind();
7579 uint32_t opcode_vkCmdSetEvent = OP_vkCmdSetEvent;
7580 stream->write(&opcode_vkCmdSetEvent, sizeof(uint32_t));
7581 stream->write(&packetSize_vkCmdSetEvent, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007582 uint64_t cgen_var_603;
7583 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_603, 1);
7584 stream->write((uint64_t*)&cgen_var_603, 1 * 8);
7585 uint64_t cgen_var_604;
7586 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_604, 1);
7587 stream->write((uint64_t*)&cgen_var_604, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007588 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007589}
7590
7591void VkEncoder::vkCmdResetEvent(
7592 VkCommandBuffer commandBuffer,
7593 VkEvent event,
7594 VkPipelineStageFlags stageMask)
7595{
7596 auto stream = mImpl->stream();
7597 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007598 auto resources = mImpl->resources();
7599 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007600 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007601 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007602 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007603 VkPipelineStageFlags local_stageMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007604 local_commandBuffer = commandBuffer;
7605 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007606 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007607 countingStream->rewind();
7608 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007609 uint64_t cgen_var_605;
7610 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_605, 1);
7611 countingStream->write((uint64_t*)&cgen_var_605, 1 * 8);
7612 uint64_t cgen_var_606;
7613 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_606, 1);
7614 countingStream->write((uint64_t*)&cgen_var_606, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007615 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007616 }
7617 uint32_t packetSize_vkCmdResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7618 countingStream->rewind();
7619 uint32_t opcode_vkCmdResetEvent = OP_vkCmdResetEvent;
7620 stream->write(&opcode_vkCmdResetEvent, sizeof(uint32_t));
7621 stream->write(&packetSize_vkCmdResetEvent, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007622 uint64_t cgen_var_607;
7623 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_607, 1);
7624 stream->write((uint64_t*)&cgen_var_607, 1 * 8);
7625 uint64_t cgen_var_608;
7626 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_608, 1);
7627 stream->write((uint64_t*)&cgen_var_608, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007628 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007629}
7630
7631void VkEncoder::vkCmdWaitEvents(
7632 VkCommandBuffer commandBuffer,
7633 uint32_t eventCount,
7634 const VkEvent* pEvents,
7635 VkPipelineStageFlags srcStageMask,
7636 VkPipelineStageFlags dstStageMask,
7637 uint32_t memoryBarrierCount,
7638 const VkMemoryBarrier* pMemoryBarriers,
7639 uint32_t bufferMemoryBarrierCount,
7640 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
7641 uint32_t imageMemoryBarrierCount,
7642 const VkImageMemoryBarrier* pImageMemoryBarriers)
7643{
7644 auto stream = mImpl->stream();
7645 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007646 auto resources = mImpl->resources();
7647 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007648 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007649 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007650 uint32_t local_eventCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007651 VkEvent* local_pEvents;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007652 VkPipelineStageFlags local_srcStageMask;
7653 VkPipelineStageFlags local_dstStageMask;
7654 uint32_t local_memoryBarrierCount;
7655 VkMemoryBarrier* local_pMemoryBarriers;
7656 uint32_t local_bufferMemoryBarrierCount;
7657 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
7658 uint32_t local_imageMemoryBarrierCount;
7659 VkImageMemoryBarrier* local_pImageMemoryBarriers;
7660 local_commandBuffer = commandBuffer;
7661 local_eventCount = eventCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007662 local_pEvents = nullptr;
7663 if (pEvents)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007664 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007665 local_pEvents = (VkEvent*)pool->dupArray(pEvents, ((eventCount)) * sizeof(const VkEvent));
7666 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007667 local_srcStageMask = srcStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007668 local_dstStageMask = dstStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007669 local_memoryBarrierCount = memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007670 local_pMemoryBarriers = nullptr;
7671 if (pMemoryBarriers)
7672 {
7673 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007674 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7675 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007676 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007677 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007678 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007679 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007680 local_pBufferMemoryBarriers = nullptr;
7681 if (pBufferMemoryBarriers)
7682 {
7683 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007684 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7685 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007686 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007687 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007688 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007689 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007690 local_pImageMemoryBarriers = nullptr;
7691 if (pImageMemoryBarriers)
7692 {
7693 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007694 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7695 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007696 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
7697 }
7698 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007699 countingStream->rewind();
7700 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007701 uint64_t cgen_var_609;
7702 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_609, 1);
7703 countingStream->write((uint64_t*)&cgen_var_609, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007704 countingStream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007705 if (((eventCount)))
7706 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007707 uint64_t* cgen_var_610;
7708 countingStream->alloc((void**)&cgen_var_610, ((eventCount)) * 8);
7709 countingStream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_610, ((eventCount)));
7710 countingStream->write((uint64_t*)cgen_var_610, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007711 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007712 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7713 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7714 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
7715 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7716 {
7717 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
7718 }
7719 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
7720 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7721 {
7722 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
7723 }
7724 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
7725 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7726 {
7727 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007728 }
7729 }
7730 uint32_t packetSize_vkCmdWaitEvents = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7731 countingStream->rewind();
7732 uint32_t opcode_vkCmdWaitEvents = OP_vkCmdWaitEvents;
7733 stream->write(&opcode_vkCmdWaitEvents, sizeof(uint32_t));
7734 stream->write(&packetSize_vkCmdWaitEvents, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007735 uint64_t cgen_var_611;
7736 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_611, 1);
7737 stream->write((uint64_t*)&cgen_var_611, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007738 stream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007739 if (((eventCount)))
7740 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007741 uint64_t* cgen_var_612;
7742 stream->alloc((void**)&cgen_var_612, ((eventCount)) * 8);
7743 stream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_612, ((eventCount)));
7744 stream->write((uint64_t*)cgen_var_612, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007745 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007746 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7747 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7748 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007749 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7750 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007751 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007752 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007753 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007754 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7755 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007756 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007757 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007758 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007759 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7760 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007761 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007762 }
7763}
7764
7765void VkEncoder::vkCmdPipelineBarrier(
7766 VkCommandBuffer commandBuffer,
7767 VkPipelineStageFlags srcStageMask,
7768 VkPipelineStageFlags dstStageMask,
7769 VkDependencyFlags dependencyFlags,
7770 uint32_t memoryBarrierCount,
7771 const VkMemoryBarrier* pMemoryBarriers,
7772 uint32_t bufferMemoryBarrierCount,
7773 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
7774 uint32_t imageMemoryBarrierCount,
7775 const VkImageMemoryBarrier* pImageMemoryBarriers)
7776{
7777 auto stream = mImpl->stream();
7778 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007779 auto resources = mImpl->resources();
7780 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007781 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007782 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007783 VkPipelineStageFlags local_srcStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007784 VkPipelineStageFlags local_dstStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007785 VkDependencyFlags local_dependencyFlags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007786 uint32_t local_memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007787 VkMemoryBarrier* local_pMemoryBarriers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007788 uint32_t local_bufferMemoryBarrierCount;
7789 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
7790 uint32_t local_imageMemoryBarrierCount;
7791 VkImageMemoryBarrier* local_pImageMemoryBarriers;
7792 local_commandBuffer = commandBuffer;
7793 local_srcStageMask = srcStageMask;
7794 local_dstStageMask = dstStageMask;
7795 local_dependencyFlags = dependencyFlags;
7796 local_memoryBarrierCount = memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007797 local_pMemoryBarriers = nullptr;
7798 if (pMemoryBarriers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007799 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007800 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007801 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7802 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007803 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007804 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007805 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007806 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007807 local_pBufferMemoryBarriers = nullptr;
7808 if (pBufferMemoryBarriers)
7809 {
7810 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007811 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7812 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007813 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007814 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007815 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007816 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007817 local_pImageMemoryBarriers = nullptr;
7818 if (pImageMemoryBarriers)
7819 {
7820 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007821 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7822 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007823 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
7824 }
7825 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007826 countingStream->rewind();
7827 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007828 uint64_t cgen_var_613;
7829 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_613, 1);
7830 countingStream->write((uint64_t*)&cgen_var_613, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007831 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7832 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7833 countingStream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
7834 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
7835 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7836 {
7837 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
7838 }
7839 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
7840 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7841 {
7842 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
7843 }
7844 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
7845 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7846 {
7847 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007848 }
7849 }
7850 uint32_t packetSize_vkCmdPipelineBarrier = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7851 countingStream->rewind();
7852 uint32_t opcode_vkCmdPipelineBarrier = OP_vkCmdPipelineBarrier;
7853 stream->write(&opcode_vkCmdPipelineBarrier, sizeof(uint32_t));
7854 stream->write(&packetSize_vkCmdPipelineBarrier, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007855 uint64_t cgen_var_614;
7856 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_614, 1);
7857 stream->write((uint64_t*)&cgen_var_614, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007858 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7859 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7860 stream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
7861 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007862 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7863 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007864 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007865 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007866 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007867 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7868 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007869 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007870 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007871 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007872 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7873 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007874 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007875 }
7876}
7877
7878void VkEncoder::vkCmdBeginQuery(
7879 VkCommandBuffer commandBuffer,
7880 VkQueryPool queryPool,
7881 uint32_t query,
7882 VkQueryControlFlags flags)
7883{
7884 auto stream = mImpl->stream();
7885 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007886 auto resources = mImpl->resources();
7887 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007888 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007889 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007890 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007891 uint32_t local_query;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007892 VkQueryControlFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007893 local_commandBuffer = commandBuffer;
7894 local_queryPool = queryPool;
7895 local_query = query;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007896 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007897 countingStream->rewind();
7898 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007899 uint64_t cgen_var_615;
7900 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_615, 1);
7901 countingStream->write((uint64_t*)&cgen_var_615, 1 * 8);
7902 uint64_t cgen_var_616;
7903 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_616, 1);
7904 countingStream->write((uint64_t*)&cgen_var_616, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007905 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
7906 countingStream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007907 }
7908 uint32_t packetSize_vkCmdBeginQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7909 countingStream->rewind();
7910 uint32_t opcode_vkCmdBeginQuery = OP_vkCmdBeginQuery;
7911 stream->write(&opcode_vkCmdBeginQuery, sizeof(uint32_t));
7912 stream->write(&packetSize_vkCmdBeginQuery, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007913 uint64_t cgen_var_617;
7914 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_617, 1);
7915 stream->write((uint64_t*)&cgen_var_617, 1 * 8);
7916 uint64_t cgen_var_618;
7917 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_618, 1);
7918 stream->write((uint64_t*)&cgen_var_618, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007919 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
7920 stream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007921}
7922
7923void VkEncoder::vkCmdEndQuery(
7924 VkCommandBuffer commandBuffer,
7925 VkQueryPool queryPool,
7926 uint32_t query)
7927{
7928 auto stream = mImpl->stream();
7929 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007930 auto resources = mImpl->resources();
7931 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007932 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007933 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007934 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007935 uint32_t local_query;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007936 local_commandBuffer = commandBuffer;
7937 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007938 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007939 countingStream->rewind();
7940 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007941 uint64_t cgen_var_619;
7942 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_619, 1);
7943 countingStream->write((uint64_t*)&cgen_var_619, 1 * 8);
7944 uint64_t cgen_var_620;
7945 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_620, 1);
7946 countingStream->write((uint64_t*)&cgen_var_620, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007947 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007948 }
7949 uint32_t packetSize_vkCmdEndQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7950 countingStream->rewind();
7951 uint32_t opcode_vkCmdEndQuery = OP_vkCmdEndQuery;
7952 stream->write(&opcode_vkCmdEndQuery, sizeof(uint32_t));
7953 stream->write(&packetSize_vkCmdEndQuery, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007954 uint64_t cgen_var_621;
7955 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_621, 1);
7956 stream->write((uint64_t*)&cgen_var_621, 1 * 8);
7957 uint64_t cgen_var_622;
7958 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_622, 1);
7959 stream->write((uint64_t*)&cgen_var_622, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007960 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007961}
7962
7963void VkEncoder::vkCmdResetQueryPool(
7964 VkCommandBuffer commandBuffer,
7965 VkQueryPool queryPool,
7966 uint32_t firstQuery,
7967 uint32_t queryCount)
7968{
7969 auto stream = mImpl->stream();
7970 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007971 auto resources = mImpl->resources();
7972 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007973 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007974 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007975 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007976 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007977 uint32_t local_queryCount;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007978 local_commandBuffer = commandBuffer;
7979 local_queryPool = queryPool;
7980 local_firstQuery = firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007981 local_queryCount = queryCount;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007982 countingStream->rewind();
7983 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007984 uint64_t cgen_var_623;
7985 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_623, 1);
7986 countingStream->write((uint64_t*)&cgen_var_623, 1 * 8);
7987 uint64_t cgen_var_624;
7988 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_624, 1);
7989 countingStream->write((uint64_t*)&cgen_var_624, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007990 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
7991 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007992 }
7993 uint32_t packetSize_vkCmdResetQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7994 countingStream->rewind();
7995 uint32_t opcode_vkCmdResetQueryPool = OP_vkCmdResetQueryPool;
7996 stream->write(&opcode_vkCmdResetQueryPool, sizeof(uint32_t));
7997 stream->write(&packetSize_vkCmdResetQueryPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007998 uint64_t cgen_var_625;
7999 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_625, 1);
8000 stream->write((uint64_t*)&cgen_var_625, 1 * 8);
8001 uint64_t cgen_var_626;
8002 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_626, 1);
8003 stream->write((uint64_t*)&cgen_var_626, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008004 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8005 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008006}
8007
8008void VkEncoder::vkCmdWriteTimestamp(
8009 VkCommandBuffer commandBuffer,
8010 VkPipelineStageFlagBits pipelineStage,
8011 VkQueryPool queryPool,
8012 uint32_t query)
8013{
8014 auto stream = mImpl->stream();
8015 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008016 auto resources = mImpl->resources();
8017 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008018 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008019 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008020 VkPipelineStageFlagBits local_pipelineStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008021 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008022 uint32_t local_query;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008023 local_commandBuffer = commandBuffer;
8024 local_pipelineStage = pipelineStage;
8025 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008026 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008027 countingStream->rewind();
8028 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008029 uint64_t cgen_var_627;
8030 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_627, 1);
8031 countingStream->write((uint64_t*)&cgen_var_627, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008032 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008033 uint64_t cgen_var_628;
8034 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_628, 1);
8035 countingStream->write((uint64_t*)&cgen_var_628, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008036 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008037 }
8038 uint32_t packetSize_vkCmdWriteTimestamp = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8039 countingStream->rewind();
8040 uint32_t opcode_vkCmdWriteTimestamp = OP_vkCmdWriteTimestamp;
8041 stream->write(&opcode_vkCmdWriteTimestamp, sizeof(uint32_t));
8042 stream->write(&packetSize_vkCmdWriteTimestamp, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008043 uint64_t cgen_var_629;
8044 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_629, 1);
8045 stream->write((uint64_t*)&cgen_var_629, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008046 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008047 uint64_t cgen_var_630;
8048 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_630, 1);
8049 stream->write((uint64_t*)&cgen_var_630, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008050 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008051}
8052
8053void VkEncoder::vkCmdCopyQueryPoolResults(
8054 VkCommandBuffer commandBuffer,
8055 VkQueryPool queryPool,
8056 uint32_t firstQuery,
8057 uint32_t queryCount,
8058 VkBuffer dstBuffer,
8059 VkDeviceSize dstOffset,
8060 VkDeviceSize stride,
8061 VkQueryResultFlags flags)
8062{
8063 auto stream = mImpl->stream();
8064 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008065 auto resources = mImpl->resources();
8066 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008067 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008068 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008069 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008070 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008071 uint32_t local_queryCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008072 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008073 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008074 VkDeviceSize local_stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008075 VkQueryResultFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008076 local_commandBuffer = commandBuffer;
8077 local_queryPool = queryPool;
8078 local_firstQuery = firstQuery;
8079 local_queryCount = queryCount;
8080 local_dstBuffer = dstBuffer;
8081 local_dstOffset = dstOffset;
8082 local_stride = stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008083 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008084 countingStream->rewind();
8085 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008086 uint64_t cgen_var_631;
8087 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_631, 1);
8088 countingStream->write((uint64_t*)&cgen_var_631, 1 * 8);
8089 uint64_t cgen_var_632;
8090 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_632, 1);
8091 countingStream->write((uint64_t*)&cgen_var_632, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008092 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8093 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008094 uint64_t cgen_var_633;
8095 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_633, 1);
8096 countingStream->write((uint64_t*)&cgen_var_633, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008097 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8098 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
8099 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008100 }
8101 uint32_t packetSize_vkCmdCopyQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8102 countingStream->rewind();
8103 uint32_t opcode_vkCmdCopyQueryPoolResults = OP_vkCmdCopyQueryPoolResults;
8104 stream->write(&opcode_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
8105 stream->write(&packetSize_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008106 uint64_t cgen_var_634;
8107 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_634, 1);
8108 stream->write((uint64_t*)&cgen_var_634, 1 * 8);
8109 uint64_t cgen_var_635;
8110 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_635, 1);
8111 stream->write((uint64_t*)&cgen_var_635, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008112 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8113 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008114 uint64_t cgen_var_636;
8115 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_636, 1);
8116 stream->write((uint64_t*)&cgen_var_636, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008117 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8118 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
8119 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008120}
8121
8122void VkEncoder::vkCmdPushConstants(
8123 VkCommandBuffer commandBuffer,
8124 VkPipelineLayout layout,
8125 VkShaderStageFlags stageFlags,
8126 uint32_t offset,
8127 uint32_t size,
8128 const void* pValues)
8129{
8130 auto stream = mImpl->stream();
8131 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008132 auto resources = mImpl->resources();
8133 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008134 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008135 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008136 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008137 VkShaderStageFlags local_stageFlags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008138 uint32_t local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008139 uint32_t local_size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008140 void* local_pValues;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008141 local_commandBuffer = commandBuffer;
8142 local_layout = layout;
8143 local_stageFlags = stageFlags;
8144 local_offset = offset;
8145 local_size = size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008146 local_pValues = nullptr;
8147 if (pValues)
8148 {
8149 local_pValues = (void*)pool->dupArray(pValues, ((size)) * sizeof(const uint8_t));
8150 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008151 countingStream->rewind();
8152 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008153 uint64_t cgen_var_637;
8154 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_637, 1);
8155 countingStream->write((uint64_t*)&cgen_var_637, 1 * 8);
8156 uint64_t cgen_var_638;
8157 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_638, 1);
8158 countingStream->write((uint64_t*)&cgen_var_638, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008159 countingStream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
8160 countingStream->write((uint32_t*)&local_offset, sizeof(uint32_t));
8161 countingStream->write((uint32_t*)&local_size, sizeof(uint32_t));
8162 countingStream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008163 }
8164 uint32_t packetSize_vkCmdPushConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8165 countingStream->rewind();
8166 uint32_t opcode_vkCmdPushConstants = OP_vkCmdPushConstants;
8167 stream->write(&opcode_vkCmdPushConstants, sizeof(uint32_t));
8168 stream->write(&packetSize_vkCmdPushConstants, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008169 uint64_t cgen_var_639;
8170 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_639, 1);
8171 stream->write((uint64_t*)&cgen_var_639, 1 * 8);
8172 uint64_t cgen_var_640;
8173 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_640, 1);
8174 stream->write((uint64_t*)&cgen_var_640, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008175 stream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
8176 stream->write((uint32_t*)&local_offset, sizeof(uint32_t));
8177 stream->write((uint32_t*)&local_size, sizeof(uint32_t));
8178 stream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008179}
8180
8181void VkEncoder::vkCmdBeginRenderPass(
8182 VkCommandBuffer commandBuffer,
8183 const VkRenderPassBeginInfo* pRenderPassBegin,
8184 VkSubpassContents contents)
8185{
8186 auto stream = mImpl->stream();
8187 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008188 auto resources = mImpl->resources();
8189 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008190 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008191 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008192 VkRenderPassBeginInfo* local_pRenderPassBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008193 VkSubpassContents local_contents;
8194 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008195 local_pRenderPassBegin = nullptr;
8196 if (pRenderPassBegin)
8197 {
8198 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
8199 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8200 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008201 local_contents = contents;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008202 countingStream->rewind();
8203 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008204 uint64_t cgen_var_641;
8205 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_641, 1);
8206 countingStream->write((uint64_t*)&cgen_var_641, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008207 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8208 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008209 }
8210 uint32_t packetSize_vkCmdBeginRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8211 countingStream->rewind();
8212 uint32_t opcode_vkCmdBeginRenderPass = OP_vkCmdBeginRenderPass;
8213 stream->write(&opcode_vkCmdBeginRenderPass, sizeof(uint32_t));
8214 stream->write(&packetSize_vkCmdBeginRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008215 uint64_t cgen_var_642;
8216 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_642, 1);
8217 stream->write((uint64_t*)&cgen_var_642, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008218 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8219 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008220}
8221
8222void VkEncoder::vkCmdNextSubpass(
8223 VkCommandBuffer commandBuffer,
8224 VkSubpassContents contents)
8225{
8226 auto stream = mImpl->stream();
8227 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008228 auto resources = mImpl->resources();
8229 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008230 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008231 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008232 VkSubpassContents local_contents;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008233 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008234 local_contents = contents;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008235 countingStream->rewind();
8236 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008237 uint64_t cgen_var_643;
8238 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_643, 1);
8239 countingStream->write((uint64_t*)&cgen_var_643, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008240 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008241 }
8242 uint32_t packetSize_vkCmdNextSubpass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8243 countingStream->rewind();
8244 uint32_t opcode_vkCmdNextSubpass = OP_vkCmdNextSubpass;
8245 stream->write(&opcode_vkCmdNextSubpass, sizeof(uint32_t));
8246 stream->write(&packetSize_vkCmdNextSubpass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008247 uint64_t cgen_var_644;
8248 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_644, 1);
8249 stream->write((uint64_t*)&cgen_var_644, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008250 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008251}
8252
8253void VkEncoder::vkCmdEndRenderPass(
8254 VkCommandBuffer commandBuffer)
8255{
8256 auto stream = mImpl->stream();
8257 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008258 auto resources = mImpl->resources();
8259 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008260 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008261 VkCommandBuffer local_commandBuffer;
8262 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008263 countingStream->rewind();
8264 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008265 uint64_t cgen_var_645;
8266 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_645, 1);
8267 countingStream->write((uint64_t*)&cgen_var_645, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008268 }
8269 uint32_t packetSize_vkCmdEndRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8270 countingStream->rewind();
8271 uint32_t opcode_vkCmdEndRenderPass = OP_vkCmdEndRenderPass;
8272 stream->write(&opcode_vkCmdEndRenderPass, sizeof(uint32_t));
8273 stream->write(&packetSize_vkCmdEndRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008274 uint64_t cgen_var_646;
8275 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_646, 1);
8276 stream->write((uint64_t*)&cgen_var_646, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008277}
8278
8279void VkEncoder::vkCmdExecuteCommands(
8280 VkCommandBuffer commandBuffer,
8281 uint32_t commandBufferCount,
8282 const VkCommandBuffer* pCommandBuffers)
8283{
8284 auto stream = mImpl->stream();
8285 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008286 auto resources = mImpl->resources();
8287 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008288 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008289 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008290 uint32_t local_commandBufferCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008291 VkCommandBuffer* local_pCommandBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008292 local_commandBuffer = commandBuffer;
8293 local_commandBufferCount = commandBufferCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008294 local_pCommandBuffers = nullptr;
8295 if (pCommandBuffers)
8296 {
8297 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
8298 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008299 countingStream->rewind();
8300 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008301 uint64_t cgen_var_647;
8302 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_647, 1);
8303 countingStream->write((uint64_t*)&cgen_var_647, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008304 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008305 if (((commandBufferCount)))
8306 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008307 uint64_t* cgen_var_648;
8308 countingStream->alloc((void**)&cgen_var_648, ((commandBufferCount)) * 8);
8309 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_648, ((commandBufferCount)));
8310 countingStream->write((uint64_t*)cgen_var_648, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008311 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008312 }
8313 uint32_t packetSize_vkCmdExecuteCommands = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8314 countingStream->rewind();
8315 uint32_t opcode_vkCmdExecuteCommands = OP_vkCmdExecuteCommands;
8316 stream->write(&opcode_vkCmdExecuteCommands, sizeof(uint32_t));
8317 stream->write(&packetSize_vkCmdExecuteCommands, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008318 uint64_t cgen_var_649;
8319 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_649, 1);
8320 stream->write((uint64_t*)&cgen_var_649, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008321 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008322 if (((commandBufferCount)))
8323 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008324 uint64_t* cgen_var_650;
8325 stream->alloc((void**)&cgen_var_650, ((commandBufferCount)) * 8);
8326 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_650, ((commandBufferCount)));
8327 stream->write((uint64_t*)cgen_var_650, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008328 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008329}
8330
8331#endif
8332#ifdef VK_VERSION_1_1
8333VkResult VkEncoder::vkEnumerateInstanceVersion(
8334 uint32_t* pApiVersion)
8335{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008336 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08008337 vkEnumerateInstanceVersion_VkResult_return = mImpl->resources()->on_vkEnumerateInstanceVersion(this, VK_SUCCESS, pApiVersion);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008338 return vkEnumerateInstanceVersion_VkResult_return;
8339}
8340
8341VkResult VkEncoder::vkBindBufferMemory2(
8342 VkDevice device,
8343 uint32_t bindInfoCount,
8344 const VkBindBufferMemoryInfo* pBindInfos)
8345{
8346 auto stream = mImpl->stream();
8347 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008348 auto resources = mImpl->resources();
8349 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008350 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008351 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008352 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008353 VkBindBufferMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008354 local_device = device;
8355 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008356 local_pBindInfos = nullptr;
8357 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008358 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008359 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008360 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8361 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008362 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
8363 }
8364 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008365 countingStream->rewind();
8366 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008367 uint64_t cgen_var_651;
8368 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_651, 1);
8369 countingStream->write((uint64_t*)&cgen_var_651, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008370 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
8371 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8372 {
8373 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008374 }
8375 }
8376 uint32_t packetSize_vkBindBufferMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8377 countingStream->rewind();
8378 uint32_t opcode_vkBindBufferMemory2 = OP_vkBindBufferMemory2;
8379 stream->write(&opcode_vkBindBufferMemory2, sizeof(uint32_t));
8380 stream->write(&packetSize_vkBindBufferMemory2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008381 uint64_t cgen_var_652;
8382 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_652, 1);
8383 stream->write((uint64_t*)&cgen_var_652, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008384 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008385 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8386 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008387 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008388 }
8389 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
8390 stream->read(&vkBindBufferMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008391 countingStream->clearPool();
8392 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008393 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008394 return vkBindBufferMemory2_VkResult_return;
8395}
8396
8397VkResult VkEncoder::vkBindImageMemory2(
8398 VkDevice device,
8399 uint32_t bindInfoCount,
8400 const VkBindImageMemoryInfo* pBindInfos)
8401{
8402 auto stream = mImpl->stream();
8403 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008404 auto resources = mImpl->resources();
8405 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008406 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008407 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008408 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008409 VkBindImageMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008410 local_device = device;
8411 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008412 local_pBindInfos = nullptr;
8413 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008414 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008415 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008416 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8417 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008418 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
8419 }
8420 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008421 countingStream->rewind();
8422 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008423 uint64_t cgen_var_653;
8424 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_653, 1);
8425 countingStream->write((uint64_t*)&cgen_var_653, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008426 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
8427 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8428 {
8429 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008430 }
8431 }
8432 uint32_t packetSize_vkBindImageMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8433 countingStream->rewind();
8434 uint32_t opcode_vkBindImageMemory2 = OP_vkBindImageMemory2;
8435 stream->write(&opcode_vkBindImageMemory2, sizeof(uint32_t));
8436 stream->write(&packetSize_vkBindImageMemory2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008437 uint64_t cgen_var_654;
8438 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_654, 1);
8439 stream->write((uint64_t*)&cgen_var_654, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008440 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008441 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8442 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008443 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008444 }
8445 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
8446 stream->read(&vkBindImageMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008447 countingStream->clearPool();
8448 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008449 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008450 return vkBindImageMemory2_VkResult_return;
8451}
8452
8453void VkEncoder::vkGetDeviceGroupPeerMemoryFeatures(
8454 VkDevice device,
8455 uint32_t heapIndex,
8456 uint32_t localDeviceIndex,
8457 uint32_t remoteDeviceIndex,
8458 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
8459{
8460 auto stream = mImpl->stream();
8461 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008462 auto resources = mImpl->resources();
8463 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008464 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008465 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008466 uint32_t local_heapIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008467 uint32_t local_localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008468 uint32_t local_remoteDeviceIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008469 local_device = device;
8470 local_heapIndex = heapIndex;
8471 local_localDeviceIndex = localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008472 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008473 countingStream->rewind();
8474 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008475 uint64_t cgen_var_655;
8476 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_655, 1);
8477 countingStream->write((uint64_t*)&cgen_var_655, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008478 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
8479 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
8480 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008481 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
8482 }
8483 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8484 countingStream->rewind();
8485 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeatures = OP_vkGetDeviceGroupPeerMemoryFeatures;
8486 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
8487 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008488 uint64_t cgen_var_656;
8489 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_656, 1);
8490 stream->write((uint64_t*)&cgen_var_656, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008491 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
8492 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
8493 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008494 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
8495 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
8496}
8497
8498void VkEncoder::vkCmdSetDeviceMask(
8499 VkCommandBuffer commandBuffer,
8500 uint32_t deviceMask)
8501{
8502 auto stream = mImpl->stream();
8503 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008504 auto resources = mImpl->resources();
8505 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008506 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008507 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008508 uint32_t local_deviceMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008509 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008510 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008511 countingStream->rewind();
8512 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008513 uint64_t cgen_var_657;
8514 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_657, 1);
8515 countingStream->write((uint64_t*)&cgen_var_657, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008516 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008517 }
8518 uint32_t packetSize_vkCmdSetDeviceMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8519 countingStream->rewind();
8520 uint32_t opcode_vkCmdSetDeviceMask = OP_vkCmdSetDeviceMask;
8521 stream->write(&opcode_vkCmdSetDeviceMask, sizeof(uint32_t));
8522 stream->write(&packetSize_vkCmdSetDeviceMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008523 uint64_t cgen_var_658;
8524 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_658, 1);
8525 stream->write((uint64_t*)&cgen_var_658, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008526 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008527}
8528
8529void VkEncoder::vkCmdDispatchBase(
8530 VkCommandBuffer commandBuffer,
8531 uint32_t baseGroupX,
8532 uint32_t baseGroupY,
8533 uint32_t baseGroupZ,
8534 uint32_t groupCountX,
8535 uint32_t groupCountY,
8536 uint32_t groupCountZ)
8537{
8538 auto stream = mImpl->stream();
8539 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008540 auto resources = mImpl->resources();
8541 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008542 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008543 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008544 uint32_t local_baseGroupX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008545 uint32_t local_baseGroupY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008546 uint32_t local_baseGroupZ;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008547 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008548 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008549 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008550 local_commandBuffer = commandBuffer;
8551 local_baseGroupX = baseGroupX;
8552 local_baseGroupY = baseGroupY;
8553 local_baseGroupZ = baseGroupZ;
8554 local_groupCountX = groupCountX;
8555 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008556 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008557 countingStream->rewind();
8558 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008559 uint64_t cgen_var_659;
8560 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_659, 1);
8561 countingStream->write((uint64_t*)&cgen_var_659, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008562 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
8563 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
8564 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
8565 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
8566 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
8567 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008568 }
8569 uint32_t packetSize_vkCmdDispatchBase = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8570 countingStream->rewind();
8571 uint32_t opcode_vkCmdDispatchBase = OP_vkCmdDispatchBase;
8572 stream->write(&opcode_vkCmdDispatchBase, sizeof(uint32_t));
8573 stream->write(&packetSize_vkCmdDispatchBase, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008574 uint64_t cgen_var_660;
8575 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_660, 1);
8576 stream->write((uint64_t*)&cgen_var_660, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008577 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
8578 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
8579 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
8580 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
8581 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
8582 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008583}
8584
8585VkResult VkEncoder::vkEnumeratePhysicalDeviceGroups(
8586 VkInstance instance,
8587 uint32_t* pPhysicalDeviceGroupCount,
8588 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
8589{
8590 auto stream = mImpl->stream();
8591 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008592 auto resources = mImpl->resources();
8593 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008594 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008595 VkInstance local_instance;
8596 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008597 countingStream->rewind();
8598 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008599 uint64_t cgen_var_661;
8600 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_661, 1);
8601 countingStream->write((uint64_t*)&cgen_var_661, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008602 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008603 uint64_t cgen_var_662 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
8604 countingStream->putBe64(cgen_var_662);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008605 if (pPhysicalDeviceGroupCount)
8606 {
8607 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
8608 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008609 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008610 uint64_t cgen_var_663 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
8611 countingStream->putBe64(cgen_var_663);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008612 if (pPhysicalDeviceGroupProperties)
8613 {
8614 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
8615 {
8616 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
8617 }
8618 }
8619 }
8620 uint32_t packetSize_vkEnumeratePhysicalDeviceGroups = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8621 countingStream->rewind();
8622 uint32_t opcode_vkEnumeratePhysicalDeviceGroups = OP_vkEnumeratePhysicalDeviceGroups;
8623 stream->write(&opcode_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
8624 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008625 uint64_t cgen_var_664;
8626 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_664, 1);
8627 stream->write((uint64_t*)&cgen_var_664, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008628 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008629 uint64_t cgen_var_665 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
8630 stream->putBe64(cgen_var_665);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008631 if (pPhysicalDeviceGroupCount)
8632 {
8633 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
8634 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008635 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008636 uint64_t cgen_var_666 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
8637 stream->putBe64(cgen_var_666);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008638 if (pPhysicalDeviceGroupProperties)
8639 {
8640 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
8641 {
8642 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
8643 }
8644 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008645 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008646 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008647 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008648 if (pPhysicalDeviceGroupCount)
8649 {
8650 if (!(check_pPhysicalDeviceGroupCount))
8651 {
8652 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
8653 }
8654 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
8655 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008656 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008657 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008658 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008659 if (pPhysicalDeviceGroupProperties)
8660 {
8661 if (!(check_pPhysicalDeviceGroupProperties))
8662 {
8663 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
8664 }
8665 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
8666 {
8667 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
8668 }
8669 }
8670 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
8671 stream->read(&vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008672 countingStream->clearPool();
8673 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008674 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008675 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
8676}
8677
8678void VkEncoder::vkGetImageMemoryRequirements2(
8679 VkDevice device,
8680 const VkImageMemoryRequirementsInfo2* pInfo,
8681 VkMemoryRequirements2* pMemoryRequirements)
8682{
8683 auto stream = mImpl->stream();
8684 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008685 auto resources = mImpl->resources();
8686 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008687 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008688 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008689 VkImageMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008690 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008691 local_pInfo = nullptr;
8692 if (pInfo)
8693 {
8694 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
8695 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
8696 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008697 countingStream->rewind();
8698 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008699 uint64_t cgen_var_669;
8700 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_669, 1);
8701 countingStream->write((uint64_t*)&cgen_var_669, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008702 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008703 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
8704 }
8705 uint32_t packetSize_vkGetImageMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8706 countingStream->rewind();
8707 uint32_t opcode_vkGetImageMemoryRequirements2 = OP_vkGetImageMemoryRequirements2;
8708 stream->write(&opcode_vkGetImageMemoryRequirements2, sizeof(uint32_t));
8709 stream->write(&packetSize_vkGetImageMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008710 uint64_t cgen_var_670;
8711 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_670, 1);
8712 stream->write((uint64_t*)&cgen_var_670, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008713 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008714 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8715 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8716}
8717
8718void VkEncoder::vkGetBufferMemoryRequirements2(
8719 VkDevice device,
8720 const VkBufferMemoryRequirementsInfo2* pInfo,
8721 VkMemoryRequirements2* pMemoryRequirements)
8722{
8723 auto stream = mImpl->stream();
8724 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008725 auto resources = mImpl->resources();
8726 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008727 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008728 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008729 VkBufferMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008730 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008731 local_pInfo = nullptr;
8732 if (pInfo)
8733 {
8734 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
8735 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
8736 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008737 countingStream->rewind();
8738 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008739 uint64_t cgen_var_671;
8740 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_671, 1);
8741 countingStream->write((uint64_t*)&cgen_var_671, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008742 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008743 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
8744 }
8745 uint32_t packetSize_vkGetBufferMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8746 countingStream->rewind();
8747 uint32_t opcode_vkGetBufferMemoryRequirements2 = OP_vkGetBufferMemoryRequirements2;
8748 stream->write(&opcode_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
8749 stream->write(&packetSize_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008750 uint64_t cgen_var_672;
8751 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_672, 1);
8752 stream->write((uint64_t*)&cgen_var_672, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008753 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008754 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8755 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8756}
8757
8758void VkEncoder::vkGetImageSparseMemoryRequirements2(
8759 VkDevice device,
8760 const VkImageSparseMemoryRequirementsInfo2* pInfo,
8761 uint32_t* pSparseMemoryRequirementCount,
8762 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
8763{
8764 auto stream = mImpl->stream();
8765 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008766 auto resources = mImpl->resources();
8767 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008768 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008769 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008770 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008771 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008772 local_pInfo = nullptr;
8773 if (pInfo)
8774 {
8775 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
8776 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
8777 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008778 countingStream->rewind();
8779 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008780 uint64_t cgen_var_673;
8781 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_673, 1);
8782 countingStream->write((uint64_t*)&cgen_var_673, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008783 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008784 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008785 uint64_t cgen_var_674 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
8786 countingStream->putBe64(cgen_var_674);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008787 if (pSparseMemoryRequirementCount)
8788 {
8789 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
8790 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008791 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008792 uint64_t cgen_var_675 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
8793 countingStream->putBe64(cgen_var_675);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008794 if (pSparseMemoryRequirements)
8795 {
8796 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
8797 {
8798 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
8799 }
8800 }
8801 }
8802 uint32_t packetSize_vkGetImageSparseMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8803 countingStream->rewind();
8804 uint32_t opcode_vkGetImageSparseMemoryRequirements2 = OP_vkGetImageSparseMemoryRequirements2;
8805 stream->write(&opcode_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
8806 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008807 uint64_t cgen_var_676;
8808 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_676, 1);
8809 stream->write((uint64_t*)&cgen_var_676, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008810 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008811 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008812 uint64_t cgen_var_677 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
8813 stream->putBe64(cgen_var_677);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008814 if (pSparseMemoryRequirementCount)
8815 {
8816 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
8817 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008818 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008819 uint64_t cgen_var_678 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
8820 stream->putBe64(cgen_var_678);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008821 if (pSparseMemoryRequirements)
8822 {
8823 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
8824 {
8825 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
8826 }
8827 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008828 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008829 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008830 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008831 if (pSparseMemoryRequirementCount)
8832 {
8833 if (!(check_pSparseMemoryRequirementCount))
8834 {
8835 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
8836 }
8837 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
8838 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008839 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008840 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008841 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008842 if (pSparseMemoryRequirements)
8843 {
8844 if (!(check_pSparseMemoryRequirements))
8845 {
8846 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
8847 }
8848 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
8849 {
8850 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
8851 }
8852 }
8853}
8854
8855void VkEncoder::vkGetPhysicalDeviceFeatures2(
8856 VkPhysicalDevice physicalDevice,
8857 VkPhysicalDeviceFeatures2* pFeatures)
8858{
8859 auto stream = mImpl->stream();
8860 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008861 auto resources = mImpl->resources();
8862 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008863 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008864 VkPhysicalDevice local_physicalDevice;
8865 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008866 countingStream->rewind();
8867 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008868 uint64_t cgen_var_681;
8869 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_681, 1);
8870 countingStream->write((uint64_t*)&cgen_var_681, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008871 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
8872 }
8873 uint32_t packetSize_vkGetPhysicalDeviceFeatures2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8874 countingStream->rewind();
8875 uint32_t opcode_vkGetPhysicalDeviceFeatures2 = OP_vkGetPhysicalDeviceFeatures2;
8876 stream->write(&opcode_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
8877 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008878 uint64_t cgen_var_682;
8879 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_682, 1);
8880 stream->write((uint64_t*)&cgen_var_682, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008881 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
8882 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
8883}
8884
8885void VkEncoder::vkGetPhysicalDeviceProperties2(
8886 VkPhysicalDevice physicalDevice,
8887 VkPhysicalDeviceProperties2* pProperties)
8888{
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08008889 mImpl->resources()->on_vkGetPhysicalDeviceProperties2(this, physicalDevice, pProperties);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008890}
8891
8892void VkEncoder::vkGetPhysicalDeviceFormatProperties2(
8893 VkPhysicalDevice physicalDevice,
8894 VkFormat format,
8895 VkFormatProperties2* pFormatProperties)
8896{
8897 auto stream = mImpl->stream();
8898 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008899 auto resources = mImpl->resources();
8900 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008901 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008902 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008903 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008904 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008905 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008906 countingStream->rewind();
8907 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008908 uint64_t cgen_var_683;
8909 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_683, 1);
8910 countingStream->write((uint64_t*)&cgen_var_683, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008911 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008912 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
8913 }
8914 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8915 countingStream->rewind();
8916 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2 = OP_vkGetPhysicalDeviceFormatProperties2;
8917 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
8918 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008919 uint64_t cgen_var_684;
8920 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_684, 1);
8921 stream->write((uint64_t*)&cgen_var_684, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008922 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008923 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
8924 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
8925}
8926
8927VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2(
8928 VkPhysicalDevice physicalDevice,
8929 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
8930 VkImageFormatProperties2* pImageFormatProperties)
8931{
8932 auto stream = mImpl->stream();
8933 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008934 auto resources = mImpl->resources();
8935 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008936 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008937 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008938 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008939 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008940 local_pImageFormatInfo = nullptr;
8941 if (pImageFormatInfo)
8942 {
8943 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
8944 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
8945 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008946 countingStream->rewind();
8947 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008948 uint64_t cgen_var_685;
8949 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_685, 1);
8950 countingStream->write((uint64_t*)&cgen_var_685, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008951 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008952 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
8953 }
8954 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8955 countingStream->rewind();
8956 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2 = OP_vkGetPhysicalDeviceImageFormatProperties2;
8957 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
8958 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008959 uint64_t cgen_var_686;
8960 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_686, 1);
8961 stream->write((uint64_t*)&cgen_var_686, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008962 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008963 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
8964 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
8965 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
8966 stream->read(&vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008967 countingStream->clearPool();
8968 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008969 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008970 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
8971}
8972
8973void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2(
8974 VkPhysicalDevice physicalDevice,
8975 uint32_t* pQueueFamilyPropertyCount,
8976 VkQueueFamilyProperties2* pQueueFamilyProperties)
8977{
8978 auto stream = mImpl->stream();
8979 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008980 auto resources = mImpl->resources();
8981 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008982 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008983 VkPhysicalDevice local_physicalDevice;
8984 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008985 countingStream->rewind();
8986 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008987 uint64_t cgen_var_687;
8988 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_687, 1);
8989 countingStream->write((uint64_t*)&cgen_var_687, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008990 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008991 uint64_t cgen_var_688 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
8992 countingStream->putBe64(cgen_var_688);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008993 if (pQueueFamilyPropertyCount)
8994 {
8995 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
8996 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008997 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008998 uint64_t cgen_var_689 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
8999 countingStream->putBe64(cgen_var_689);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009000 if (pQueueFamilyProperties)
9001 {
9002 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9003 {
9004 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9005 }
9006 }
9007 }
9008 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9009 countingStream->rewind();
9010 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2 = OP_vkGetPhysicalDeviceQueueFamilyProperties2;
9011 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
9012 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009013 uint64_t cgen_var_690;
9014 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_690, 1);
9015 stream->write((uint64_t*)&cgen_var_690, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009016 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009017 uint64_t cgen_var_691 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
9018 stream->putBe64(cgen_var_691);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009019 if (pQueueFamilyPropertyCount)
9020 {
9021 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
9022 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009023 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009024 uint64_t cgen_var_692 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
9025 stream->putBe64(cgen_var_692);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009026 if (pQueueFamilyProperties)
9027 {
9028 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9029 {
9030 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9031 }
9032 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009033 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009034 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009035 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009036 if (pQueueFamilyPropertyCount)
9037 {
9038 if (!(check_pQueueFamilyPropertyCount))
9039 {
9040 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
9041 }
9042 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
9043 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009044 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009045 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009046 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009047 if (pQueueFamilyProperties)
9048 {
9049 if (!(check_pQueueFamilyProperties))
9050 {
9051 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
9052 }
9053 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9054 {
9055 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9056 }
9057 }
9058}
9059
9060void VkEncoder::vkGetPhysicalDeviceMemoryProperties2(
9061 VkPhysicalDevice physicalDevice,
9062 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
9063{
9064 auto stream = mImpl->stream();
9065 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009066 auto resources = mImpl->resources();
9067 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009068 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009069 VkPhysicalDevice local_physicalDevice;
9070 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009071 countingStream->rewind();
9072 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009073 uint64_t cgen_var_695;
9074 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_695, 1);
9075 countingStream->write((uint64_t*)&cgen_var_695, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009076 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9077 }
9078 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9079 countingStream->rewind();
9080 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2 = OP_vkGetPhysicalDeviceMemoryProperties2;
9081 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
9082 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009083 uint64_t cgen_var_696;
9084 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_696, 1);
9085 stream->write((uint64_t*)&cgen_var_696, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009086 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9087 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9088}
9089
9090void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2(
9091 VkPhysicalDevice physicalDevice,
9092 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
9093 uint32_t* pPropertyCount,
9094 VkSparseImageFormatProperties2* pProperties)
9095{
9096 auto stream = mImpl->stream();
9097 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009098 auto resources = mImpl->resources();
9099 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009100 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009101 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009102 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009103 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009104 local_pFormatInfo = nullptr;
9105 if (pFormatInfo)
9106 {
9107 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
9108 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
9109 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009110 countingStream->rewind();
9111 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009112 uint64_t cgen_var_697;
9113 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_697, 1);
9114 countingStream->write((uint64_t*)&cgen_var_697, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009115 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009116 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009117 uint64_t cgen_var_698 = (uint64_t)(uintptr_t)pPropertyCount;
9118 countingStream->putBe64(cgen_var_698);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009119 if (pPropertyCount)
9120 {
9121 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
9122 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009123 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009124 uint64_t cgen_var_699 = (uint64_t)(uintptr_t)pProperties;
9125 countingStream->putBe64(cgen_var_699);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009126 if (pProperties)
9127 {
9128 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9129 {
9130 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
9131 }
9132 }
9133 }
9134 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9135 countingStream->rewind();
9136 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2 = OP_vkGetPhysicalDeviceSparseImageFormatProperties2;
9137 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
9138 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009139 uint64_t cgen_var_700;
9140 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_700, 1);
9141 stream->write((uint64_t*)&cgen_var_700, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009142 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009143 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009144 uint64_t cgen_var_701 = (uint64_t)(uintptr_t)pPropertyCount;
9145 stream->putBe64(cgen_var_701);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009146 if (pPropertyCount)
9147 {
9148 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
9149 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009150 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009151 uint64_t cgen_var_702 = (uint64_t)(uintptr_t)pProperties;
9152 stream->putBe64(cgen_var_702);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009153 if (pProperties)
9154 {
9155 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9156 {
9157 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
9158 }
9159 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009160 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009161 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009162 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009163 if (pPropertyCount)
9164 {
9165 if (!(check_pPropertyCount))
9166 {
9167 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
9168 }
9169 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
9170 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009171 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009172 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009173 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009174 if (pProperties)
9175 {
9176 if (!(check_pProperties))
9177 {
9178 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
9179 }
9180 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9181 {
9182 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
9183 }
9184 }
9185}
9186
9187void VkEncoder::vkTrimCommandPool(
9188 VkDevice device,
9189 VkCommandPool commandPool,
9190 VkCommandPoolTrimFlags flags)
9191{
9192 auto stream = mImpl->stream();
9193 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009194 auto resources = mImpl->resources();
9195 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009196 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009197 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009198 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009199 VkCommandPoolTrimFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009200 local_device = device;
9201 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009202 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009203 countingStream->rewind();
9204 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009205 uint64_t cgen_var_705;
9206 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_705, 1);
9207 countingStream->write((uint64_t*)&cgen_var_705, 1 * 8);
9208 uint64_t cgen_var_706;
9209 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_706, 1);
9210 countingStream->write((uint64_t*)&cgen_var_706, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009211 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009212 }
9213 uint32_t packetSize_vkTrimCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9214 countingStream->rewind();
9215 uint32_t opcode_vkTrimCommandPool = OP_vkTrimCommandPool;
9216 stream->write(&opcode_vkTrimCommandPool, sizeof(uint32_t));
9217 stream->write(&packetSize_vkTrimCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009218 uint64_t cgen_var_707;
9219 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_707, 1);
9220 stream->write((uint64_t*)&cgen_var_707, 1 * 8);
9221 uint64_t cgen_var_708;
9222 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_708, 1);
9223 stream->write((uint64_t*)&cgen_var_708, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009224 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009225}
9226
9227void VkEncoder::vkGetDeviceQueue2(
9228 VkDevice device,
9229 const VkDeviceQueueInfo2* pQueueInfo,
9230 VkQueue* pQueue)
9231{
9232 auto stream = mImpl->stream();
9233 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009234 auto resources = mImpl->resources();
9235 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009236 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009237 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009238 VkDeviceQueueInfo2* local_pQueueInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009239 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009240 local_pQueueInfo = nullptr;
9241 if (pQueueInfo)
9242 {
9243 local_pQueueInfo = (VkDeviceQueueInfo2*)pool->alloc(sizeof(const VkDeviceQueueInfo2));
9244 deepcopy_VkDeviceQueueInfo2(pool, pQueueInfo, (VkDeviceQueueInfo2*)(local_pQueueInfo));
9245 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009246 countingStream->rewind();
9247 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009248 uint64_t cgen_var_709;
9249 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_709, 1);
9250 countingStream->write((uint64_t*)&cgen_var_709, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009251 marshal_VkDeviceQueueInfo2(countingStream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009252 uint64_t cgen_var_710;
9253 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_710, 1);
9254 countingStream->write((uint64_t*)&cgen_var_710, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009255 }
9256 uint32_t packetSize_vkGetDeviceQueue2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9257 countingStream->rewind();
9258 uint32_t opcode_vkGetDeviceQueue2 = OP_vkGetDeviceQueue2;
9259 stream->write(&opcode_vkGetDeviceQueue2, sizeof(uint32_t));
9260 stream->write(&packetSize_vkGetDeviceQueue2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009261 uint64_t cgen_var_711;
9262 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_711, 1);
9263 stream->write((uint64_t*)&cgen_var_711, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009264 marshal_VkDeviceQueueInfo2(stream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08009265 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009266 uint64_t cgen_var_712;
9267 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_712, 1);
9268 stream->write((uint64_t*)&cgen_var_712, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009269 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009270 uint64_t cgen_var_713;
9271 stream->read((uint64_t*)&cgen_var_713, 8);
9272 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_713, (VkQueue*)pQueue, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009273}
9274
9275VkResult VkEncoder::vkCreateSamplerYcbcrConversion(
9276 VkDevice device,
9277 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
9278 const VkAllocationCallbacks* pAllocator,
9279 VkSamplerYcbcrConversion* pYcbcrConversion)
9280{
9281 auto stream = mImpl->stream();
9282 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009283 auto resources = mImpl->resources();
9284 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009285 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009286 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009287 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009288 VkAllocationCallbacks* local_pAllocator;
9289 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009290 local_pCreateInfo = nullptr;
9291 if (pCreateInfo)
9292 {
9293 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
9294 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
9295 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009296 local_pAllocator = nullptr;
9297 if (pAllocator)
9298 {
9299 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9300 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9301 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009302 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009303 countingStream->rewind();
9304 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009305 uint64_t cgen_var_714;
9306 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_714, 1);
9307 countingStream->write((uint64_t*)&cgen_var_714, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009308 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009309 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009310 uint64_t cgen_var_715 = (uint64_t)(uintptr_t)local_pAllocator;
9311 countingStream->putBe64(cgen_var_715);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009312 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009313 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009314 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009315 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009316 uint64_t cgen_var_716;
9317 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_716, 1);
9318 countingStream->write((uint64_t*)&cgen_var_716, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009319 }
9320 uint32_t packetSize_vkCreateSamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9321 countingStream->rewind();
9322 uint32_t opcode_vkCreateSamplerYcbcrConversion = OP_vkCreateSamplerYcbcrConversion;
9323 stream->write(&opcode_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
9324 stream->write(&packetSize_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009325 uint64_t cgen_var_717;
9326 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_717, 1);
9327 stream->write((uint64_t*)&cgen_var_717, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009328 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009329 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009330 uint64_t cgen_var_718 = (uint64_t)(uintptr_t)local_pAllocator;
9331 stream->putBe64(cgen_var_718);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009332 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009333 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009334 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009335 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08009336 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009337 uint64_t cgen_var_719;
9338 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_719, 1);
9339 stream->write((uint64_t*)&cgen_var_719, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009340 stream->setHandleMapping(resources->unwrapMapping());
9341 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009342 uint64_t cgen_var_720;
9343 stream->read((uint64_t*)&cgen_var_720, 8);
9344 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_720, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009345 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009346 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
9347 stream->read(&vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009348 countingStream->clearPool();
9349 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009350 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009351 return vkCreateSamplerYcbcrConversion_VkResult_return;
9352}
9353
9354void VkEncoder::vkDestroySamplerYcbcrConversion(
9355 VkDevice device,
9356 VkSamplerYcbcrConversion ycbcrConversion,
9357 const VkAllocationCallbacks* pAllocator)
9358{
9359 auto stream = mImpl->stream();
9360 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009361 auto resources = mImpl->resources();
9362 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009363 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009364 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009365 VkSamplerYcbcrConversion local_ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009366 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009367 local_device = device;
9368 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009369 local_pAllocator = nullptr;
9370 if (pAllocator)
9371 {
9372 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9373 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9374 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009375 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009376 countingStream->rewind();
9377 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009378 uint64_t cgen_var_721;
9379 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_721, 1);
9380 countingStream->write((uint64_t*)&cgen_var_721, 1 * 8);
9381 uint64_t cgen_var_722;
9382 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_722, 1);
9383 countingStream->write((uint64_t*)&cgen_var_722, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009384 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009385 uint64_t cgen_var_723 = (uint64_t)(uintptr_t)local_pAllocator;
9386 countingStream->putBe64(cgen_var_723);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009387 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009388 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009389 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009390 }
9391 }
9392 uint32_t packetSize_vkDestroySamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9393 countingStream->rewind();
9394 uint32_t opcode_vkDestroySamplerYcbcrConversion = OP_vkDestroySamplerYcbcrConversion;
9395 stream->write(&opcode_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
9396 stream->write(&packetSize_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009397 uint64_t cgen_var_724;
9398 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_724, 1);
9399 stream->write((uint64_t*)&cgen_var_724, 1 * 8);
9400 uint64_t cgen_var_725;
9401 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_725, 1);
9402 stream->write((uint64_t*)&cgen_var_725, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009403 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009404 uint64_t cgen_var_726 = (uint64_t)(uintptr_t)local_pAllocator;
9405 stream->putBe64(cgen_var_726);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009406 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009407 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009408 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009409 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009410 resources->destroyMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&ycbcrConversion);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009411}
9412
9413VkResult VkEncoder::vkCreateDescriptorUpdateTemplate(
9414 VkDevice device,
9415 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
9416 const VkAllocationCallbacks* pAllocator,
9417 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
9418{
9419 auto stream = mImpl->stream();
9420 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009421 auto resources = mImpl->resources();
9422 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009423 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009424 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009425 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009426 VkAllocationCallbacks* local_pAllocator;
9427 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009428 local_pCreateInfo = nullptr;
9429 if (pCreateInfo)
9430 {
9431 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
9432 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
9433 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009434 local_pAllocator = nullptr;
9435 if (pAllocator)
9436 {
9437 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9438 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9439 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009440 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009441 countingStream->rewind();
9442 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009443 uint64_t cgen_var_727;
9444 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_727, 1);
9445 countingStream->write((uint64_t*)&cgen_var_727, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009446 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009447 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009448 uint64_t cgen_var_728 = (uint64_t)(uintptr_t)local_pAllocator;
9449 countingStream->putBe64(cgen_var_728);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009450 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009451 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009452 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009453 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009454 uint64_t cgen_var_729;
9455 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_729, 1);
9456 countingStream->write((uint64_t*)&cgen_var_729, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009457 }
9458 uint32_t packetSize_vkCreateDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9459 countingStream->rewind();
9460 uint32_t opcode_vkCreateDescriptorUpdateTemplate = OP_vkCreateDescriptorUpdateTemplate;
9461 stream->write(&opcode_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
9462 stream->write(&packetSize_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009463 uint64_t cgen_var_730;
9464 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_730, 1);
9465 stream->write((uint64_t*)&cgen_var_730, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009466 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009467 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009468 uint64_t cgen_var_731 = (uint64_t)(uintptr_t)local_pAllocator;
9469 stream->putBe64(cgen_var_731);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009470 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009471 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009472 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009473 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08009474 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009475 uint64_t cgen_var_732;
9476 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_732, 1);
9477 stream->write((uint64_t*)&cgen_var_732, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009478 stream->setHandleMapping(resources->unwrapMapping());
9479 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009480 uint64_t cgen_var_733;
9481 stream->read((uint64_t*)&cgen_var_733, 8);
9482 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_733, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009483 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009484 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
9485 stream->read(&vkCreateDescriptorUpdateTemplate_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009486 countingStream->clearPool();
9487 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009488 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009489 return vkCreateDescriptorUpdateTemplate_VkResult_return;
9490}
9491
9492void VkEncoder::vkDestroyDescriptorUpdateTemplate(
9493 VkDevice device,
9494 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
9495 const VkAllocationCallbacks* pAllocator)
9496{
9497 auto stream = mImpl->stream();
9498 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009499 auto resources = mImpl->resources();
9500 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009501 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009502 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009503 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009504 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009505 local_device = device;
9506 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009507 local_pAllocator = nullptr;
9508 if (pAllocator)
9509 {
9510 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9511 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9512 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009513 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009514 countingStream->rewind();
9515 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009516 uint64_t cgen_var_734;
9517 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_734, 1);
9518 countingStream->write((uint64_t*)&cgen_var_734, 1 * 8);
9519 uint64_t cgen_var_735;
9520 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_735, 1);
9521 countingStream->write((uint64_t*)&cgen_var_735, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009522 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009523 uint64_t cgen_var_736 = (uint64_t)(uintptr_t)local_pAllocator;
9524 countingStream->putBe64(cgen_var_736);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009525 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009526 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009527 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009528 }
9529 }
9530 uint32_t packetSize_vkDestroyDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9531 countingStream->rewind();
9532 uint32_t opcode_vkDestroyDescriptorUpdateTemplate = OP_vkDestroyDescriptorUpdateTemplate;
9533 stream->write(&opcode_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
9534 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009535 uint64_t cgen_var_737;
9536 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_737, 1);
9537 stream->write((uint64_t*)&cgen_var_737, 1 * 8);
9538 uint64_t cgen_var_738;
9539 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_738, 1);
9540 stream->write((uint64_t*)&cgen_var_738, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009541 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009542 uint64_t cgen_var_739 = (uint64_t)(uintptr_t)local_pAllocator;
9543 stream->putBe64(cgen_var_739);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009544 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009545 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009546 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009547 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009548 resources->destroyMapping()->mapHandles_VkDescriptorUpdateTemplate((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009549}
9550
9551void VkEncoder::vkUpdateDescriptorSetWithTemplate(
9552 VkDevice device,
9553 VkDescriptorSet descriptorSet,
9554 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
9555 const void* pData)
9556{
9557 auto stream = mImpl->stream();
9558 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009559 auto resources = mImpl->resources();
9560 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009561 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009562 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009563 VkDescriptorSet local_descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009564 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009565 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009566 local_device = device;
9567 local_descriptorSet = descriptorSet;
9568 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009569 local_pData = nullptr;
9570 if (pData)
9571 {
9572 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
9573 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009574 countingStream->rewind();
9575 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009576 uint64_t cgen_var_740;
9577 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_740, 1);
9578 countingStream->write((uint64_t*)&cgen_var_740, 1 * 8);
9579 uint64_t cgen_var_741;
9580 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_741, 1);
9581 countingStream->write((uint64_t*)&cgen_var_741, 1 * 8);
9582 uint64_t cgen_var_742;
9583 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_742, 1);
9584 countingStream->write((uint64_t*)&cgen_var_742, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009585 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009586 uint64_t cgen_var_743 = (uint64_t)(uintptr_t)local_pData;
9587 countingStream->putBe64(cgen_var_743);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009588 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009589 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009590 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009591 }
9592 }
9593 uint32_t packetSize_vkUpdateDescriptorSetWithTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9594 countingStream->rewind();
9595 uint32_t opcode_vkUpdateDescriptorSetWithTemplate = OP_vkUpdateDescriptorSetWithTemplate;
9596 stream->write(&opcode_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
9597 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009598 uint64_t cgen_var_744;
9599 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_744, 1);
9600 stream->write((uint64_t*)&cgen_var_744, 1 * 8);
9601 uint64_t cgen_var_745;
9602 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_745, 1);
9603 stream->write((uint64_t*)&cgen_var_745, 1 * 8);
9604 uint64_t cgen_var_746;
9605 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_746, 1);
9606 stream->write((uint64_t*)&cgen_var_746, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009607 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009608 uint64_t cgen_var_747 = (uint64_t)(uintptr_t)local_pData;
9609 stream->putBe64(cgen_var_747);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009610 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009611 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009612 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009613 }
9614}
9615
9616void VkEncoder::vkGetPhysicalDeviceExternalBufferProperties(
9617 VkPhysicalDevice physicalDevice,
9618 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
9619 VkExternalBufferProperties* pExternalBufferProperties)
9620{
9621 auto stream = mImpl->stream();
9622 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009623 auto resources = mImpl->resources();
9624 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009625 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009626 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009627 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009628 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009629 local_pExternalBufferInfo = nullptr;
9630 if (pExternalBufferInfo)
9631 {
9632 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
9633 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
9634 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009635 countingStream->rewind();
9636 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009637 uint64_t cgen_var_748;
9638 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_748, 1);
9639 countingStream->write((uint64_t*)&cgen_var_748, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009640 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009641 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
9642 }
9643 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9644 countingStream->rewind();
9645 uint32_t opcode_vkGetPhysicalDeviceExternalBufferProperties = OP_vkGetPhysicalDeviceExternalBufferProperties;
9646 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
9647 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009648 uint64_t cgen_var_749;
9649 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_749, 1);
9650 stream->write((uint64_t*)&cgen_var_749, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009651 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009652 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
9653 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
9654}
9655
9656void VkEncoder::vkGetPhysicalDeviceExternalFenceProperties(
9657 VkPhysicalDevice physicalDevice,
9658 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
9659 VkExternalFenceProperties* pExternalFenceProperties)
9660{
9661 auto stream = mImpl->stream();
9662 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009663 auto resources = mImpl->resources();
9664 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009665 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009666 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009667 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009668 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009669 local_pExternalFenceInfo = nullptr;
9670 if (pExternalFenceInfo)
9671 {
9672 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
9673 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
9674 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009675 countingStream->rewind();
9676 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009677 uint64_t cgen_var_750;
9678 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_750, 1);
9679 countingStream->write((uint64_t*)&cgen_var_750, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009680 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009681 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
9682 }
9683 uint32_t packetSize_vkGetPhysicalDeviceExternalFenceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9684 countingStream->rewind();
9685 uint32_t opcode_vkGetPhysicalDeviceExternalFenceProperties = OP_vkGetPhysicalDeviceExternalFenceProperties;
9686 stream->write(&opcode_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
9687 stream->write(&packetSize_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009688 uint64_t cgen_var_751;
9689 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_751, 1);
9690 stream->write((uint64_t*)&cgen_var_751, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009691 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009692 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
9693 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
9694}
9695
9696void VkEncoder::vkGetPhysicalDeviceExternalSemaphoreProperties(
9697 VkPhysicalDevice physicalDevice,
9698 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
9699 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
9700{
9701 auto stream = mImpl->stream();
9702 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009703 auto resources = mImpl->resources();
9704 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009705 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009706 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009707 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009708 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009709 local_pExternalSemaphoreInfo = nullptr;
9710 if (pExternalSemaphoreInfo)
9711 {
9712 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
9713 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
9714 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009715 countingStream->rewind();
9716 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009717 uint64_t cgen_var_752;
9718 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_752, 1);
9719 countingStream->write((uint64_t*)&cgen_var_752, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009720 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009721 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
9722 }
9723 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9724 countingStream->rewind();
9725 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphoreProperties = OP_vkGetPhysicalDeviceExternalSemaphoreProperties;
9726 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
9727 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009728 uint64_t cgen_var_753;
9729 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_753, 1);
9730 stream->write((uint64_t*)&cgen_var_753, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009731 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009732 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
9733 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
9734}
9735
9736void VkEncoder::vkGetDescriptorSetLayoutSupport(
9737 VkDevice device,
9738 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
9739 VkDescriptorSetLayoutSupport* pSupport)
9740{
9741 auto stream = mImpl->stream();
9742 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009743 auto resources = mImpl->resources();
9744 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009745 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009746 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009747 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009748 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009749 local_pCreateInfo = nullptr;
9750 if (pCreateInfo)
9751 {
9752 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
9753 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
9754 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009755 countingStream->rewind();
9756 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009757 uint64_t cgen_var_754;
9758 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_754, 1);
9759 countingStream->write((uint64_t*)&cgen_var_754, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009760 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009761 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
9762 }
9763 uint32_t packetSize_vkGetDescriptorSetLayoutSupport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9764 countingStream->rewind();
9765 uint32_t opcode_vkGetDescriptorSetLayoutSupport = OP_vkGetDescriptorSetLayoutSupport;
9766 stream->write(&opcode_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
9767 stream->write(&packetSize_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009768 uint64_t cgen_var_755;
9769 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_755, 1);
9770 stream->write((uint64_t*)&cgen_var_755, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009771 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009772 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
9773 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
9774}
9775
9776#endif
9777#ifdef VK_KHR_surface
9778void VkEncoder::vkDestroySurfaceKHR(
9779 VkInstance instance,
9780 VkSurfaceKHR surface,
9781 const VkAllocationCallbacks* pAllocator)
9782{
9783 auto stream = mImpl->stream();
9784 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009785 auto resources = mImpl->resources();
9786 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009787 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009788 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009789 VkSurfaceKHR local_surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009790 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009791 local_instance = instance;
9792 local_surface = surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009793 local_pAllocator = nullptr;
9794 if (pAllocator)
9795 {
9796 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9797 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9798 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009799 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009800 countingStream->rewind();
9801 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009802 uint64_t cgen_var_756;
9803 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_756, 1);
9804 countingStream->write((uint64_t*)&cgen_var_756, 1 * 8);
9805 uint64_t cgen_var_757;
9806 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_757, 1);
9807 countingStream->write((uint64_t*)&cgen_var_757, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009808 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009809 uint64_t cgen_var_758 = (uint64_t)(uintptr_t)local_pAllocator;
9810 countingStream->putBe64(cgen_var_758);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009811 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009812 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009813 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009814 }
9815 }
9816 uint32_t packetSize_vkDestroySurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9817 countingStream->rewind();
9818 uint32_t opcode_vkDestroySurfaceKHR = OP_vkDestroySurfaceKHR;
9819 stream->write(&opcode_vkDestroySurfaceKHR, sizeof(uint32_t));
9820 stream->write(&packetSize_vkDestroySurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009821 uint64_t cgen_var_759;
9822 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_759, 1);
9823 stream->write((uint64_t*)&cgen_var_759, 1 * 8);
9824 uint64_t cgen_var_760;
9825 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_760, 1);
9826 stream->write((uint64_t*)&cgen_var_760, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009827 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009828 uint64_t cgen_var_761 = (uint64_t)(uintptr_t)local_pAllocator;
9829 stream->putBe64(cgen_var_761);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009830 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009831 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009832 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009833 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009834 resources->destroyMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&surface);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009835}
9836
9837VkResult VkEncoder::vkGetPhysicalDeviceSurfaceSupportKHR(
9838 VkPhysicalDevice physicalDevice,
9839 uint32_t queueFamilyIndex,
9840 VkSurfaceKHR surface,
9841 VkBool32* pSupported)
9842{
9843 auto stream = mImpl->stream();
9844 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009845 auto resources = mImpl->resources();
9846 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009847 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009848 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009849 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009850 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009851 local_physicalDevice = physicalDevice;
9852 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009853 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009854 countingStream->rewind();
9855 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009856 uint64_t cgen_var_762;
9857 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_762, 1);
9858 countingStream->write((uint64_t*)&cgen_var_762, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009859 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009860 uint64_t cgen_var_763;
9861 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_763, 1);
9862 countingStream->write((uint64_t*)&cgen_var_763, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009863 countingStream->write((VkBool32*)pSupported, sizeof(VkBool32));
9864 }
9865 uint32_t packetSize_vkGetPhysicalDeviceSurfaceSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9866 countingStream->rewind();
9867 uint32_t opcode_vkGetPhysicalDeviceSurfaceSupportKHR = OP_vkGetPhysicalDeviceSurfaceSupportKHR;
9868 stream->write(&opcode_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
9869 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009870 uint64_t cgen_var_764;
9871 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_764, 1);
9872 stream->write((uint64_t*)&cgen_var_764, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009873 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009874 uint64_t cgen_var_765;
9875 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_765, 1);
9876 stream->write((uint64_t*)&cgen_var_765, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009877 stream->write((VkBool32*)pSupported, sizeof(VkBool32));
9878 stream->read((VkBool32*)pSupported, sizeof(VkBool32));
9879 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
9880 stream->read(&vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009881 countingStream->clearPool();
9882 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009883 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009884 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
9885}
9886
9887VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
9888 VkPhysicalDevice physicalDevice,
9889 VkSurfaceKHR surface,
9890 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
9891{
9892 auto stream = mImpl->stream();
9893 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009894 auto resources = mImpl->resources();
9895 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009896 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009897 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009898 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009899 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009900 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009901 countingStream->rewind();
9902 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009903 uint64_t cgen_var_766;
9904 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_766, 1);
9905 countingStream->write((uint64_t*)&cgen_var_766, 1 * 8);
9906 uint64_t cgen_var_767;
9907 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_767, 1);
9908 countingStream->write((uint64_t*)&cgen_var_767, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009909 marshal_VkSurfaceCapabilitiesKHR(countingStream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
9910 }
9911 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9912 countingStream->rewind();
9913 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
9914 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
9915 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009916 uint64_t cgen_var_768;
9917 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_768, 1);
9918 stream->write((uint64_t*)&cgen_var_768, 1 * 8);
9919 uint64_t cgen_var_769;
9920 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_769, 1);
9921 stream->write((uint64_t*)&cgen_var_769, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009922 marshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
9923 unmarshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
9924 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
9925 stream->read(&vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009926 countingStream->clearPool();
9927 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009928 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009929 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
9930}
9931
9932VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormatsKHR(
9933 VkPhysicalDevice physicalDevice,
9934 VkSurfaceKHR surface,
9935 uint32_t* pSurfaceFormatCount,
9936 VkSurfaceFormatKHR* pSurfaceFormats)
9937{
9938 auto stream = mImpl->stream();
9939 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009940 auto resources = mImpl->resources();
9941 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009942 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009943 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009944 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009945 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009946 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009947 countingStream->rewind();
9948 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009949 uint64_t cgen_var_770;
9950 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_770, 1);
9951 countingStream->write((uint64_t*)&cgen_var_770, 1 * 8);
9952 uint64_t cgen_var_771;
9953 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_771, 1);
9954 countingStream->write((uint64_t*)&cgen_var_771, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009955 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009956 uint64_t cgen_var_772 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
9957 countingStream->putBe64(cgen_var_772);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009958 if (pSurfaceFormatCount)
9959 {
9960 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
9961 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009962 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009963 uint64_t cgen_var_773 = (uint64_t)(uintptr_t)pSurfaceFormats;
9964 countingStream->putBe64(cgen_var_773);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009965 if (pSurfaceFormats)
9966 {
9967 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
9968 {
9969 marshal_VkSurfaceFormatKHR(countingStream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
9970 }
9971 }
9972 }
9973 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9974 countingStream->rewind();
9975 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormatsKHR = OP_vkGetPhysicalDeviceSurfaceFormatsKHR;
9976 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
9977 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009978 uint64_t cgen_var_774;
9979 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_774, 1);
9980 stream->write((uint64_t*)&cgen_var_774, 1 * 8);
9981 uint64_t cgen_var_775;
9982 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_775, 1);
9983 stream->write((uint64_t*)&cgen_var_775, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009984 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009985 uint64_t cgen_var_776 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
9986 stream->putBe64(cgen_var_776);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009987 if (pSurfaceFormatCount)
9988 {
9989 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
9990 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009991 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009992 uint64_t cgen_var_777 = (uint64_t)(uintptr_t)pSurfaceFormats;
9993 stream->putBe64(cgen_var_777);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009994 if (pSurfaceFormats)
9995 {
9996 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
9997 {
9998 marshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
9999 }
10000 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010001 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010002 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010003 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010004 if (pSurfaceFormatCount)
10005 {
10006 if (!(check_pSurfaceFormatCount))
10007 {
10008 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
10009 }
10010 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
10011 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010012 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010013 VkSurfaceFormatKHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010014 check_pSurfaceFormats = (VkSurfaceFormatKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010015 if (pSurfaceFormats)
10016 {
10017 if (!(check_pSurfaceFormats))
10018 {
10019 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
10020 }
10021 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
10022 {
10023 unmarshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
10024 }
10025 }
10026 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
10027 stream->read(&vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010028 countingStream->clearPool();
10029 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010030 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010031 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
10032}
10033
10034VkResult VkEncoder::vkGetPhysicalDeviceSurfacePresentModesKHR(
10035 VkPhysicalDevice physicalDevice,
10036 VkSurfaceKHR surface,
10037 uint32_t* pPresentModeCount,
10038 VkPresentModeKHR* pPresentModes)
10039{
10040 auto stream = mImpl->stream();
10041 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010042 auto resources = mImpl->resources();
10043 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010044 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010045 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010046 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010047 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010048 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010049 countingStream->rewind();
10050 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010051 uint64_t cgen_var_780;
10052 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_780, 1);
10053 countingStream->write((uint64_t*)&cgen_var_780, 1 * 8);
10054 uint64_t cgen_var_781;
10055 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_781, 1);
10056 countingStream->write((uint64_t*)&cgen_var_781, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010057 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010058 uint64_t cgen_var_782 = (uint64_t)(uintptr_t)pPresentModeCount;
10059 countingStream->putBe64(cgen_var_782);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010060 if (pPresentModeCount)
10061 {
10062 countingStream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10063 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010064 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010065 uint64_t cgen_var_783 = (uint64_t)(uintptr_t)pPresentModes;
10066 countingStream->putBe64(cgen_var_783);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010067 if (pPresentModes)
10068 {
10069 countingStream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10070 }
10071 }
10072 uint32_t packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10073 countingStream->rewind();
10074 uint32_t opcode_vkGetPhysicalDeviceSurfacePresentModesKHR = OP_vkGetPhysicalDeviceSurfacePresentModesKHR;
10075 stream->write(&opcode_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
10076 stream->write(&packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010077 uint64_t cgen_var_784;
10078 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_784, 1);
10079 stream->write((uint64_t*)&cgen_var_784, 1 * 8);
10080 uint64_t cgen_var_785;
10081 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_785, 1);
10082 stream->write((uint64_t*)&cgen_var_785, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010083 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010084 uint64_t cgen_var_786 = (uint64_t)(uintptr_t)pPresentModeCount;
10085 stream->putBe64(cgen_var_786);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010086 if (pPresentModeCount)
10087 {
10088 stream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10089 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010090 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010091 uint64_t cgen_var_787 = (uint64_t)(uintptr_t)pPresentModes;
10092 stream->putBe64(cgen_var_787);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010093 if (pPresentModes)
10094 {
10095 stream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10096 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010097 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010098 uint32_t* check_pPresentModeCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010099 check_pPresentModeCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010100 if (pPresentModeCount)
10101 {
10102 if (!(check_pPresentModeCount))
10103 {
10104 fprintf(stderr, "fatal: pPresentModeCount inconsistent between guest and host\n");
10105 }
10106 stream->read((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10107 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010108 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010109 VkPresentModeKHR* check_pPresentModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010110 check_pPresentModes = (VkPresentModeKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010111 if (pPresentModes)
10112 {
10113 if (!(check_pPresentModes))
10114 {
10115 fprintf(stderr, "fatal: pPresentModes inconsistent between guest and host\n");
10116 }
10117 stream->read((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10118 }
10119 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
10120 stream->read(&vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010121 countingStream->clearPool();
10122 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010123 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010124 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
10125}
10126
10127#endif
10128#ifdef VK_KHR_swapchain
10129VkResult VkEncoder::vkCreateSwapchainKHR(
10130 VkDevice device,
10131 const VkSwapchainCreateInfoKHR* pCreateInfo,
10132 const VkAllocationCallbacks* pAllocator,
10133 VkSwapchainKHR* pSwapchain)
10134{
10135 auto stream = mImpl->stream();
10136 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010137 auto resources = mImpl->resources();
10138 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010139 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010140 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010141 VkSwapchainCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010142 VkAllocationCallbacks* local_pAllocator;
10143 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010144 local_pCreateInfo = nullptr;
10145 if (pCreateInfo)
10146 {
10147 local_pCreateInfo = (VkSwapchainCreateInfoKHR*)pool->alloc(sizeof(const VkSwapchainCreateInfoKHR));
10148 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfo, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
10149 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010150 local_pAllocator = nullptr;
10151 if (pAllocator)
10152 {
10153 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10154 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10155 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010156 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010157 countingStream->rewind();
10158 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010159 uint64_t cgen_var_790;
10160 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_790, 1);
10161 countingStream->write((uint64_t*)&cgen_var_790, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010162 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010163 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010164 uint64_t cgen_var_791 = (uint64_t)(uintptr_t)local_pAllocator;
10165 countingStream->putBe64(cgen_var_791);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010166 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010167 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010168 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010169 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010170 uint64_t cgen_var_792;
10171 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_792, 1);
10172 countingStream->write((uint64_t*)&cgen_var_792, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010173 }
10174 uint32_t packetSize_vkCreateSwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10175 countingStream->rewind();
10176 uint32_t opcode_vkCreateSwapchainKHR = OP_vkCreateSwapchainKHR;
10177 stream->write(&opcode_vkCreateSwapchainKHR, sizeof(uint32_t));
10178 stream->write(&packetSize_vkCreateSwapchainKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010179 uint64_t cgen_var_793;
10180 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_793, 1);
10181 stream->write((uint64_t*)&cgen_var_793, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010182 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010183 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010184 uint64_t cgen_var_794 = (uint64_t)(uintptr_t)local_pAllocator;
10185 stream->putBe64(cgen_var_794);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010186 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010187 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010188 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010189 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010190 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010191 uint64_t cgen_var_795;
10192 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_795, 1);
10193 stream->write((uint64_t*)&cgen_var_795, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010194 stream->setHandleMapping(resources->unwrapMapping());
10195 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010196 uint64_t cgen_var_796;
10197 stream->read((uint64_t*)&cgen_var_796, 8);
10198 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(&cgen_var_796, (VkSwapchainKHR*)pSwapchain, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010199 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010200 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
10201 stream->read(&vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010202 countingStream->clearPool();
10203 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010204 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010205 return vkCreateSwapchainKHR_VkResult_return;
10206}
10207
10208void VkEncoder::vkDestroySwapchainKHR(
10209 VkDevice device,
10210 VkSwapchainKHR swapchain,
10211 const VkAllocationCallbacks* pAllocator)
10212{
10213 auto stream = mImpl->stream();
10214 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010215 auto resources = mImpl->resources();
10216 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010217 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010218 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010219 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010220 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010221 local_device = device;
10222 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010223 local_pAllocator = nullptr;
10224 if (pAllocator)
10225 {
10226 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10227 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10228 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010229 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010230 countingStream->rewind();
10231 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010232 uint64_t cgen_var_797;
10233 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_797, 1);
10234 countingStream->write((uint64_t*)&cgen_var_797, 1 * 8);
10235 uint64_t cgen_var_798;
10236 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_798, 1);
10237 countingStream->write((uint64_t*)&cgen_var_798, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010238 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010239 uint64_t cgen_var_799 = (uint64_t)(uintptr_t)local_pAllocator;
10240 countingStream->putBe64(cgen_var_799);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010241 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010242 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010243 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010244 }
10245 }
10246 uint32_t packetSize_vkDestroySwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10247 countingStream->rewind();
10248 uint32_t opcode_vkDestroySwapchainKHR = OP_vkDestroySwapchainKHR;
10249 stream->write(&opcode_vkDestroySwapchainKHR, sizeof(uint32_t));
10250 stream->write(&packetSize_vkDestroySwapchainKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010251 uint64_t cgen_var_800;
10252 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_800, 1);
10253 stream->write((uint64_t*)&cgen_var_800, 1 * 8);
10254 uint64_t cgen_var_801;
10255 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_801, 1);
10256 stream->write((uint64_t*)&cgen_var_801, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010257 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010258 uint64_t cgen_var_802 = (uint64_t)(uintptr_t)local_pAllocator;
10259 stream->putBe64(cgen_var_802);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010260 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010261 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010262 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010263 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010264 resources->destroyMapping()->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&swapchain);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010265}
10266
10267VkResult VkEncoder::vkGetSwapchainImagesKHR(
10268 VkDevice device,
10269 VkSwapchainKHR swapchain,
10270 uint32_t* pSwapchainImageCount,
10271 VkImage* pSwapchainImages)
10272{
10273 auto stream = mImpl->stream();
10274 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010275 auto resources = mImpl->resources();
10276 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010277 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010278 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010279 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010280 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010281 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010282 countingStream->rewind();
10283 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010284 uint64_t cgen_var_803;
10285 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_803, 1);
10286 countingStream->write((uint64_t*)&cgen_var_803, 1 * 8);
10287 uint64_t cgen_var_804;
10288 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_804, 1);
10289 countingStream->write((uint64_t*)&cgen_var_804, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010290 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010291 uint64_t cgen_var_805 = (uint64_t)(uintptr_t)pSwapchainImageCount;
10292 countingStream->putBe64(cgen_var_805);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010293 if (pSwapchainImageCount)
10294 {
10295 countingStream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
10296 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010297 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010298 uint64_t cgen_var_806 = (uint64_t)(uintptr_t)pSwapchainImages;
10299 countingStream->putBe64(cgen_var_806);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010300 if (pSwapchainImages)
10301 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010302 if ((*(pSwapchainImageCount)))
10303 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010304 uint64_t* cgen_var_807;
10305 countingStream->alloc((void**)&cgen_var_807, (*(pSwapchainImageCount)) * 8);
10306 countingStream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_807, (*(pSwapchainImageCount)));
10307 countingStream->write((uint64_t*)cgen_var_807, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010308 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010309 }
10310 }
10311 uint32_t packetSize_vkGetSwapchainImagesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10312 countingStream->rewind();
10313 uint32_t opcode_vkGetSwapchainImagesKHR = OP_vkGetSwapchainImagesKHR;
10314 stream->write(&opcode_vkGetSwapchainImagesKHR, sizeof(uint32_t));
10315 stream->write(&packetSize_vkGetSwapchainImagesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010316 uint64_t cgen_var_808;
10317 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_808, 1);
10318 stream->write((uint64_t*)&cgen_var_808, 1 * 8);
10319 uint64_t cgen_var_809;
10320 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_809, 1);
10321 stream->write((uint64_t*)&cgen_var_809, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010322 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010323 uint64_t cgen_var_810 = (uint64_t)(uintptr_t)pSwapchainImageCount;
10324 stream->putBe64(cgen_var_810);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010325 if (pSwapchainImageCount)
10326 {
10327 stream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
10328 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010329 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010330 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010331 uint64_t cgen_var_811 = (uint64_t)(uintptr_t)pSwapchainImages;
10332 stream->putBe64(cgen_var_811);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010333 if (pSwapchainImages)
10334 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010335 if ((*(pSwapchainImageCount)))
10336 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010337 uint64_t* cgen_var_812;
10338 stream->alloc((void**)&cgen_var_812, (*(pSwapchainImageCount)) * 8);
10339 stream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_812, (*(pSwapchainImageCount)));
10340 stream->write((uint64_t*)cgen_var_812, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010341 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010342 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010343 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010344 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010345 uint32_t* check_pSwapchainImageCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010346 check_pSwapchainImageCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010347 if (pSwapchainImageCount)
10348 {
10349 if (!(check_pSwapchainImageCount))
10350 {
10351 fprintf(stderr, "fatal: pSwapchainImageCount inconsistent between guest and host\n");
10352 }
10353 stream->read((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
10354 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010355 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010356 VkImage* check_pSwapchainImages;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010357 check_pSwapchainImages = (VkImage*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010358 if (pSwapchainImages)
10359 {
10360 if (!(check_pSwapchainImages))
10361 {
10362 fprintf(stderr, "fatal: pSwapchainImages inconsistent between guest and host\n");
10363 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080010364 if ((*(pSwapchainImageCount)))
10365 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010366 uint64_t* cgen_var_815;
10367 stream->alloc((void**)&cgen_var_815, (*(pSwapchainImageCount)) * 8);
10368 stream->read((uint64_t*)cgen_var_815, (*(pSwapchainImageCount)) * 8);
10369 stream->handleMapping()->mapHandles_u64_VkImage(cgen_var_815, (VkImage*)pSwapchainImages, (*(pSwapchainImageCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010370 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010371 }
10372 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
10373 stream->read(&vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010374 countingStream->clearPool();
10375 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010376 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010377 return vkGetSwapchainImagesKHR_VkResult_return;
10378}
10379
10380VkResult VkEncoder::vkAcquireNextImageKHR(
10381 VkDevice device,
10382 VkSwapchainKHR swapchain,
10383 uint64_t timeout,
10384 VkSemaphore semaphore,
10385 VkFence fence,
10386 uint32_t* pImageIndex)
10387{
10388 auto stream = mImpl->stream();
10389 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010390 auto resources = mImpl->resources();
10391 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010392 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010393 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010394 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010395 uint64_t local_timeout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010396 VkSemaphore local_semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010397 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010398 local_device = device;
10399 local_swapchain = swapchain;
10400 local_timeout = timeout;
10401 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010402 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010403 countingStream->rewind();
10404 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010405 uint64_t cgen_var_816;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010406 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_816, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010407 countingStream->write((uint64_t*)&cgen_var_816, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010408 uint64_t cgen_var_817;
10409 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_817, 1);
10410 countingStream->write((uint64_t*)&cgen_var_817, 1 * 8);
10411 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
10412 uint64_t cgen_var_818;
10413 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_818, 1);
10414 countingStream->write((uint64_t*)&cgen_var_818, 1 * 8);
10415 uint64_t cgen_var_819;
10416 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_819, 1);
10417 countingStream->write((uint64_t*)&cgen_var_819, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010418 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10419 }
10420 uint32_t packetSize_vkAcquireNextImageKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10421 countingStream->rewind();
10422 uint32_t opcode_vkAcquireNextImageKHR = OP_vkAcquireNextImageKHR;
10423 stream->write(&opcode_vkAcquireNextImageKHR, sizeof(uint32_t));
10424 stream->write(&packetSize_vkAcquireNextImageKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010425 uint64_t cgen_var_820;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010426 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_820, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010427 stream->write((uint64_t*)&cgen_var_820, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010428 uint64_t cgen_var_821;
10429 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_821, 1);
10430 stream->write((uint64_t*)&cgen_var_821, 1 * 8);
10431 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
10432 uint64_t cgen_var_822;
10433 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_822, 1);
10434 stream->write((uint64_t*)&cgen_var_822, 1 * 8);
10435 uint64_t cgen_var_823;
10436 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_823, 1);
10437 stream->write((uint64_t*)&cgen_var_823, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010438 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10439 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
10440 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
10441 stream->read(&vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010442 countingStream->clearPool();
10443 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010444 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010445 return vkAcquireNextImageKHR_VkResult_return;
10446}
10447
10448VkResult VkEncoder::vkQueuePresentKHR(
10449 VkQueue queue,
10450 const VkPresentInfoKHR* pPresentInfo)
10451{
10452 auto stream = mImpl->stream();
10453 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010454 auto resources = mImpl->resources();
10455 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010456 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010457 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010458 VkPresentInfoKHR* local_pPresentInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010459 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010460 local_pPresentInfo = nullptr;
10461 if (pPresentInfo)
10462 {
10463 local_pPresentInfo = (VkPresentInfoKHR*)pool->alloc(sizeof(const VkPresentInfoKHR));
10464 deepcopy_VkPresentInfoKHR(pool, pPresentInfo, (VkPresentInfoKHR*)(local_pPresentInfo));
10465 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010466 countingStream->rewind();
10467 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010468 uint64_t cgen_var_824;
10469 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_824, 1);
10470 countingStream->write((uint64_t*)&cgen_var_824, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010471 marshal_VkPresentInfoKHR(countingStream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010472 }
10473 uint32_t packetSize_vkQueuePresentKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10474 countingStream->rewind();
10475 uint32_t opcode_vkQueuePresentKHR = OP_vkQueuePresentKHR;
10476 stream->write(&opcode_vkQueuePresentKHR, sizeof(uint32_t));
10477 stream->write(&packetSize_vkQueuePresentKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010478 uint64_t cgen_var_825;
10479 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_825, 1);
10480 stream->write((uint64_t*)&cgen_var_825, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010481 marshal_VkPresentInfoKHR(stream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010482 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
10483 stream->read(&vkQueuePresentKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010484 countingStream->clearPool();
10485 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010486 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010487 return vkQueuePresentKHR_VkResult_return;
10488}
10489
10490VkResult VkEncoder::vkGetDeviceGroupPresentCapabilitiesKHR(
10491 VkDevice device,
10492 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
10493{
10494 auto stream = mImpl->stream();
10495 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010496 auto resources = mImpl->resources();
10497 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010498 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010499 VkDevice local_device;
10500 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010501 countingStream->rewind();
10502 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010503 uint64_t cgen_var_826;
10504 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_826, 1);
10505 countingStream->write((uint64_t*)&cgen_var_826, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010506 marshal_VkDeviceGroupPresentCapabilitiesKHR(countingStream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
10507 }
10508 uint32_t packetSize_vkGetDeviceGroupPresentCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10509 countingStream->rewind();
10510 uint32_t opcode_vkGetDeviceGroupPresentCapabilitiesKHR = OP_vkGetDeviceGroupPresentCapabilitiesKHR;
10511 stream->write(&opcode_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
10512 stream->write(&packetSize_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010513 uint64_t cgen_var_827;
10514 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_827, 1);
10515 stream->write((uint64_t*)&cgen_var_827, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010516 marshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
10517 unmarshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
10518 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
10519 stream->read(&vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010520 countingStream->clearPool();
10521 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010522 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010523 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
10524}
10525
10526VkResult VkEncoder::vkGetDeviceGroupSurfacePresentModesKHR(
10527 VkDevice device,
10528 VkSurfaceKHR surface,
10529 VkDeviceGroupPresentModeFlagsKHR* pModes)
10530{
10531 auto stream = mImpl->stream();
10532 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010533 auto resources = mImpl->resources();
10534 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010535 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010536 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010537 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010538 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010539 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010540 countingStream->rewind();
10541 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010542 uint64_t cgen_var_828;
10543 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_828, 1);
10544 countingStream->write((uint64_t*)&cgen_var_828, 1 * 8);
10545 uint64_t cgen_var_829;
10546 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_829, 1);
10547 countingStream->write((uint64_t*)&cgen_var_829, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010548 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010549 uint64_t cgen_var_830 = (uint64_t)(uintptr_t)pModes;
10550 countingStream->putBe64(cgen_var_830);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010551 if (pModes)
10552 {
10553 countingStream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
10554 }
10555 }
10556 uint32_t packetSize_vkGetDeviceGroupSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10557 countingStream->rewind();
10558 uint32_t opcode_vkGetDeviceGroupSurfacePresentModesKHR = OP_vkGetDeviceGroupSurfacePresentModesKHR;
10559 stream->write(&opcode_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
10560 stream->write(&packetSize_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010561 uint64_t cgen_var_831;
10562 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_831, 1);
10563 stream->write((uint64_t*)&cgen_var_831, 1 * 8);
10564 uint64_t cgen_var_832;
10565 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_832, 1);
10566 stream->write((uint64_t*)&cgen_var_832, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010567 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010568 uint64_t cgen_var_833 = (uint64_t)(uintptr_t)pModes;
10569 stream->putBe64(cgen_var_833);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010570 if (pModes)
10571 {
10572 stream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
10573 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010574 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010575 VkDeviceGroupPresentModeFlagsKHR* check_pModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010576 check_pModes = (VkDeviceGroupPresentModeFlagsKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010577 if (pModes)
10578 {
10579 if (!(check_pModes))
10580 {
10581 fprintf(stderr, "fatal: pModes inconsistent between guest and host\n");
10582 }
10583 stream->read((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
10584 }
10585 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
10586 stream->read(&vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010587 countingStream->clearPool();
10588 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010589 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010590 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
10591}
10592
10593VkResult VkEncoder::vkGetPhysicalDevicePresentRectanglesKHR(
10594 VkPhysicalDevice physicalDevice,
10595 VkSurfaceKHR surface,
10596 uint32_t* pRectCount,
10597 VkRect2D* pRects)
10598{
10599 auto stream = mImpl->stream();
10600 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010601 auto resources = mImpl->resources();
10602 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010603 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010604 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010605 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010606 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010607 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010608 countingStream->rewind();
10609 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010610 uint64_t cgen_var_835;
10611 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_835, 1);
10612 countingStream->write((uint64_t*)&cgen_var_835, 1 * 8);
10613 uint64_t cgen_var_836;
10614 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_836, 1);
10615 countingStream->write((uint64_t*)&cgen_var_836, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010616 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010617 uint64_t cgen_var_837 = (uint64_t)(uintptr_t)pRectCount;
10618 countingStream->putBe64(cgen_var_837);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010619 if (pRectCount)
10620 {
10621 countingStream->write((uint32_t*)pRectCount, sizeof(uint32_t));
10622 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010623 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010624 uint64_t cgen_var_838 = (uint64_t)(uintptr_t)pRects;
10625 countingStream->putBe64(cgen_var_838);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010626 if (pRects)
10627 {
10628 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
10629 {
10630 marshal_VkRect2D(countingStream, (VkRect2D*)(pRects + i));
10631 }
10632 }
10633 }
10634 uint32_t packetSize_vkGetPhysicalDevicePresentRectanglesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10635 countingStream->rewind();
10636 uint32_t opcode_vkGetPhysicalDevicePresentRectanglesKHR = OP_vkGetPhysicalDevicePresentRectanglesKHR;
10637 stream->write(&opcode_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
10638 stream->write(&packetSize_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010639 uint64_t cgen_var_839;
10640 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_839, 1);
10641 stream->write((uint64_t*)&cgen_var_839, 1 * 8);
10642 uint64_t cgen_var_840;
10643 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_840, 1);
10644 stream->write((uint64_t*)&cgen_var_840, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010645 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010646 uint64_t cgen_var_841 = (uint64_t)(uintptr_t)pRectCount;
10647 stream->putBe64(cgen_var_841);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010648 if (pRectCount)
10649 {
10650 stream->write((uint32_t*)pRectCount, sizeof(uint32_t));
10651 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010652 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010653 uint64_t cgen_var_842 = (uint64_t)(uintptr_t)pRects;
10654 stream->putBe64(cgen_var_842);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010655 if (pRects)
10656 {
10657 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
10658 {
10659 marshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
10660 }
10661 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010662 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010663 uint32_t* check_pRectCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010664 check_pRectCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010665 if (pRectCount)
10666 {
10667 if (!(check_pRectCount))
10668 {
10669 fprintf(stderr, "fatal: pRectCount inconsistent between guest and host\n");
10670 }
10671 stream->read((uint32_t*)pRectCount, sizeof(uint32_t));
10672 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010673 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010674 VkRect2D* check_pRects;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010675 check_pRects = (VkRect2D*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010676 if (pRects)
10677 {
10678 if (!(check_pRects))
10679 {
10680 fprintf(stderr, "fatal: pRects inconsistent between guest and host\n");
10681 }
10682 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
10683 {
10684 unmarshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
10685 }
10686 }
10687 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
10688 stream->read(&vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010689 countingStream->clearPool();
10690 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010691 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010692 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
10693}
10694
10695VkResult VkEncoder::vkAcquireNextImage2KHR(
10696 VkDevice device,
10697 const VkAcquireNextImageInfoKHR* pAcquireInfo,
10698 uint32_t* pImageIndex)
10699{
10700 auto stream = mImpl->stream();
10701 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010702 auto resources = mImpl->resources();
10703 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010704 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010705 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010706 VkAcquireNextImageInfoKHR* local_pAcquireInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010707 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010708 local_pAcquireInfo = nullptr;
10709 if (pAcquireInfo)
10710 {
10711 local_pAcquireInfo = (VkAcquireNextImageInfoKHR*)pool->alloc(sizeof(const VkAcquireNextImageInfoKHR));
10712 deepcopy_VkAcquireNextImageInfoKHR(pool, pAcquireInfo, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
10713 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010714 countingStream->rewind();
10715 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010716 uint64_t cgen_var_845;
10717 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_845, 1);
10718 countingStream->write((uint64_t*)&cgen_var_845, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010719 marshal_VkAcquireNextImageInfoKHR(countingStream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010720 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10721 }
10722 uint32_t packetSize_vkAcquireNextImage2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10723 countingStream->rewind();
10724 uint32_t opcode_vkAcquireNextImage2KHR = OP_vkAcquireNextImage2KHR;
10725 stream->write(&opcode_vkAcquireNextImage2KHR, sizeof(uint32_t));
10726 stream->write(&packetSize_vkAcquireNextImage2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010727 uint64_t cgen_var_846;
10728 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_846, 1);
10729 stream->write((uint64_t*)&cgen_var_846, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010730 marshal_VkAcquireNextImageInfoKHR(stream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010731 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10732 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
10733 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
10734 stream->read(&vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010735 countingStream->clearPool();
10736 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010737 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010738 return vkAcquireNextImage2KHR_VkResult_return;
10739}
10740
10741#endif
10742#ifdef VK_KHR_display
10743VkResult VkEncoder::vkGetPhysicalDeviceDisplayPropertiesKHR(
10744 VkPhysicalDevice physicalDevice,
10745 uint32_t* pPropertyCount,
10746 VkDisplayPropertiesKHR* pProperties)
10747{
10748 auto stream = mImpl->stream();
10749 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010750 auto resources = mImpl->resources();
10751 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010752 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010753 VkPhysicalDevice local_physicalDevice;
10754 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010755 countingStream->rewind();
10756 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010757 uint64_t cgen_var_847;
10758 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_847, 1);
10759 countingStream->write((uint64_t*)&cgen_var_847, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010760 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010761 uint64_t cgen_var_848 = (uint64_t)(uintptr_t)pPropertyCount;
10762 countingStream->putBe64(cgen_var_848);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010763 if (pPropertyCount)
10764 {
10765 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10766 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010767 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010768 uint64_t cgen_var_849 = (uint64_t)(uintptr_t)pProperties;
10769 countingStream->putBe64(cgen_var_849);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010770 if (pProperties)
10771 {
10772 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10773 {
10774 marshal_VkDisplayPropertiesKHR(countingStream, (VkDisplayPropertiesKHR*)(pProperties + i));
10775 }
10776 }
10777 }
10778 uint32_t packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10779 countingStream->rewind();
10780 uint32_t opcode_vkGetPhysicalDeviceDisplayPropertiesKHR = OP_vkGetPhysicalDeviceDisplayPropertiesKHR;
10781 stream->write(&opcode_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
10782 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010783 uint64_t cgen_var_850;
10784 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_850, 1);
10785 stream->write((uint64_t*)&cgen_var_850, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010786 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010787 uint64_t cgen_var_851 = (uint64_t)(uintptr_t)pPropertyCount;
10788 stream->putBe64(cgen_var_851);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010789 if (pPropertyCount)
10790 {
10791 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10792 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010793 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010794 uint64_t cgen_var_852 = (uint64_t)(uintptr_t)pProperties;
10795 stream->putBe64(cgen_var_852);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010796 if (pProperties)
10797 {
10798 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10799 {
10800 marshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
10801 }
10802 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010803 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010804 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010805 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010806 if (pPropertyCount)
10807 {
10808 if (!(check_pPropertyCount))
10809 {
10810 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
10811 }
10812 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
10813 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010814 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010815 VkDisplayPropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010816 check_pProperties = (VkDisplayPropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010817 if (pProperties)
10818 {
10819 if (!(check_pProperties))
10820 {
10821 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
10822 }
10823 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10824 {
10825 unmarshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
10826 }
10827 }
10828 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
10829 stream->read(&vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010830 countingStream->clearPool();
10831 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010832 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010833 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
10834}
10835
10836VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
10837 VkPhysicalDevice physicalDevice,
10838 uint32_t* pPropertyCount,
10839 VkDisplayPlanePropertiesKHR* pProperties)
10840{
10841 auto stream = mImpl->stream();
10842 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010843 auto resources = mImpl->resources();
10844 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010845 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010846 VkPhysicalDevice local_physicalDevice;
10847 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010848 countingStream->rewind();
10849 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010850 uint64_t cgen_var_855;
10851 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_855, 1);
10852 countingStream->write((uint64_t*)&cgen_var_855, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010853 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010854 uint64_t cgen_var_856 = (uint64_t)(uintptr_t)pPropertyCount;
10855 countingStream->putBe64(cgen_var_856);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010856 if (pPropertyCount)
10857 {
10858 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10859 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010860 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010861 uint64_t cgen_var_857 = (uint64_t)(uintptr_t)pProperties;
10862 countingStream->putBe64(cgen_var_857);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010863 if (pProperties)
10864 {
10865 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10866 {
10867 marshal_VkDisplayPlanePropertiesKHR(countingStream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
10868 }
10869 }
10870 }
10871 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10872 countingStream->rewind();
10873 uint32_t opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = OP_vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
10874 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
10875 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010876 uint64_t cgen_var_858;
10877 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_858, 1);
10878 stream->write((uint64_t*)&cgen_var_858, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010879 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010880 uint64_t cgen_var_859 = (uint64_t)(uintptr_t)pPropertyCount;
10881 stream->putBe64(cgen_var_859);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010882 if (pPropertyCount)
10883 {
10884 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10885 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010886 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010887 uint64_t cgen_var_860 = (uint64_t)(uintptr_t)pProperties;
10888 stream->putBe64(cgen_var_860);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010889 if (pProperties)
10890 {
10891 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10892 {
10893 marshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
10894 }
10895 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010896 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010897 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010898 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010899 if (pPropertyCount)
10900 {
10901 if (!(check_pPropertyCount))
10902 {
10903 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
10904 }
10905 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
10906 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010907 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010908 VkDisplayPlanePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010909 check_pProperties = (VkDisplayPlanePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010910 if (pProperties)
10911 {
10912 if (!(check_pProperties))
10913 {
10914 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
10915 }
10916 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10917 {
10918 unmarshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
10919 }
10920 }
10921 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
10922 stream->read(&vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010923 countingStream->clearPool();
10924 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010925 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010926 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
10927}
10928
10929VkResult VkEncoder::vkGetDisplayPlaneSupportedDisplaysKHR(
10930 VkPhysicalDevice physicalDevice,
10931 uint32_t planeIndex,
10932 uint32_t* pDisplayCount,
10933 VkDisplayKHR* pDisplays)
10934{
10935 auto stream = mImpl->stream();
10936 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010937 auto resources = mImpl->resources();
10938 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010939 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010940 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010941 uint32_t local_planeIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010942 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010943 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010944 countingStream->rewind();
10945 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010946 uint64_t cgen_var_863;
10947 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_863, 1);
10948 countingStream->write((uint64_t*)&cgen_var_863, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010949 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010950 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010951 uint64_t cgen_var_864 = (uint64_t)(uintptr_t)pDisplayCount;
10952 countingStream->putBe64(cgen_var_864);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010953 if (pDisplayCount)
10954 {
10955 countingStream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
10956 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010957 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010958 uint64_t cgen_var_865 = (uint64_t)(uintptr_t)pDisplays;
10959 countingStream->putBe64(cgen_var_865);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010960 if (pDisplays)
10961 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010962 if ((*(pDisplayCount)))
10963 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010964 uint64_t* cgen_var_866;
10965 countingStream->alloc((void**)&cgen_var_866, (*(pDisplayCount)) * 8);
10966 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_866, (*(pDisplayCount)));
10967 countingStream->write((uint64_t*)cgen_var_866, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010968 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010969 }
10970 }
10971 uint32_t packetSize_vkGetDisplayPlaneSupportedDisplaysKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10972 countingStream->rewind();
10973 uint32_t opcode_vkGetDisplayPlaneSupportedDisplaysKHR = OP_vkGetDisplayPlaneSupportedDisplaysKHR;
10974 stream->write(&opcode_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
10975 stream->write(&packetSize_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010976 uint64_t cgen_var_867;
10977 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_867, 1);
10978 stream->write((uint64_t*)&cgen_var_867, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010979 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010980 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010981 uint64_t cgen_var_868 = (uint64_t)(uintptr_t)pDisplayCount;
10982 stream->putBe64(cgen_var_868);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010983 if (pDisplayCount)
10984 {
10985 stream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
10986 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010987 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010988 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010989 uint64_t cgen_var_869 = (uint64_t)(uintptr_t)pDisplays;
10990 stream->putBe64(cgen_var_869);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010991 if (pDisplays)
10992 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010993 if ((*(pDisplayCount)))
10994 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010995 uint64_t* cgen_var_870;
10996 stream->alloc((void**)&cgen_var_870, (*(pDisplayCount)) * 8);
10997 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_870, (*(pDisplayCount)));
10998 stream->write((uint64_t*)cgen_var_870, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010999 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011000 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011001 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011002 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011003 uint32_t* check_pDisplayCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011004 check_pDisplayCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011005 if (pDisplayCount)
11006 {
11007 if (!(check_pDisplayCount))
11008 {
11009 fprintf(stderr, "fatal: pDisplayCount inconsistent between guest and host\n");
11010 }
11011 stream->read((uint32_t*)pDisplayCount, sizeof(uint32_t));
11012 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011013 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011014 VkDisplayKHR* check_pDisplays;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011015 check_pDisplays = (VkDisplayKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011016 if (pDisplays)
11017 {
11018 if (!(check_pDisplays))
11019 {
11020 fprintf(stderr, "fatal: pDisplays inconsistent between guest and host\n");
11021 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080011022 if ((*(pDisplayCount)))
11023 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011024 uint64_t* cgen_var_873;
11025 stream->alloc((void**)&cgen_var_873, (*(pDisplayCount)) * 8);
11026 stream->read((uint64_t*)cgen_var_873, (*(pDisplayCount)) * 8);
11027 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(cgen_var_873, (VkDisplayKHR*)pDisplays, (*(pDisplayCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011028 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011029 }
11030 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
11031 stream->read(&vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011032 countingStream->clearPool();
11033 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011034 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011035 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
11036}
11037
11038VkResult VkEncoder::vkGetDisplayModePropertiesKHR(
11039 VkPhysicalDevice physicalDevice,
11040 VkDisplayKHR display,
11041 uint32_t* pPropertyCount,
11042 VkDisplayModePropertiesKHR* pProperties)
11043{
11044 auto stream = mImpl->stream();
11045 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011046 auto resources = mImpl->resources();
11047 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011048 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011049 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011050 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011051 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011052 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011053 countingStream->rewind();
11054 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011055 uint64_t cgen_var_874;
11056 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_874, 1);
11057 countingStream->write((uint64_t*)&cgen_var_874, 1 * 8);
11058 uint64_t cgen_var_875;
11059 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_875, 1);
11060 countingStream->write((uint64_t*)&cgen_var_875, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011061 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011062 uint64_t cgen_var_876 = (uint64_t)(uintptr_t)pPropertyCount;
11063 countingStream->putBe64(cgen_var_876);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011064 if (pPropertyCount)
11065 {
11066 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11067 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011068 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011069 uint64_t cgen_var_877 = (uint64_t)(uintptr_t)pProperties;
11070 countingStream->putBe64(cgen_var_877);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011071 if (pProperties)
11072 {
11073 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11074 {
11075 marshal_VkDisplayModePropertiesKHR(countingStream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11076 }
11077 }
11078 }
11079 uint32_t packetSize_vkGetDisplayModePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11080 countingStream->rewind();
11081 uint32_t opcode_vkGetDisplayModePropertiesKHR = OP_vkGetDisplayModePropertiesKHR;
11082 stream->write(&opcode_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
11083 stream->write(&packetSize_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011084 uint64_t cgen_var_878;
11085 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_878, 1);
11086 stream->write((uint64_t*)&cgen_var_878, 1 * 8);
11087 uint64_t cgen_var_879;
11088 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_879, 1);
11089 stream->write((uint64_t*)&cgen_var_879, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011090 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011091 uint64_t cgen_var_880 = (uint64_t)(uintptr_t)pPropertyCount;
11092 stream->putBe64(cgen_var_880);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011093 if (pPropertyCount)
11094 {
11095 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11096 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011097 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011098 uint64_t cgen_var_881 = (uint64_t)(uintptr_t)pProperties;
11099 stream->putBe64(cgen_var_881);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011100 if (pProperties)
11101 {
11102 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11103 {
11104 marshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11105 }
11106 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011107 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011108 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011109 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011110 if (pPropertyCount)
11111 {
11112 if (!(check_pPropertyCount))
11113 {
11114 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
11115 }
11116 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
11117 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011118 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011119 VkDisplayModePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011120 check_pProperties = (VkDisplayModePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011121 if (pProperties)
11122 {
11123 if (!(check_pProperties))
11124 {
11125 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
11126 }
11127 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11128 {
11129 unmarshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11130 }
11131 }
11132 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
11133 stream->read(&vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011134 countingStream->clearPool();
11135 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011136 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011137 return vkGetDisplayModePropertiesKHR_VkResult_return;
11138}
11139
11140VkResult VkEncoder::vkCreateDisplayModeKHR(
11141 VkPhysicalDevice physicalDevice,
11142 VkDisplayKHR display,
11143 const VkDisplayModeCreateInfoKHR* pCreateInfo,
11144 const VkAllocationCallbacks* pAllocator,
11145 VkDisplayModeKHR* pMode)
11146{
11147 auto stream = mImpl->stream();
11148 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011149 auto resources = mImpl->resources();
11150 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011151 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011152 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011153 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011154 VkDisplayModeCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011155 VkAllocationCallbacks* local_pAllocator;
11156 local_physicalDevice = physicalDevice;
11157 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011158 local_pCreateInfo = nullptr;
11159 if (pCreateInfo)
11160 {
11161 local_pCreateInfo = (VkDisplayModeCreateInfoKHR*)pool->alloc(sizeof(const VkDisplayModeCreateInfoKHR));
11162 deepcopy_VkDisplayModeCreateInfoKHR(pool, pCreateInfo, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
11163 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011164 local_pAllocator = nullptr;
11165 if (pAllocator)
11166 {
11167 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11168 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11169 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011170 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011171 countingStream->rewind();
11172 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011173 uint64_t cgen_var_884;
11174 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_884, 1);
11175 countingStream->write((uint64_t*)&cgen_var_884, 1 * 8);
11176 uint64_t cgen_var_885;
11177 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_885, 1);
11178 countingStream->write((uint64_t*)&cgen_var_885, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011179 marshal_VkDisplayModeCreateInfoKHR(countingStream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011180 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011181 uint64_t cgen_var_886 = (uint64_t)(uintptr_t)local_pAllocator;
11182 countingStream->putBe64(cgen_var_886);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011183 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011184 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011185 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011186 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011187 uint64_t cgen_var_887;
11188 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_887, 1);
11189 countingStream->write((uint64_t*)&cgen_var_887, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011190 }
11191 uint32_t packetSize_vkCreateDisplayModeKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11192 countingStream->rewind();
11193 uint32_t opcode_vkCreateDisplayModeKHR = OP_vkCreateDisplayModeKHR;
11194 stream->write(&opcode_vkCreateDisplayModeKHR, sizeof(uint32_t));
11195 stream->write(&packetSize_vkCreateDisplayModeKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011196 uint64_t cgen_var_888;
11197 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_888, 1);
11198 stream->write((uint64_t*)&cgen_var_888, 1 * 8);
11199 uint64_t cgen_var_889;
11200 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_889, 1);
11201 stream->write((uint64_t*)&cgen_var_889, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011202 marshal_VkDisplayModeCreateInfoKHR(stream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011203 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011204 uint64_t cgen_var_890 = (uint64_t)(uintptr_t)local_pAllocator;
11205 stream->putBe64(cgen_var_890);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011206 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011207 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011208 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011209 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011210 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011211 uint64_t cgen_var_891;
11212 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_891, 1);
11213 stream->write((uint64_t*)&cgen_var_891, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011214 stream->setHandleMapping(resources->unwrapMapping());
11215 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011216 uint64_t cgen_var_892;
11217 stream->read((uint64_t*)&cgen_var_892, 8);
11218 stream->handleMapping()->mapHandles_u64_VkDisplayModeKHR(&cgen_var_892, (VkDisplayModeKHR*)pMode, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011219 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011220 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
11221 stream->read(&vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011222 countingStream->clearPool();
11223 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011224 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011225 return vkCreateDisplayModeKHR_VkResult_return;
11226}
11227
11228VkResult VkEncoder::vkGetDisplayPlaneCapabilitiesKHR(
11229 VkPhysicalDevice physicalDevice,
11230 VkDisplayModeKHR mode,
11231 uint32_t planeIndex,
11232 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
11233{
11234 auto stream = mImpl->stream();
11235 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011236 auto resources = mImpl->resources();
11237 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011238 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011239 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011240 VkDisplayModeKHR local_mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011241 uint32_t local_planeIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011242 local_physicalDevice = physicalDevice;
11243 local_mode = mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011244 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011245 countingStream->rewind();
11246 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011247 uint64_t cgen_var_893;
11248 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_893, 1);
11249 countingStream->write((uint64_t*)&cgen_var_893, 1 * 8);
11250 uint64_t cgen_var_894;
11251 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_894, 1);
11252 countingStream->write((uint64_t*)&cgen_var_894, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011253 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011254 marshal_VkDisplayPlaneCapabilitiesKHR(countingStream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
11255 }
11256 uint32_t packetSize_vkGetDisplayPlaneCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11257 countingStream->rewind();
11258 uint32_t opcode_vkGetDisplayPlaneCapabilitiesKHR = OP_vkGetDisplayPlaneCapabilitiesKHR;
11259 stream->write(&opcode_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
11260 stream->write(&packetSize_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011261 uint64_t cgen_var_895;
11262 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_895, 1);
11263 stream->write((uint64_t*)&cgen_var_895, 1 * 8);
11264 uint64_t cgen_var_896;
11265 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_896, 1);
11266 stream->write((uint64_t*)&cgen_var_896, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011267 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011268 marshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
11269 unmarshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
11270 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
11271 stream->read(&vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011272 countingStream->clearPool();
11273 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011274 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011275 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
11276}
11277
11278VkResult VkEncoder::vkCreateDisplayPlaneSurfaceKHR(
11279 VkInstance instance,
11280 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
11281 const VkAllocationCallbacks* pAllocator,
11282 VkSurfaceKHR* pSurface)
11283{
11284 auto stream = mImpl->stream();
11285 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011286 auto resources = mImpl->resources();
11287 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011288 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011289 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011290 VkDisplaySurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011291 VkAllocationCallbacks* local_pAllocator;
11292 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011293 local_pCreateInfo = nullptr;
11294 if (pCreateInfo)
11295 {
11296 local_pCreateInfo = (VkDisplaySurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkDisplaySurfaceCreateInfoKHR));
11297 deepcopy_VkDisplaySurfaceCreateInfoKHR(pool, pCreateInfo, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
11298 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011299 local_pAllocator = nullptr;
11300 if (pAllocator)
11301 {
11302 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11303 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11304 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011305 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011306 countingStream->rewind();
11307 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011308 uint64_t cgen_var_897;
11309 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_897, 1);
11310 countingStream->write((uint64_t*)&cgen_var_897, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011311 marshal_VkDisplaySurfaceCreateInfoKHR(countingStream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011312 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011313 uint64_t cgen_var_898 = (uint64_t)(uintptr_t)local_pAllocator;
11314 countingStream->putBe64(cgen_var_898);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011315 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011316 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011317 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011318 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011319 uint64_t cgen_var_899;
11320 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_899, 1);
11321 countingStream->write((uint64_t*)&cgen_var_899, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011322 }
11323 uint32_t packetSize_vkCreateDisplayPlaneSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11324 countingStream->rewind();
11325 uint32_t opcode_vkCreateDisplayPlaneSurfaceKHR = OP_vkCreateDisplayPlaneSurfaceKHR;
11326 stream->write(&opcode_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
11327 stream->write(&packetSize_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011328 uint64_t cgen_var_900;
11329 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_900, 1);
11330 stream->write((uint64_t*)&cgen_var_900, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011331 marshal_VkDisplaySurfaceCreateInfoKHR(stream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011332 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011333 uint64_t cgen_var_901 = (uint64_t)(uintptr_t)local_pAllocator;
11334 stream->putBe64(cgen_var_901);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011335 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011336 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011337 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011338 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011339 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011340 uint64_t cgen_var_902;
11341 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_902, 1);
11342 stream->write((uint64_t*)&cgen_var_902, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011343 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011344 uint64_t cgen_var_903;
11345 stream->read((uint64_t*)&cgen_var_903, 8);
11346 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_903, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011347 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
11348 stream->read(&vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011349 countingStream->clearPool();
11350 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011351 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011352 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
11353}
11354
11355#endif
11356#ifdef VK_KHR_display_swapchain
11357VkResult VkEncoder::vkCreateSharedSwapchainsKHR(
11358 VkDevice device,
11359 uint32_t swapchainCount,
11360 const VkSwapchainCreateInfoKHR* pCreateInfos,
11361 const VkAllocationCallbacks* pAllocator,
11362 VkSwapchainKHR* pSwapchains)
11363{
11364 auto stream = mImpl->stream();
11365 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011366 auto resources = mImpl->resources();
11367 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011368 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011369 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011370 uint32_t local_swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011371 VkSwapchainCreateInfoKHR* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011372 VkAllocationCallbacks* local_pAllocator;
11373 local_device = device;
11374 local_swapchainCount = swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011375 local_pCreateInfos = nullptr;
11376 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011377 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011378 local_pCreateInfos = (VkSwapchainCreateInfoKHR*)pool->alloc(((swapchainCount)) * sizeof(const VkSwapchainCreateInfoKHR));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011379 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
11380 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011381 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfos + i, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011382 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011383 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011384 local_pAllocator = nullptr;
11385 if (pAllocator)
11386 {
11387 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11388 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11389 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011390 local_pAllocator = nullptr;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011391 countingStream->rewind();
11392 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011393 uint64_t cgen_var_904;
11394 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_904, 1);
11395 countingStream->write((uint64_t*)&cgen_var_904, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011396 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
11397 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
11398 {
11399 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
11400 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011401 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011402 uint64_t cgen_var_905 = (uint64_t)(uintptr_t)local_pAllocator;
11403 countingStream->putBe64(cgen_var_905);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011404 if (local_pAllocator)
11405 {
11406 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011407 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080011408 if (((swapchainCount)))
11409 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011410 uint64_t* cgen_var_906;
11411 countingStream->alloc((void**)&cgen_var_906, ((swapchainCount)) * 8);
11412 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_906, ((swapchainCount)));
11413 countingStream->write((uint64_t*)cgen_var_906, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011414 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011415 }
11416 uint32_t packetSize_vkCreateSharedSwapchainsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11417 countingStream->rewind();
11418 uint32_t opcode_vkCreateSharedSwapchainsKHR = OP_vkCreateSharedSwapchainsKHR;
11419 stream->write(&opcode_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
11420 stream->write(&packetSize_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011421 uint64_t cgen_var_907;
11422 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_907, 1);
11423 stream->write((uint64_t*)&cgen_var_907, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011424 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011425 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
11426 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011427 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011428 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011429 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011430 uint64_t cgen_var_908 = (uint64_t)(uintptr_t)local_pAllocator;
11431 stream->putBe64(cgen_var_908);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011432 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011433 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011434 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011435 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011436 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -080011437 if (((swapchainCount)))
11438 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011439 uint64_t* cgen_var_909;
11440 stream->alloc((void**)&cgen_var_909, ((swapchainCount)) * 8);
11441 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_909, ((swapchainCount)));
11442 stream->write((uint64_t*)cgen_var_909, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011443 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011444 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -080011445 if (((swapchainCount)))
11446 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011447 uint64_t* cgen_var_910;
11448 stream->alloc((void**)&cgen_var_910, ((swapchainCount)) * 8);
11449 stream->read((uint64_t*)cgen_var_910, ((swapchainCount)) * 8);
11450 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(cgen_var_910, (VkSwapchainKHR*)pSwapchains, ((swapchainCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011451 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011452 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
11453 stream->read(&vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011454 countingStream->clearPool();
11455 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011456 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011457 return vkCreateSharedSwapchainsKHR_VkResult_return;
11458}
11459
11460#endif
11461#ifdef VK_KHR_xlib_surface
11462VkResult VkEncoder::vkCreateXlibSurfaceKHR(
11463 VkInstance instance,
11464 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
11465 const VkAllocationCallbacks* pAllocator,
11466 VkSurfaceKHR* pSurface)
11467{
11468 auto stream = mImpl->stream();
11469 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011470 auto resources = mImpl->resources();
11471 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011472 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011473 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011474 VkXlibSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011475 VkAllocationCallbacks* local_pAllocator;
11476 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011477 local_pCreateInfo = nullptr;
11478 if (pCreateInfo)
11479 {
11480 local_pCreateInfo = (VkXlibSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXlibSurfaceCreateInfoKHR));
11481 deepcopy_VkXlibSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
11482 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011483 local_pAllocator = nullptr;
11484 if (pAllocator)
11485 {
11486 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11487 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11488 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011489 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011490 countingStream->rewind();
11491 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011492 uint64_t cgen_var_911;
11493 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_911, 1);
11494 countingStream->write((uint64_t*)&cgen_var_911, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011495 marshal_VkXlibSurfaceCreateInfoKHR(countingStream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011496 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011497 uint64_t cgen_var_912 = (uint64_t)(uintptr_t)local_pAllocator;
11498 countingStream->putBe64(cgen_var_912);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011499 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011500 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011501 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011502 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011503 uint64_t cgen_var_913;
11504 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_913, 1);
11505 countingStream->write((uint64_t*)&cgen_var_913, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011506 }
11507 uint32_t packetSize_vkCreateXlibSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11508 countingStream->rewind();
11509 uint32_t opcode_vkCreateXlibSurfaceKHR = OP_vkCreateXlibSurfaceKHR;
11510 stream->write(&opcode_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
11511 stream->write(&packetSize_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011512 uint64_t cgen_var_914;
11513 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_914, 1);
11514 stream->write((uint64_t*)&cgen_var_914, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011515 marshal_VkXlibSurfaceCreateInfoKHR(stream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011516 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011517 uint64_t cgen_var_915 = (uint64_t)(uintptr_t)local_pAllocator;
11518 stream->putBe64(cgen_var_915);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011519 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011520 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011521 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011522 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011523 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011524 uint64_t cgen_var_916;
11525 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_916, 1);
11526 stream->write((uint64_t*)&cgen_var_916, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011527 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011528 uint64_t cgen_var_917;
11529 stream->read((uint64_t*)&cgen_var_917, 8);
11530 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_917, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011531 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
11532 stream->read(&vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011533 countingStream->clearPool();
11534 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011535 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011536 return vkCreateXlibSurfaceKHR_VkResult_return;
11537}
11538
11539VkBool32 VkEncoder::vkGetPhysicalDeviceXlibPresentationSupportKHR(
11540 VkPhysicalDevice physicalDevice,
11541 uint32_t queueFamilyIndex,
11542 Display* dpy,
11543 VisualID visualID)
11544{
11545 auto stream = mImpl->stream();
11546 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011547 auto resources = mImpl->resources();
11548 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011549 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011550 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011551 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011552 VisualID local_visualID;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011553 local_physicalDevice = physicalDevice;
11554 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011555 local_visualID = visualID;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011556 countingStream->rewind();
11557 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011558 uint64_t cgen_var_918;
11559 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_918, 1);
11560 countingStream->write((uint64_t*)&cgen_var_918, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011561 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011562 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011563 countingStream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011564 }
11565 uint32_t packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11566 countingStream->rewind();
11567 uint32_t opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR = OP_vkGetPhysicalDeviceXlibPresentationSupportKHR;
11568 stream->write(&opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
11569 stream->write(&packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011570 uint64_t cgen_var_919;
11571 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_919, 1);
11572 stream->write((uint64_t*)&cgen_var_919, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011573 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011574 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011575 stream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011576 stream->read((Display*)dpy, sizeof(Display));
11577 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11578 stream->read(&vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011579 countingStream->clearPool();
11580 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011581 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011582 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
11583}
11584
11585#endif
11586#ifdef VK_KHR_xcb_surface
11587VkResult VkEncoder::vkCreateXcbSurfaceKHR(
11588 VkInstance instance,
11589 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
11590 const VkAllocationCallbacks* pAllocator,
11591 VkSurfaceKHR* pSurface)
11592{
11593 auto stream = mImpl->stream();
11594 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011595 auto resources = mImpl->resources();
11596 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011597 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011598 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011599 VkXcbSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011600 VkAllocationCallbacks* local_pAllocator;
11601 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011602 local_pCreateInfo = nullptr;
11603 if (pCreateInfo)
11604 {
11605 local_pCreateInfo = (VkXcbSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXcbSurfaceCreateInfoKHR));
11606 deepcopy_VkXcbSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
11607 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011608 local_pAllocator = nullptr;
11609 if (pAllocator)
11610 {
11611 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11612 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11613 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011614 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011615 countingStream->rewind();
11616 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011617 uint64_t cgen_var_920;
11618 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_920, 1);
11619 countingStream->write((uint64_t*)&cgen_var_920, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011620 marshal_VkXcbSurfaceCreateInfoKHR(countingStream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011621 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011622 uint64_t cgen_var_921 = (uint64_t)(uintptr_t)local_pAllocator;
11623 countingStream->putBe64(cgen_var_921);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011624 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011625 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011626 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011627 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011628 uint64_t cgen_var_922;
11629 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_922, 1);
11630 countingStream->write((uint64_t*)&cgen_var_922, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011631 }
11632 uint32_t packetSize_vkCreateXcbSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11633 countingStream->rewind();
11634 uint32_t opcode_vkCreateXcbSurfaceKHR = OP_vkCreateXcbSurfaceKHR;
11635 stream->write(&opcode_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
11636 stream->write(&packetSize_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011637 uint64_t cgen_var_923;
11638 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_923, 1);
11639 stream->write((uint64_t*)&cgen_var_923, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011640 marshal_VkXcbSurfaceCreateInfoKHR(stream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011641 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011642 uint64_t cgen_var_924 = (uint64_t)(uintptr_t)local_pAllocator;
11643 stream->putBe64(cgen_var_924);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011644 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011645 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011646 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011647 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011648 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011649 uint64_t cgen_var_925;
11650 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_925, 1);
11651 stream->write((uint64_t*)&cgen_var_925, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011652 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011653 uint64_t cgen_var_926;
11654 stream->read((uint64_t*)&cgen_var_926, 8);
11655 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_926, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011656 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
11657 stream->read(&vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011658 countingStream->clearPool();
11659 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011660 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011661 return vkCreateXcbSurfaceKHR_VkResult_return;
11662}
11663
11664VkBool32 VkEncoder::vkGetPhysicalDeviceXcbPresentationSupportKHR(
11665 VkPhysicalDevice physicalDevice,
11666 uint32_t queueFamilyIndex,
11667 xcb_connection_t* connection,
11668 xcb_visualid_t visual_id)
11669{
11670 auto stream = mImpl->stream();
11671 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011672 auto resources = mImpl->resources();
11673 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011674 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011675 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011676 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011677 xcb_visualid_t local_visual_id;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011678 local_physicalDevice = physicalDevice;
11679 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011680 local_visual_id = visual_id;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011681 countingStream->rewind();
11682 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011683 uint64_t cgen_var_927;
11684 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_927, 1);
11685 countingStream->write((uint64_t*)&cgen_var_927, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011686 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011687 countingStream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011688 countingStream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011689 }
11690 uint32_t packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11691 countingStream->rewind();
11692 uint32_t opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR = OP_vkGetPhysicalDeviceXcbPresentationSupportKHR;
11693 stream->write(&opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
11694 stream->write(&packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011695 uint64_t cgen_var_928;
11696 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_928, 1);
11697 stream->write((uint64_t*)&cgen_var_928, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011698 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011699 stream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011700 stream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011701 stream->read((xcb_connection_t*)connection, sizeof(xcb_connection_t));
11702 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11703 stream->read(&vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011704 countingStream->clearPool();
11705 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011706 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011707 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
11708}
11709
11710#endif
11711#ifdef VK_KHR_wayland_surface
11712VkResult VkEncoder::vkCreateWaylandSurfaceKHR(
11713 VkInstance instance,
11714 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
11715 const VkAllocationCallbacks* pAllocator,
11716 VkSurfaceKHR* pSurface)
11717{
11718 auto stream = mImpl->stream();
11719 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011720 auto resources = mImpl->resources();
11721 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011722 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011723 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011724 VkWaylandSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011725 VkAllocationCallbacks* local_pAllocator;
11726 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011727 local_pCreateInfo = nullptr;
11728 if (pCreateInfo)
11729 {
11730 local_pCreateInfo = (VkWaylandSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWaylandSurfaceCreateInfoKHR));
11731 deepcopy_VkWaylandSurfaceCreateInfoKHR(pool, pCreateInfo, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
11732 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011733 local_pAllocator = nullptr;
11734 if (pAllocator)
11735 {
11736 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11737 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11738 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011739 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011740 countingStream->rewind();
11741 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011742 uint64_t cgen_var_929;
11743 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_929, 1);
11744 countingStream->write((uint64_t*)&cgen_var_929, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011745 marshal_VkWaylandSurfaceCreateInfoKHR(countingStream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011746 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011747 uint64_t cgen_var_930 = (uint64_t)(uintptr_t)local_pAllocator;
11748 countingStream->putBe64(cgen_var_930);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011749 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011750 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011751 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011752 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011753 uint64_t cgen_var_931;
11754 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_931, 1);
11755 countingStream->write((uint64_t*)&cgen_var_931, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011756 }
11757 uint32_t packetSize_vkCreateWaylandSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11758 countingStream->rewind();
11759 uint32_t opcode_vkCreateWaylandSurfaceKHR = OP_vkCreateWaylandSurfaceKHR;
11760 stream->write(&opcode_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
11761 stream->write(&packetSize_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011762 uint64_t cgen_var_932;
11763 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_932, 1);
11764 stream->write((uint64_t*)&cgen_var_932, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011765 marshal_VkWaylandSurfaceCreateInfoKHR(stream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011766 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011767 uint64_t cgen_var_933 = (uint64_t)(uintptr_t)local_pAllocator;
11768 stream->putBe64(cgen_var_933);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011769 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011770 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011771 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011772 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011773 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011774 uint64_t cgen_var_934;
11775 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_934, 1);
11776 stream->write((uint64_t*)&cgen_var_934, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011777 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011778 uint64_t cgen_var_935;
11779 stream->read((uint64_t*)&cgen_var_935, 8);
11780 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_935, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011781 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
11782 stream->read(&vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011783 countingStream->clearPool();
11784 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011785 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011786 return vkCreateWaylandSurfaceKHR_VkResult_return;
11787}
11788
11789VkBool32 VkEncoder::vkGetPhysicalDeviceWaylandPresentationSupportKHR(
11790 VkPhysicalDevice physicalDevice,
11791 uint32_t queueFamilyIndex,
11792 wl_display* display)
11793{
11794 auto stream = mImpl->stream();
11795 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011796 auto resources = mImpl->resources();
11797 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011798 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011799 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011800 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011801 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011802 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011803 countingStream->rewind();
11804 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011805 uint64_t cgen_var_936;
11806 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_936, 1);
11807 countingStream->write((uint64_t*)&cgen_var_936, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011808 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011809 countingStream->write((wl_display*)display, sizeof(wl_display));
11810 }
11811 uint32_t packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11812 countingStream->rewind();
11813 uint32_t opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR = OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR;
11814 stream->write(&opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
11815 stream->write(&packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011816 uint64_t cgen_var_937;
11817 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_937, 1);
11818 stream->write((uint64_t*)&cgen_var_937, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011819 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011820 stream->write((wl_display*)display, sizeof(wl_display));
11821 stream->read((wl_display*)display, sizeof(wl_display));
11822 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11823 stream->read(&vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011824 countingStream->clearPool();
11825 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011826 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011827 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
11828}
11829
11830#endif
11831#ifdef VK_KHR_mir_surface
11832VkResult VkEncoder::vkCreateMirSurfaceKHR(
11833 VkInstance instance,
11834 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
11835 const VkAllocationCallbacks* pAllocator,
11836 VkSurfaceKHR* pSurface)
11837{
11838 auto stream = mImpl->stream();
11839 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011840 auto resources = mImpl->resources();
11841 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011842 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011843 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011844 VkMirSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011845 VkAllocationCallbacks* local_pAllocator;
11846 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011847 local_pCreateInfo = nullptr;
11848 if (pCreateInfo)
11849 {
11850 local_pCreateInfo = (VkMirSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkMirSurfaceCreateInfoKHR));
11851 deepcopy_VkMirSurfaceCreateInfoKHR(pool, pCreateInfo, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
11852 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011853 local_pAllocator = nullptr;
11854 if (pAllocator)
11855 {
11856 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11857 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11858 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011859 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011860 countingStream->rewind();
11861 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011862 uint64_t cgen_var_938;
11863 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_938, 1);
11864 countingStream->write((uint64_t*)&cgen_var_938, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011865 marshal_VkMirSurfaceCreateInfoKHR(countingStream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011866 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011867 uint64_t cgen_var_939 = (uint64_t)(uintptr_t)local_pAllocator;
11868 countingStream->putBe64(cgen_var_939);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011869 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011870 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011871 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011872 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011873 uint64_t cgen_var_940;
11874 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_940, 1);
11875 countingStream->write((uint64_t*)&cgen_var_940, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011876 }
11877 uint32_t packetSize_vkCreateMirSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11878 countingStream->rewind();
11879 uint32_t opcode_vkCreateMirSurfaceKHR = OP_vkCreateMirSurfaceKHR;
11880 stream->write(&opcode_vkCreateMirSurfaceKHR, sizeof(uint32_t));
11881 stream->write(&packetSize_vkCreateMirSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011882 uint64_t cgen_var_941;
11883 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_941, 1);
11884 stream->write((uint64_t*)&cgen_var_941, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011885 marshal_VkMirSurfaceCreateInfoKHR(stream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011886 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011887 uint64_t cgen_var_942 = (uint64_t)(uintptr_t)local_pAllocator;
11888 stream->putBe64(cgen_var_942);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011889 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011890 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011891 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011892 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011893 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011894 uint64_t cgen_var_943;
11895 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_943, 1);
11896 stream->write((uint64_t*)&cgen_var_943, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011897 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011898 uint64_t cgen_var_944;
11899 stream->read((uint64_t*)&cgen_var_944, 8);
11900 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_944, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011901 VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
11902 stream->read(&vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011903 countingStream->clearPool();
11904 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011905 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011906 return vkCreateMirSurfaceKHR_VkResult_return;
11907}
11908
11909VkBool32 VkEncoder::vkGetPhysicalDeviceMirPresentationSupportKHR(
11910 VkPhysicalDevice physicalDevice,
11911 uint32_t queueFamilyIndex,
11912 MirConnection* connection)
11913{
11914 auto stream = mImpl->stream();
11915 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011916 auto resources = mImpl->resources();
11917 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011918 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011919 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011920 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011921 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011922 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011923 countingStream->rewind();
11924 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011925 uint64_t cgen_var_945;
11926 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_945, 1);
11927 countingStream->write((uint64_t*)&cgen_var_945, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011928 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011929 countingStream->write((MirConnection*)connection, sizeof(MirConnection));
11930 }
11931 uint32_t packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11932 countingStream->rewind();
11933 uint32_t opcode_vkGetPhysicalDeviceMirPresentationSupportKHR = OP_vkGetPhysicalDeviceMirPresentationSupportKHR;
11934 stream->write(&opcode_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
11935 stream->write(&packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011936 uint64_t cgen_var_946;
11937 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_946, 1);
11938 stream->write((uint64_t*)&cgen_var_946, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011939 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011940 stream->write((MirConnection*)connection, sizeof(MirConnection));
11941 stream->read((MirConnection*)connection, sizeof(MirConnection));
11942 VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11943 stream->read(&vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011944 countingStream->clearPool();
11945 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011946 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011947 return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
11948}
11949
11950#endif
11951#ifdef VK_KHR_android_surface
11952VkResult VkEncoder::vkCreateAndroidSurfaceKHR(
11953 VkInstance instance,
11954 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
11955 const VkAllocationCallbacks* pAllocator,
11956 VkSurfaceKHR* pSurface)
11957{
11958 auto stream = mImpl->stream();
11959 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011960 auto resources = mImpl->resources();
11961 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011962 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011963 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011964 VkAndroidSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011965 VkAllocationCallbacks* local_pAllocator;
11966 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011967 local_pCreateInfo = nullptr;
11968 if (pCreateInfo)
11969 {
11970 local_pCreateInfo = (VkAndroidSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkAndroidSurfaceCreateInfoKHR));
11971 deepcopy_VkAndroidSurfaceCreateInfoKHR(pool, pCreateInfo, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
11972 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011973 local_pAllocator = nullptr;
11974 if (pAllocator)
11975 {
11976 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11977 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11978 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011979 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011980 countingStream->rewind();
11981 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011982 uint64_t cgen_var_947;
11983 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_947, 1);
11984 countingStream->write((uint64_t*)&cgen_var_947, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011985 marshal_VkAndroidSurfaceCreateInfoKHR(countingStream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011986 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011987 uint64_t cgen_var_948 = (uint64_t)(uintptr_t)local_pAllocator;
11988 countingStream->putBe64(cgen_var_948);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011989 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011990 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011991 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011992 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011993 uint64_t cgen_var_949;
11994 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_949, 1);
11995 countingStream->write((uint64_t*)&cgen_var_949, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011996 }
11997 uint32_t packetSize_vkCreateAndroidSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11998 countingStream->rewind();
11999 uint32_t opcode_vkCreateAndroidSurfaceKHR = OP_vkCreateAndroidSurfaceKHR;
12000 stream->write(&opcode_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
12001 stream->write(&packetSize_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012002 uint64_t cgen_var_950;
12003 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_950, 1);
12004 stream->write((uint64_t*)&cgen_var_950, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012005 marshal_VkAndroidSurfaceCreateInfoKHR(stream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012006 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012007 uint64_t cgen_var_951 = (uint64_t)(uintptr_t)local_pAllocator;
12008 stream->putBe64(cgen_var_951);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012009 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012010 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012011 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012012 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012013 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012014 uint64_t cgen_var_952;
12015 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_952, 1);
12016 stream->write((uint64_t*)&cgen_var_952, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012017 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012018 uint64_t cgen_var_953;
12019 stream->read((uint64_t*)&cgen_var_953, 8);
12020 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_953, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012021 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
12022 stream->read(&vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012023 countingStream->clearPool();
12024 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012025 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012026 return vkCreateAndroidSurfaceKHR_VkResult_return;
12027}
12028
12029#endif
12030#ifdef VK_KHR_win32_surface
12031VkResult VkEncoder::vkCreateWin32SurfaceKHR(
12032 VkInstance instance,
12033 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
12034 const VkAllocationCallbacks* pAllocator,
12035 VkSurfaceKHR* pSurface)
12036{
12037 auto stream = mImpl->stream();
12038 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012039 auto resources = mImpl->resources();
12040 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012041 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012042 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012043 VkWin32SurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012044 VkAllocationCallbacks* local_pAllocator;
12045 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012046 local_pCreateInfo = nullptr;
12047 if (pCreateInfo)
12048 {
12049 local_pCreateInfo = (VkWin32SurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWin32SurfaceCreateInfoKHR));
12050 deepcopy_VkWin32SurfaceCreateInfoKHR(pool, pCreateInfo, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
12051 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012052 local_pAllocator = nullptr;
12053 if (pAllocator)
12054 {
12055 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12056 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12057 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012058 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012059 countingStream->rewind();
12060 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012061 uint64_t cgen_var_954;
12062 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_954, 1);
12063 countingStream->write((uint64_t*)&cgen_var_954, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012064 marshal_VkWin32SurfaceCreateInfoKHR(countingStream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012065 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012066 uint64_t cgen_var_955 = (uint64_t)(uintptr_t)local_pAllocator;
12067 countingStream->putBe64(cgen_var_955);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012068 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012069 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012070 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012071 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012072 uint64_t cgen_var_956;
12073 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_956, 1);
12074 countingStream->write((uint64_t*)&cgen_var_956, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012075 }
12076 uint32_t packetSize_vkCreateWin32SurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12077 countingStream->rewind();
12078 uint32_t opcode_vkCreateWin32SurfaceKHR = OP_vkCreateWin32SurfaceKHR;
12079 stream->write(&opcode_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
12080 stream->write(&packetSize_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012081 uint64_t cgen_var_957;
12082 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_957, 1);
12083 stream->write((uint64_t*)&cgen_var_957, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012084 marshal_VkWin32SurfaceCreateInfoKHR(stream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012085 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012086 uint64_t cgen_var_958 = (uint64_t)(uintptr_t)local_pAllocator;
12087 stream->putBe64(cgen_var_958);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012088 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012089 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012090 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012091 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012092 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012093 uint64_t cgen_var_959;
12094 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_959, 1);
12095 stream->write((uint64_t*)&cgen_var_959, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012096 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012097 uint64_t cgen_var_960;
12098 stream->read((uint64_t*)&cgen_var_960, 8);
12099 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_960, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012100 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
12101 stream->read(&vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012102 countingStream->clearPool();
12103 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012104 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012105 return vkCreateWin32SurfaceKHR_VkResult_return;
12106}
12107
12108VkBool32 VkEncoder::vkGetPhysicalDeviceWin32PresentationSupportKHR(
12109 VkPhysicalDevice physicalDevice,
12110 uint32_t queueFamilyIndex)
12111{
12112 auto stream = mImpl->stream();
12113 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012114 auto resources = mImpl->resources();
12115 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012116 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012117 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012118 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012119 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012120 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012121 countingStream->rewind();
12122 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012123 uint64_t cgen_var_961;
12124 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_961, 1);
12125 countingStream->write((uint64_t*)&cgen_var_961, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012126 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012127 }
12128 uint32_t packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12129 countingStream->rewind();
12130 uint32_t opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR = OP_vkGetPhysicalDeviceWin32PresentationSupportKHR;
12131 stream->write(&opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
12132 stream->write(&packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012133 uint64_t cgen_var_962;
12134 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_962, 1);
12135 stream->write((uint64_t*)&cgen_var_962, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012136 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012137 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
12138 stream->read(&vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012139 countingStream->clearPool();
12140 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012141 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012142 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
12143}
12144
12145#endif
12146#ifdef VK_KHR_sampler_mirror_clamp_to_edge
12147#endif
12148#ifdef VK_KHR_multiview
12149#endif
12150#ifdef VK_KHR_get_physical_device_properties2
12151void VkEncoder::vkGetPhysicalDeviceFeatures2KHR(
12152 VkPhysicalDevice physicalDevice,
12153 VkPhysicalDeviceFeatures2* pFeatures)
12154{
12155 auto stream = mImpl->stream();
12156 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012157 auto resources = mImpl->resources();
12158 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012159 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012160 VkPhysicalDevice local_physicalDevice;
12161 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012162 countingStream->rewind();
12163 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012164 uint64_t cgen_var_963;
12165 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_963, 1);
12166 countingStream->write((uint64_t*)&cgen_var_963, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012167 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
12168 }
12169 uint32_t packetSize_vkGetPhysicalDeviceFeatures2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12170 countingStream->rewind();
12171 uint32_t opcode_vkGetPhysicalDeviceFeatures2KHR = OP_vkGetPhysicalDeviceFeatures2KHR;
12172 stream->write(&opcode_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
12173 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012174 uint64_t cgen_var_964;
12175 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_964, 1);
12176 stream->write((uint64_t*)&cgen_var_964, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012177 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
12178 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
12179}
12180
12181void VkEncoder::vkGetPhysicalDeviceProperties2KHR(
12182 VkPhysicalDevice physicalDevice,
12183 VkPhysicalDeviceProperties2* pProperties)
12184{
12185 auto stream = mImpl->stream();
12186 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012187 auto resources = mImpl->resources();
12188 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012189 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012190 VkPhysicalDevice local_physicalDevice;
12191 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012192 countingStream->rewind();
12193 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012194 uint64_t cgen_var_965;
12195 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_965, 1);
12196 countingStream->write((uint64_t*)&cgen_var_965, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012197 marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
12198 }
12199 uint32_t packetSize_vkGetPhysicalDeviceProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12200 countingStream->rewind();
12201 uint32_t opcode_vkGetPhysicalDeviceProperties2KHR = OP_vkGetPhysicalDeviceProperties2KHR;
12202 stream->write(&opcode_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
12203 stream->write(&packetSize_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012204 uint64_t cgen_var_966;
12205 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_966, 1);
12206 stream->write((uint64_t*)&cgen_var_966, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012207 marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
12208 unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
12209}
12210
12211void VkEncoder::vkGetPhysicalDeviceFormatProperties2KHR(
12212 VkPhysicalDevice physicalDevice,
12213 VkFormat format,
12214 VkFormatProperties2* pFormatProperties)
12215{
12216 auto stream = mImpl->stream();
12217 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012218 auto resources = mImpl->resources();
12219 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012220 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012221 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012222 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012223 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012224 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012225 countingStream->rewind();
12226 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012227 uint64_t cgen_var_967;
12228 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_967, 1);
12229 countingStream->write((uint64_t*)&cgen_var_967, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012230 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012231 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
12232 }
12233 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12234 countingStream->rewind();
12235 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2KHR = OP_vkGetPhysicalDeviceFormatProperties2KHR;
12236 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
12237 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012238 uint64_t cgen_var_968;
12239 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_968, 1);
12240 stream->write((uint64_t*)&cgen_var_968, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012241 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012242 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
12243 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
12244}
12245
12246VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2KHR(
12247 VkPhysicalDevice physicalDevice,
12248 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
12249 VkImageFormatProperties2* pImageFormatProperties)
12250{
12251 auto stream = mImpl->stream();
12252 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012253 auto resources = mImpl->resources();
12254 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012255 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012256 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012257 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012258 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012259 local_pImageFormatInfo = nullptr;
12260 if (pImageFormatInfo)
12261 {
12262 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
12263 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
12264 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012265 countingStream->rewind();
12266 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012267 uint64_t cgen_var_969;
12268 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_969, 1);
12269 countingStream->write((uint64_t*)&cgen_var_969, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012270 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012271 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
12272 }
12273 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12274 countingStream->rewind();
12275 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2KHR = OP_vkGetPhysicalDeviceImageFormatProperties2KHR;
12276 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
12277 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012278 uint64_t cgen_var_970;
12279 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_970, 1);
12280 stream->write((uint64_t*)&cgen_var_970, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012281 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012282 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
12283 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
12284 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
12285 stream->read(&vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012286 countingStream->clearPool();
12287 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012288 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012289 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
12290}
12291
12292void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2KHR(
12293 VkPhysicalDevice physicalDevice,
12294 uint32_t* pQueueFamilyPropertyCount,
12295 VkQueueFamilyProperties2* pQueueFamilyProperties)
12296{
12297 auto stream = mImpl->stream();
12298 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012299 auto resources = mImpl->resources();
12300 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012301 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012302 VkPhysicalDevice local_physicalDevice;
12303 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012304 countingStream->rewind();
12305 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012306 uint64_t cgen_var_971;
12307 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_971, 1);
12308 countingStream->write((uint64_t*)&cgen_var_971, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012309 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012310 uint64_t cgen_var_972 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
12311 countingStream->putBe64(cgen_var_972);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012312 if (pQueueFamilyPropertyCount)
12313 {
12314 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
12315 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012316 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012317 uint64_t cgen_var_973 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
12318 countingStream->putBe64(cgen_var_973);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012319 if (pQueueFamilyProperties)
12320 {
12321 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
12322 {
12323 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
12324 }
12325 }
12326 }
12327 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12328 countingStream->rewind();
12329 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR = OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR;
12330 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
12331 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012332 uint64_t cgen_var_974;
12333 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_974, 1);
12334 stream->write((uint64_t*)&cgen_var_974, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012335 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012336 uint64_t cgen_var_975 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
12337 stream->putBe64(cgen_var_975);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012338 if (pQueueFamilyPropertyCount)
12339 {
12340 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
12341 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012342 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012343 uint64_t cgen_var_976 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
12344 stream->putBe64(cgen_var_976);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012345 if (pQueueFamilyProperties)
12346 {
12347 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
12348 {
12349 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
12350 }
12351 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012352 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012353 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012354 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012355 if (pQueueFamilyPropertyCount)
12356 {
12357 if (!(check_pQueueFamilyPropertyCount))
12358 {
12359 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
12360 }
12361 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
12362 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012363 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012364 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012365 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012366 if (pQueueFamilyProperties)
12367 {
12368 if (!(check_pQueueFamilyProperties))
12369 {
12370 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
12371 }
12372 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
12373 {
12374 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
12375 }
12376 }
12377}
12378
12379void VkEncoder::vkGetPhysicalDeviceMemoryProperties2KHR(
12380 VkPhysicalDevice physicalDevice,
12381 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
12382{
12383 auto stream = mImpl->stream();
12384 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012385 auto resources = mImpl->resources();
12386 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012387 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012388 VkPhysicalDevice local_physicalDevice;
12389 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012390 countingStream->rewind();
12391 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012392 uint64_t cgen_var_979;
12393 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_979, 1);
12394 countingStream->write((uint64_t*)&cgen_var_979, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012395 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
12396 }
12397 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12398 countingStream->rewind();
12399 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2KHR = OP_vkGetPhysicalDeviceMemoryProperties2KHR;
12400 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
12401 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012402 uint64_t cgen_var_980;
12403 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_980, 1);
12404 stream->write((uint64_t*)&cgen_var_980, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012405 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
12406 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
12407}
12408
12409void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
12410 VkPhysicalDevice physicalDevice,
12411 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
12412 uint32_t* pPropertyCount,
12413 VkSparseImageFormatProperties2* pProperties)
12414{
12415 auto stream = mImpl->stream();
12416 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012417 auto resources = mImpl->resources();
12418 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012419 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012420 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012421 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012422 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012423 local_pFormatInfo = nullptr;
12424 if (pFormatInfo)
12425 {
12426 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
12427 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
12428 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012429 countingStream->rewind();
12430 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012431 uint64_t cgen_var_981;
12432 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_981, 1);
12433 countingStream->write((uint64_t*)&cgen_var_981, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012434 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012435 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012436 uint64_t cgen_var_982 = (uint64_t)(uintptr_t)pPropertyCount;
12437 countingStream->putBe64(cgen_var_982);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012438 if (pPropertyCount)
12439 {
12440 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12441 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012442 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012443 uint64_t cgen_var_983 = (uint64_t)(uintptr_t)pProperties;
12444 countingStream->putBe64(cgen_var_983);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012445 if (pProperties)
12446 {
12447 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12448 {
12449 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
12450 }
12451 }
12452 }
12453 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12454 countingStream->rewind();
12455 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
12456 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
12457 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012458 uint64_t cgen_var_984;
12459 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_984, 1);
12460 stream->write((uint64_t*)&cgen_var_984, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012461 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012462 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012463 uint64_t cgen_var_985 = (uint64_t)(uintptr_t)pPropertyCount;
12464 stream->putBe64(cgen_var_985);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012465 if (pPropertyCount)
12466 {
12467 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12468 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012469 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012470 uint64_t cgen_var_986 = (uint64_t)(uintptr_t)pProperties;
12471 stream->putBe64(cgen_var_986);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012472 if (pProperties)
12473 {
12474 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12475 {
12476 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
12477 }
12478 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012479 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012480 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012481 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012482 if (pPropertyCount)
12483 {
12484 if (!(check_pPropertyCount))
12485 {
12486 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12487 }
12488 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12489 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012490 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012491 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012492 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012493 if (pProperties)
12494 {
12495 if (!(check_pProperties))
12496 {
12497 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12498 }
12499 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12500 {
12501 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
12502 }
12503 }
12504}
12505
12506#endif
12507#ifdef VK_KHR_device_group
12508void VkEncoder::vkGetDeviceGroupPeerMemoryFeaturesKHR(
12509 VkDevice device,
12510 uint32_t heapIndex,
12511 uint32_t localDeviceIndex,
12512 uint32_t remoteDeviceIndex,
12513 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
12514{
12515 auto stream = mImpl->stream();
12516 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012517 auto resources = mImpl->resources();
12518 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012519 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012520 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012521 uint32_t local_heapIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012522 uint32_t local_localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012523 uint32_t local_remoteDeviceIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012524 local_device = device;
12525 local_heapIndex = heapIndex;
12526 local_localDeviceIndex = localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012527 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012528 countingStream->rewind();
12529 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012530 uint64_t cgen_var_989;
12531 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_989, 1);
12532 countingStream->write((uint64_t*)&cgen_var_989, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012533 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
12534 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
12535 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012536 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
12537 }
12538 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12539 countingStream->rewind();
12540 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR = OP_vkGetDeviceGroupPeerMemoryFeaturesKHR;
12541 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
12542 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012543 uint64_t cgen_var_990;
12544 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_990, 1);
12545 stream->write((uint64_t*)&cgen_var_990, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012546 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
12547 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
12548 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012549 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
12550 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
12551}
12552
12553void VkEncoder::vkCmdSetDeviceMaskKHR(
12554 VkCommandBuffer commandBuffer,
12555 uint32_t deviceMask)
12556{
12557 auto stream = mImpl->stream();
12558 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012559 auto resources = mImpl->resources();
12560 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012561 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012562 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012563 uint32_t local_deviceMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012564 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012565 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012566 countingStream->rewind();
12567 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012568 uint64_t cgen_var_991;
12569 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_991, 1);
12570 countingStream->write((uint64_t*)&cgen_var_991, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012571 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012572 }
12573 uint32_t packetSize_vkCmdSetDeviceMaskKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12574 countingStream->rewind();
12575 uint32_t opcode_vkCmdSetDeviceMaskKHR = OP_vkCmdSetDeviceMaskKHR;
12576 stream->write(&opcode_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
12577 stream->write(&packetSize_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012578 uint64_t cgen_var_992;
12579 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_992, 1);
12580 stream->write((uint64_t*)&cgen_var_992, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012581 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012582}
12583
12584void VkEncoder::vkCmdDispatchBaseKHR(
12585 VkCommandBuffer commandBuffer,
12586 uint32_t baseGroupX,
12587 uint32_t baseGroupY,
12588 uint32_t baseGroupZ,
12589 uint32_t groupCountX,
12590 uint32_t groupCountY,
12591 uint32_t groupCountZ)
12592{
12593 auto stream = mImpl->stream();
12594 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012595 auto resources = mImpl->resources();
12596 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012597 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012598 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012599 uint32_t local_baseGroupX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012600 uint32_t local_baseGroupY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012601 uint32_t local_baseGroupZ;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012602 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012603 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012604 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012605 local_commandBuffer = commandBuffer;
12606 local_baseGroupX = baseGroupX;
12607 local_baseGroupY = baseGroupY;
12608 local_baseGroupZ = baseGroupZ;
12609 local_groupCountX = groupCountX;
12610 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012611 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012612 countingStream->rewind();
12613 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012614 uint64_t cgen_var_993;
12615 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_993, 1);
12616 countingStream->write((uint64_t*)&cgen_var_993, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012617 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
12618 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
12619 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
12620 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
12621 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
12622 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012623 }
12624 uint32_t packetSize_vkCmdDispatchBaseKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12625 countingStream->rewind();
12626 uint32_t opcode_vkCmdDispatchBaseKHR = OP_vkCmdDispatchBaseKHR;
12627 stream->write(&opcode_vkCmdDispatchBaseKHR, sizeof(uint32_t));
12628 stream->write(&packetSize_vkCmdDispatchBaseKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012629 uint64_t cgen_var_994;
12630 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_994, 1);
12631 stream->write((uint64_t*)&cgen_var_994, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012632 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
12633 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
12634 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
12635 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
12636 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
12637 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012638}
12639
12640#endif
12641#ifdef VK_KHR_shader_draw_parameters
12642#endif
12643#ifdef VK_KHR_maintenance1
12644void VkEncoder::vkTrimCommandPoolKHR(
12645 VkDevice device,
12646 VkCommandPool commandPool,
12647 VkCommandPoolTrimFlags flags)
12648{
12649 auto stream = mImpl->stream();
12650 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012651 auto resources = mImpl->resources();
12652 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012653 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012654 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012655 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012656 VkCommandPoolTrimFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012657 local_device = device;
12658 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012659 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012660 countingStream->rewind();
12661 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012662 uint64_t cgen_var_995;
12663 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_995, 1);
12664 countingStream->write((uint64_t*)&cgen_var_995, 1 * 8);
12665 uint64_t cgen_var_996;
12666 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_996, 1);
12667 countingStream->write((uint64_t*)&cgen_var_996, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012668 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012669 }
12670 uint32_t packetSize_vkTrimCommandPoolKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12671 countingStream->rewind();
12672 uint32_t opcode_vkTrimCommandPoolKHR = OP_vkTrimCommandPoolKHR;
12673 stream->write(&opcode_vkTrimCommandPoolKHR, sizeof(uint32_t));
12674 stream->write(&packetSize_vkTrimCommandPoolKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012675 uint64_t cgen_var_997;
12676 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_997, 1);
12677 stream->write((uint64_t*)&cgen_var_997, 1 * 8);
12678 uint64_t cgen_var_998;
12679 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_998, 1);
12680 stream->write((uint64_t*)&cgen_var_998, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012681 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012682}
12683
12684#endif
12685#ifdef VK_KHR_device_group_creation
12686VkResult VkEncoder::vkEnumeratePhysicalDeviceGroupsKHR(
12687 VkInstance instance,
12688 uint32_t* pPhysicalDeviceGroupCount,
12689 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
12690{
12691 auto stream = mImpl->stream();
12692 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012693 auto resources = mImpl->resources();
12694 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012695 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012696 VkInstance local_instance;
12697 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012698 countingStream->rewind();
12699 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012700 uint64_t cgen_var_999;
12701 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_999, 1);
12702 countingStream->write((uint64_t*)&cgen_var_999, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012703 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012704 uint64_t cgen_var_1000 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
12705 countingStream->putBe64(cgen_var_1000);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012706 if (pPhysicalDeviceGroupCount)
12707 {
12708 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
12709 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012710 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012711 uint64_t cgen_var_1001 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
12712 countingStream->putBe64(cgen_var_1001);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012713 if (pPhysicalDeviceGroupProperties)
12714 {
12715 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
12716 {
12717 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
12718 }
12719 }
12720 }
12721 uint32_t packetSize_vkEnumeratePhysicalDeviceGroupsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12722 countingStream->rewind();
12723 uint32_t opcode_vkEnumeratePhysicalDeviceGroupsKHR = OP_vkEnumeratePhysicalDeviceGroupsKHR;
12724 stream->write(&opcode_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
12725 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012726 uint64_t cgen_var_1002;
12727 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1002, 1);
12728 stream->write((uint64_t*)&cgen_var_1002, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012729 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012730 uint64_t cgen_var_1003 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
12731 stream->putBe64(cgen_var_1003);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012732 if (pPhysicalDeviceGroupCount)
12733 {
12734 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
12735 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012736 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012737 uint64_t cgen_var_1004 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
12738 stream->putBe64(cgen_var_1004);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012739 if (pPhysicalDeviceGroupProperties)
12740 {
12741 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
12742 {
12743 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
12744 }
12745 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012746 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012747 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012748 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012749 if (pPhysicalDeviceGroupCount)
12750 {
12751 if (!(check_pPhysicalDeviceGroupCount))
12752 {
12753 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
12754 }
12755 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
12756 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012757 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012758 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012759 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012760 if (pPhysicalDeviceGroupProperties)
12761 {
12762 if (!(check_pPhysicalDeviceGroupProperties))
12763 {
12764 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
12765 }
12766 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
12767 {
12768 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
12769 }
12770 }
12771 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
12772 stream->read(&vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012773 countingStream->clearPool();
12774 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012775 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012776 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
12777}
12778
12779#endif
12780#ifdef VK_KHR_external_memory_capabilities
12781void VkEncoder::vkGetPhysicalDeviceExternalBufferPropertiesKHR(
12782 VkPhysicalDevice physicalDevice,
12783 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
12784 VkExternalBufferProperties* pExternalBufferProperties)
12785{
12786 auto stream = mImpl->stream();
12787 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012788 auto resources = mImpl->resources();
12789 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012790 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012791 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012792 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012793 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012794 local_pExternalBufferInfo = nullptr;
12795 if (pExternalBufferInfo)
12796 {
12797 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
12798 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
12799 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012800 countingStream->rewind();
12801 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012802 uint64_t cgen_var_1007;
12803 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1007, 1);
12804 countingStream->write((uint64_t*)&cgen_var_1007, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012805 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012806 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
12807 }
12808 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12809 countingStream->rewind();
12810 uint32_t opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR = OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR;
12811 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
12812 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012813 uint64_t cgen_var_1008;
12814 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1008, 1);
12815 stream->write((uint64_t*)&cgen_var_1008, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012816 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012817 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
12818 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
12819}
12820
12821#endif
12822#ifdef VK_KHR_external_memory
12823#endif
12824#ifdef VK_KHR_external_memory_win32
12825VkResult VkEncoder::vkGetMemoryWin32HandleKHR(
12826 VkDevice device,
12827 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
12828 HANDLE* pHandle)
12829{
12830 auto stream = mImpl->stream();
12831 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012832 auto resources = mImpl->resources();
12833 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012834 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012835 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012836 VkMemoryGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012837 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012838 local_pGetWin32HandleInfo = nullptr;
12839 if (pGetWin32HandleInfo)
12840 {
12841 local_pGetWin32HandleInfo = (VkMemoryGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkMemoryGetWin32HandleInfoKHR));
12842 deepcopy_VkMemoryGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
12843 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012844 countingStream->rewind();
12845 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012846 uint64_t cgen_var_1009;
12847 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1009, 1);
12848 countingStream->write((uint64_t*)&cgen_var_1009, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012849 marshal_VkMemoryGetWin32HandleInfoKHR(countingStream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012850 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
12851 }
12852 uint32_t packetSize_vkGetMemoryWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12853 countingStream->rewind();
12854 uint32_t opcode_vkGetMemoryWin32HandleKHR = OP_vkGetMemoryWin32HandleKHR;
12855 stream->write(&opcode_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
12856 stream->write(&packetSize_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012857 uint64_t cgen_var_1010;
12858 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1010, 1);
12859 stream->write((uint64_t*)&cgen_var_1010, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012860 marshal_VkMemoryGetWin32HandleInfoKHR(stream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012861 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
12862 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
12863 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
12864 stream->read(&vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012865 countingStream->clearPool();
12866 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012867 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012868 return vkGetMemoryWin32HandleKHR_VkResult_return;
12869}
12870
12871VkResult VkEncoder::vkGetMemoryWin32HandlePropertiesKHR(
12872 VkDevice device,
12873 VkExternalMemoryHandleTypeFlagBits handleType,
12874 HANDLE handle,
12875 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
12876{
12877 auto stream = mImpl->stream();
12878 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012879 auto resources = mImpl->resources();
12880 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012881 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012882 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012883 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012884 HANDLE local_handle;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012885 local_device = device;
12886 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012887 local_handle = handle;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012888 countingStream->rewind();
12889 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012890 uint64_t cgen_var_1011;
12891 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1011, 1);
12892 countingStream->write((uint64_t*)&cgen_var_1011, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012893 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12894 countingStream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012895 marshal_VkMemoryWin32HandlePropertiesKHR(countingStream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
12896 }
12897 uint32_t packetSize_vkGetMemoryWin32HandlePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12898 countingStream->rewind();
12899 uint32_t opcode_vkGetMemoryWin32HandlePropertiesKHR = OP_vkGetMemoryWin32HandlePropertiesKHR;
12900 stream->write(&opcode_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
12901 stream->write(&packetSize_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012902 uint64_t cgen_var_1012;
12903 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1012, 1);
12904 stream->write((uint64_t*)&cgen_var_1012, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012905 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12906 stream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012907 marshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
12908 unmarshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
12909 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
12910 stream->read(&vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012911 countingStream->clearPool();
12912 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012913 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012914 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
12915}
12916
12917#endif
12918#ifdef VK_KHR_external_memory_fd
12919VkResult VkEncoder::vkGetMemoryFdKHR(
12920 VkDevice device,
12921 const VkMemoryGetFdInfoKHR* pGetFdInfo,
12922 int* pFd)
12923{
12924 auto stream = mImpl->stream();
12925 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012926 auto resources = mImpl->resources();
12927 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012928 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012929 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012930 VkMemoryGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012931 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012932 local_pGetFdInfo = nullptr;
12933 if (pGetFdInfo)
12934 {
12935 local_pGetFdInfo = (VkMemoryGetFdInfoKHR*)pool->alloc(sizeof(const VkMemoryGetFdInfoKHR));
12936 deepcopy_VkMemoryGetFdInfoKHR(pool, pGetFdInfo, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
12937 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012938 countingStream->rewind();
12939 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012940 uint64_t cgen_var_1013;
12941 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1013, 1);
12942 countingStream->write((uint64_t*)&cgen_var_1013, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012943 marshal_VkMemoryGetFdInfoKHR(countingStream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012944 countingStream->write((int*)pFd, sizeof(int));
12945 }
12946 uint32_t packetSize_vkGetMemoryFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12947 countingStream->rewind();
12948 uint32_t opcode_vkGetMemoryFdKHR = OP_vkGetMemoryFdKHR;
12949 stream->write(&opcode_vkGetMemoryFdKHR, sizeof(uint32_t));
12950 stream->write(&packetSize_vkGetMemoryFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012951 uint64_t cgen_var_1014;
12952 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1014, 1);
12953 stream->write((uint64_t*)&cgen_var_1014, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012954 marshal_VkMemoryGetFdInfoKHR(stream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012955 stream->write((int*)pFd, sizeof(int));
12956 stream->read((int*)pFd, sizeof(int));
12957 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
12958 stream->read(&vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012959 countingStream->clearPool();
12960 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012961 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012962 return vkGetMemoryFdKHR_VkResult_return;
12963}
12964
12965VkResult VkEncoder::vkGetMemoryFdPropertiesKHR(
12966 VkDevice device,
12967 VkExternalMemoryHandleTypeFlagBits handleType,
12968 int fd,
12969 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
12970{
12971 auto stream = mImpl->stream();
12972 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012973 auto resources = mImpl->resources();
12974 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012975 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012976 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012977 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012978 int local_fd;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012979 local_device = device;
12980 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012981 local_fd = fd;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012982 countingStream->rewind();
12983 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012984 uint64_t cgen_var_1015;
12985 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1015, 1);
12986 countingStream->write((uint64_t*)&cgen_var_1015, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012987 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12988 countingStream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012989 marshal_VkMemoryFdPropertiesKHR(countingStream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
12990 }
12991 uint32_t packetSize_vkGetMemoryFdPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12992 countingStream->rewind();
12993 uint32_t opcode_vkGetMemoryFdPropertiesKHR = OP_vkGetMemoryFdPropertiesKHR;
12994 stream->write(&opcode_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
12995 stream->write(&packetSize_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012996 uint64_t cgen_var_1016;
12997 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1016, 1);
12998 stream->write((uint64_t*)&cgen_var_1016, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012999 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
13000 stream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013001 marshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
13002 unmarshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
13003 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
13004 stream->read(&vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013005 countingStream->clearPool();
13006 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013007 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013008 return vkGetMemoryFdPropertiesKHR_VkResult_return;
13009}
13010
13011#endif
13012#ifdef VK_KHR_win32_keyed_mutex
13013#endif
13014#ifdef VK_KHR_external_semaphore_capabilities
13015void VkEncoder::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
13016 VkPhysicalDevice physicalDevice,
13017 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
13018 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
13019{
13020 auto stream = mImpl->stream();
13021 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013022 auto resources = mImpl->resources();
13023 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013024 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013025 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013026 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013027 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013028 local_pExternalSemaphoreInfo = nullptr;
13029 if (pExternalSemaphoreInfo)
13030 {
13031 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
13032 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
13033 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013034 countingStream->rewind();
13035 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013036 uint64_t cgen_var_1017;
13037 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1017, 1);
13038 countingStream->write((uint64_t*)&cgen_var_1017, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013039 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013040 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13041 }
13042 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13043 countingStream->rewind();
13044 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
13045 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
13046 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013047 uint64_t cgen_var_1018;
13048 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1018, 1);
13049 stream->write((uint64_t*)&cgen_var_1018, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013050 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013051 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13052 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13053}
13054
13055#endif
13056#ifdef VK_KHR_external_semaphore
13057#endif
13058#ifdef VK_KHR_external_semaphore_win32
13059VkResult VkEncoder::vkImportSemaphoreWin32HandleKHR(
13060 VkDevice device,
13061 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
13062{
13063 auto stream = mImpl->stream();
13064 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013065 auto resources = mImpl->resources();
13066 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013067 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013068 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013069 VkImportSemaphoreWin32HandleInfoKHR* local_pImportSemaphoreWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013070 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013071 local_pImportSemaphoreWin32HandleInfo = nullptr;
13072 if (pImportSemaphoreWin32HandleInfo)
13073 {
13074 local_pImportSemaphoreWin32HandleInfo = (VkImportSemaphoreWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreWin32HandleInfoKHR));
13075 deepcopy_VkImportSemaphoreWin32HandleInfoKHR(pool, pImportSemaphoreWin32HandleInfo, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
13076 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013077 countingStream->rewind();
13078 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013079 uint64_t cgen_var_1019;
13080 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1019, 1);
13081 countingStream->write((uint64_t*)&cgen_var_1019, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013082 marshal_VkImportSemaphoreWin32HandleInfoKHR(countingStream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013083 }
13084 uint32_t packetSize_vkImportSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13085 countingStream->rewind();
13086 uint32_t opcode_vkImportSemaphoreWin32HandleKHR = OP_vkImportSemaphoreWin32HandleKHR;
13087 stream->write(&opcode_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
13088 stream->write(&packetSize_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013089 uint64_t cgen_var_1020;
13090 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1020, 1);
13091 stream->write((uint64_t*)&cgen_var_1020, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013092 marshal_VkImportSemaphoreWin32HandleInfoKHR(stream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013093 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
13094 stream->read(&vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013095 countingStream->clearPool();
13096 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013097 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013098 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
13099}
13100
13101VkResult VkEncoder::vkGetSemaphoreWin32HandleKHR(
13102 VkDevice device,
13103 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
13104 HANDLE* pHandle)
13105{
13106 auto stream = mImpl->stream();
13107 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013108 auto resources = mImpl->resources();
13109 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013110 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013111 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013112 VkSemaphoreGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013113 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013114 local_pGetWin32HandleInfo = nullptr;
13115 if (pGetWin32HandleInfo)
13116 {
13117 local_pGetWin32HandleInfo = (VkSemaphoreGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetWin32HandleInfoKHR));
13118 deepcopy_VkSemaphoreGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
13119 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013120 countingStream->rewind();
13121 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013122 uint64_t cgen_var_1021;
13123 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1021, 1);
13124 countingStream->write((uint64_t*)&cgen_var_1021, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013125 marshal_VkSemaphoreGetWin32HandleInfoKHR(countingStream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013126 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
13127 }
13128 uint32_t packetSize_vkGetSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13129 countingStream->rewind();
13130 uint32_t opcode_vkGetSemaphoreWin32HandleKHR = OP_vkGetSemaphoreWin32HandleKHR;
13131 stream->write(&opcode_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
13132 stream->write(&packetSize_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013133 uint64_t cgen_var_1022;
13134 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1022, 1);
13135 stream->write((uint64_t*)&cgen_var_1022, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013136 marshal_VkSemaphoreGetWin32HandleInfoKHR(stream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013137 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
13138 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
13139 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
13140 stream->read(&vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013141 countingStream->clearPool();
13142 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013143 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013144 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
13145}
13146
13147#endif
13148#ifdef VK_KHR_external_semaphore_fd
13149VkResult VkEncoder::vkImportSemaphoreFdKHR(
13150 VkDevice device,
13151 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
13152{
13153 auto stream = mImpl->stream();
13154 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013155 auto resources = mImpl->resources();
13156 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013157 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013158 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013159 VkImportSemaphoreFdInfoKHR* local_pImportSemaphoreFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013160 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013161 local_pImportSemaphoreFdInfo = nullptr;
13162 if (pImportSemaphoreFdInfo)
13163 {
13164 local_pImportSemaphoreFdInfo = (VkImportSemaphoreFdInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreFdInfoKHR));
13165 deepcopy_VkImportSemaphoreFdInfoKHR(pool, pImportSemaphoreFdInfo, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
13166 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013167 countingStream->rewind();
13168 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013169 uint64_t cgen_var_1023;
13170 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1023, 1);
13171 countingStream->write((uint64_t*)&cgen_var_1023, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013172 marshal_VkImportSemaphoreFdInfoKHR(countingStream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013173 }
13174 uint32_t packetSize_vkImportSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13175 countingStream->rewind();
13176 uint32_t opcode_vkImportSemaphoreFdKHR = OP_vkImportSemaphoreFdKHR;
13177 stream->write(&opcode_vkImportSemaphoreFdKHR, sizeof(uint32_t));
13178 stream->write(&packetSize_vkImportSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013179 uint64_t cgen_var_1024;
13180 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1024, 1);
13181 stream->write((uint64_t*)&cgen_var_1024, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013182 marshal_VkImportSemaphoreFdInfoKHR(stream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013183 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
13184 stream->read(&vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013185 countingStream->clearPool();
13186 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013187 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013188 return vkImportSemaphoreFdKHR_VkResult_return;
13189}
13190
13191VkResult VkEncoder::vkGetSemaphoreFdKHR(
13192 VkDevice device,
13193 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
13194 int* pFd)
13195{
13196 auto stream = mImpl->stream();
13197 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013198 auto resources = mImpl->resources();
13199 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013200 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013201 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013202 VkSemaphoreGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013203 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013204 local_pGetFdInfo = nullptr;
13205 if (pGetFdInfo)
13206 {
13207 local_pGetFdInfo = (VkSemaphoreGetFdInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetFdInfoKHR));
13208 deepcopy_VkSemaphoreGetFdInfoKHR(pool, pGetFdInfo, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
13209 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013210 countingStream->rewind();
13211 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013212 uint64_t cgen_var_1025;
13213 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1025, 1);
13214 countingStream->write((uint64_t*)&cgen_var_1025, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013215 marshal_VkSemaphoreGetFdInfoKHR(countingStream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013216 countingStream->write((int*)pFd, sizeof(int));
13217 }
13218 uint32_t packetSize_vkGetSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13219 countingStream->rewind();
13220 uint32_t opcode_vkGetSemaphoreFdKHR = OP_vkGetSemaphoreFdKHR;
13221 stream->write(&opcode_vkGetSemaphoreFdKHR, sizeof(uint32_t));
13222 stream->write(&packetSize_vkGetSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013223 uint64_t cgen_var_1026;
13224 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1026, 1);
13225 stream->write((uint64_t*)&cgen_var_1026, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013226 marshal_VkSemaphoreGetFdInfoKHR(stream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013227 stream->write((int*)pFd, sizeof(int));
13228 stream->read((int*)pFd, sizeof(int));
13229 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
13230 stream->read(&vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013231 countingStream->clearPool();
13232 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013233 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013234 return vkGetSemaphoreFdKHR_VkResult_return;
13235}
13236
13237#endif
13238#ifdef VK_KHR_push_descriptor
13239void VkEncoder::vkCmdPushDescriptorSetKHR(
13240 VkCommandBuffer commandBuffer,
13241 VkPipelineBindPoint pipelineBindPoint,
13242 VkPipelineLayout layout,
13243 uint32_t set,
13244 uint32_t descriptorWriteCount,
13245 const VkWriteDescriptorSet* pDescriptorWrites)
13246{
13247 auto stream = mImpl->stream();
13248 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013249 auto resources = mImpl->resources();
13250 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013251 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013252 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013253 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013254 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013255 uint32_t local_set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013256 uint32_t local_descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013257 VkWriteDescriptorSet* local_pDescriptorWrites;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013258 local_commandBuffer = commandBuffer;
13259 local_pipelineBindPoint = pipelineBindPoint;
13260 local_layout = layout;
13261 local_set = set;
13262 local_descriptorWriteCount = descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013263 local_pDescriptorWrites = nullptr;
13264 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013265 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013266 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013267 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
13268 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013269 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
13270 }
13271 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013272 countingStream->rewind();
13273 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013274 uint64_t cgen_var_1027;
13275 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1027, 1);
13276 countingStream->write((uint64_t*)&cgen_var_1027, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013277 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013278 uint64_t cgen_var_1028;
13279 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1028, 1);
13280 countingStream->write((uint64_t*)&cgen_var_1028, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013281 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
13282 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
13283 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
13284 {
13285 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013286 }
13287 }
13288 uint32_t packetSize_vkCmdPushDescriptorSetKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13289 countingStream->rewind();
13290 uint32_t opcode_vkCmdPushDescriptorSetKHR = OP_vkCmdPushDescriptorSetKHR;
13291 stream->write(&opcode_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
13292 stream->write(&packetSize_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013293 uint64_t cgen_var_1029;
13294 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1029, 1);
13295 stream->write((uint64_t*)&cgen_var_1029, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013296 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013297 uint64_t cgen_var_1030;
13298 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1030, 1);
13299 stream->write((uint64_t*)&cgen_var_1030, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013300 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
13301 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013302 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
13303 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013304 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013305 }
13306}
13307
13308void VkEncoder::vkCmdPushDescriptorSetWithTemplateKHR(
13309 VkCommandBuffer commandBuffer,
13310 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
13311 VkPipelineLayout layout,
13312 uint32_t set,
13313 const void* pData)
13314{
13315 auto stream = mImpl->stream();
13316 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013317 auto resources = mImpl->resources();
13318 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013319 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013320 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013321 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013322 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013323 uint32_t local_set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013324 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013325 local_commandBuffer = commandBuffer;
13326 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
13327 local_layout = layout;
13328 local_set = set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013329 local_pData = nullptr;
13330 if (pData)
13331 {
13332 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
13333 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013334 countingStream->rewind();
13335 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013336 uint64_t cgen_var_1031;
13337 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1031, 1);
13338 countingStream->write((uint64_t*)&cgen_var_1031, 1 * 8);
13339 uint64_t cgen_var_1032;
13340 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1032, 1);
13341 countingStream->write((uint64_t*)&cgen_var_1032, 1 * 8);
13342 uint64_t cgen_var_1033;
13343 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1033, 1);
13344 countingStream->write((uint64_t*)&cgen_var_1033, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013345 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013346 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013347 uint64_t cgen_var_1034 = (uint64_t)(uintptr_t)local_pData;
13348 countingStream->putBe64(cgen_var_1034);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013349 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013350 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013351 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013352 }
13353 }
13354 uint32_t packetSize_vkCmdPushDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13355 countingStream->rewind();
13356 uint32_t opcode_vkCmdPushDescriptorSetWithTemplateKHR = OP_vkCmdPushDescriptorSetWithTemplateKHR;
13357 stream->write(&opcode_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
13358 stream->write(&packetSize_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013359 uint64_t cgen_var_1035;
13360 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1035, 1);
13361 stream->write((uint64_t*)&cgen_var_1035, 1 * 8);
13362 uint64_t cgen_var_1036;
13363 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1036, 1);
13364 stream->write((uint64_t*)&cgen_var_1036, 1 * 8);
13365 uint64_t cgen_var_1037;
13366 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1037, 1);
13367 stream->write((uint64_t*)&cgen_var_1037, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013368 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013369 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013370 uint64_t cgen_var_1038 = (uint64_t)(uintptr_t)local_pData;
13371 stream->putBe64(cgen_var_1038);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013372 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013373 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013374 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013375 }
13376}
13377
13378#endif
13379#ifdef VK_KHR_16bit_storage
13380#endif
13381#ifdef VK_KHR_incremental_present
13382#endif
13383#ifdef VK_KHR_descriptor_update_template
13384VkResult VkEncoder::vkCreateDescriptorUpdateTemplateKHR(
13385 VkDevice device,
13386 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
13387 const VkAllocationCallbacks* pAllocator,
13388 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
13389{
13390 auto stream = mImpl->stream();
13391 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013392 auto resources = mImpl->resources();
13393 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013394 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013395 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013396 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013397 VkAllocationCallbacks* local_pAllocator;
13398 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013399 local_pCreateInfo = nullptr;
13400 if (pCreateInfo)
13401 {
13402 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
13403 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
13404 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013405 local_pAllocator = nullptr;
13406 if (pAllocator)
13407 {
13408 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13409 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13410 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013411 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013412 countingStream->rewind();
13413 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013414 uint64_t cgen_var_1039;
13415 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1039, 1);
13416 countingStream->write((uint64_t*)&cgen_var_1039, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013417 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013418 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013419 uint64_t cgen_var_1040 = (uint64_t)(uintptr_t)local_pAllocator;
13420 countingStream->putBe64(cgen_var_1040);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013421 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013422 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013423 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013424 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013425 uint64_t cgen_var_1041;
13426 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1041, 1);
13427 countingStream->write((uint64_t*)&cgen_var_1041, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013428 }
13429 uint32_t packetSize_vkCreateDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13430 countingStream->rewind();
13431 uint32_t opcode_vkCreateDescriptorUpdateTemplateKHR = OP_vkCreateDescriptorUpdateTemplateKHR;
13432 stream->write(&opcode_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
13433 stream->write(&packetSize_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013434 uint64_t cgen_var_1042;
13435 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1042, 1);
13436 stream->write((uint64_t*)&cgen_var_1042, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013437 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013438 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013439 uint64_t cgen_var_1043 = (uint64_t)(uintptr_t)local_pAllocator;
13440 stream->putBe64(cgen_var_1043);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013441 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013442 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013443 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013444 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013445 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013446 uint64_t cgen_var_1044;
13447 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1044, 1);
13448 stream->write((uint64_t*)&cgen_var_1044, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013449 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013450 uint64_t cgen_var_1045;
13451 stream->read((uint64_t*)&cgen_var_1045, 8);
13452 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_1045, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013453 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
13454 stream->read(&vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013455 countingStream->clearPool();
13456 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013457 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013458 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
13459}
13460
13461void VkEncoder::vkDestroyDescriptorUpdateTemplateKHR(
13462 VkDevice device,
13463 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
13464 const VkAllocationCallbacks* pAllocator)
13465{
13466 auto stream = mImpl->stream();
13467 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013468 auto resources = mImpl->resources();
13469 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013470 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013471 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013472 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013473 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013474 local_device = device;
13475 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013476 local_pAllocator = nullptr;
13477 if (pAllocator)
13478 {
13479 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13480 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13481 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013482 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013483 countingStream->rewind();
13484 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013485 uint64_t cgen_var_1046;
13486 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1046, 1);
13487 countingStream->write((uint64_t*)&cgen_var_1046, 1 * 8);
13488 uint64_t cgen_var_1047;
13489 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1047, 1);
13490 countingStream->write((uint64_t*)&cgen_var_1047, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013491 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013492 uint64_t cgen_var_1048 = (uint64_t)(uintptr_t)local_pAllocator;
13493 countingStream->putBe64(cgen_var_1048);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013494 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013495 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013496 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013497 }
13498 }
13499 uint32_t packetSize_vkDestroyDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13500 countingStream->rewind();
13501 uint32_t opcode_vkDestroyDescriptorUpdateTemplateKHR = OP_vkDestroyDescriptorUpdateTemplateKHR;
13502 stream->write(&opcode_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
13503 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013504 uint64_t cgen_var_1049;
13505 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1049, 1);
13506 stream->write((uint64_t*)&cgen_var_1049, 1 * 8);
13507 uint64_t cgen_var_1050;
13508 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1050, 1);
13509 stream->write((uint64_t*)&cgen_var_1050, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013510 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013511 uint64_t cgen_var_1051 = (uint64_t)(uintptr_t)local_pAllocator;
13512 stream->putBe64(cgen_var_1051);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013513 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013514 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013515 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013516 }
13517}
13518
13519void VkEncoder::vkUpdateDescriptorSetWithTemplateKHR(
13520 VkDevice device,
13521 VkDescriptorSet descriptorSet,
13522 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
13523 const void* pData)
13524{
13525 auto stream = mImpl->stream();
13526 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013527 auto resources = mImpl->resources();
13528 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013529 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013530 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013531 VkDescriptorSet local_descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013532 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013533 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013534 local_device = device;
13535 local_descriptorSet = descriptorSet;
13536 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013537 local_pData = nullptr;
13538 if (pData)
13539 {
13540 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
13541 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013542 countingStream->rewind();
13543 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013544 uint64_t cgen_var_1052;
13545 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1052, 1);
13546 countingStream->write((uint64_t*)&cgen_var_1052, 1 * 8);
13547 uint64_t cgen_var_1053;
13548 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1053, 1);
13549 countingStream->write((uint64_t*)&cgen_var_1053, 1 * 8);
13550 uint64_t cgen_var_1054;
13551 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1054, 1);
13552 countingStream->write((uint64_t*)&cgen_var_1054, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013553 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013554 uint64_t cgen_var_1055 = (uint64_t)(uintptr_t)local_pData;
13555 countingStream->putBe64(cgen_var_1055);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013556 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013557 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013558 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013559 }
13560 }
13561 uint32_t packetSize_vkUpdateDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13562 countingStream->rewind();
13563 uint32_t opcode_vkUpdateDescriptorSetWithTemplateKHR = OP_vkUpdateDescriptorSetWithTemplateKHR;
13564 stream->write(&opcode_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
13565 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013566 uint64_t cgen_var_1056;
13567 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1056, 1);
13568 stream->write((uint64_t*)&cgen_var_1056, 1 * 8);
13569 uint64_t cgen_var_1057;
13570 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1057, 1);
13571 stream->write((uint64_t*)&cgen_var_1057, 1 * 8);
13572 uint64_t cgen_var_1058;
13573 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1058, 1);
13574 stream->write((uint64_t*)&cgen_var_1058, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013575 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013576 uint64_t cgen_var_1059 = (uint64_t)(uintptr_t)local_pData;
13577 stream->putBe64(cgen_var_1059);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013578 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013579 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013580 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013581 }
13582}
13583
13584#endif
13585#ifdef VK_KHR_create_renderpass2
13586VkResult VkEncoder::vkCreateRenderPass2KHR(
13587 VkDevice device,
13588 const VkRenderPassCreateInfo2KHR* pCreateInfo,
13589 const VkAllocationCallbacks* pAllocator,
13590 VkRenderPass* pRenderPass)
13591{
13592 auto stream = mImpl->stream();
13593 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013594 auto resources = mImpl->resources();
13595 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013596 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013597 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013598 VkRenderPassCreateInfo2KHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013599 VkAllocationCallbacks* local_pAllocator;
13600 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013601 local_pCreateInfo = nullptr;
13602 if (pCreateInfo)
13603 {
13604 local_pCreateInfo = (VkRenderPassCreateInfo2KHR*)pool->alloc(sizeof(const VkRenderPassCreateInfo2KHR));
13605 deepcopy_VkRenderPassCreateInfo2KHR(pool, pCreateInfo, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
13606 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013607 local_pAllocator = nullptr;
13608 if (pAllocator)
13609 {
13610 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13611 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13612 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013613 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013614 countingStream->rewind();
13615 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013616 uint64_t cgen_var_1060;
13617 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1060, 1);
13618 countingStream->write((uint64_t*)&cgen_var_1060, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013619 marshal_VkRenderPassCreateInfo2KHR(countingStream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013620 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013621 uint64_t cgen_var_1061 = (uint64_t)(uintptr_t)local_pAllocator;
13622 countingStream->putBe64(cgen_var_1061);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013623 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013624 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013625 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013626 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013627 uint64_t cgen_var_1062;
13628 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1062, 1);
13629 countingStream->write((uint64_t*)&cgen_var_1062, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013630 }
13631 uint32_t packetSize_vkCreateRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13632 countingStream->rewind();
13633 uint32_t opcode_vkCreateRenderPass2KHR = OP_vkCreateRenderPass2KHR;
13634 stream->write(&opcode_vkCreateRenderPass2KHR, sizeof(uint32_t));
13635 stream->write(&packetSize_vkCreateRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013636 uint64_t cgen_var_1063;
13637 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1063, 1);
13638 stream->write((uint64_t*)&cgen_var_1063, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013639 marshal_VkRenderPassCreateInfo2KHR(stream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013640 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013641 uint64_t cgen_var_1064 = (uint64_t)(uintptr_t)local_pAllocator;
13642 stream->putBe64(cgen_var_1064);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013643 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013644 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013645 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013646 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013647 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013648 uint64_t cgen_var_1065;
13649 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1065, 1);
13650 stream->write((uint64_t*)&cgen_var_1065, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013651 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013652 uint64_t cgen_var_1066;
13653 stream->read((uint64_t*)&cgen_var_1066, 8);
13654 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_1066, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013655 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
13656 stream->read(&vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013657 countingStream->clearPool();
13658 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013659 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013660 return vkCreateRenderPass2KHR_VkResult_return;
13661}
13662
13663void VkEncoder::vkCmdBeginRenderPass2KHR(
13664 VkCommandBuffer commandBuffer,
13665 const VkRenderPassBeginInfo* pRenderPassBegin,
13666 const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
13667{
13668 auto stream = mImpl->stream();
13669 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013670 auto resources = mImpl->resources();
13671 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013672 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013673 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013674 VkRenderPassBeginInfo* local_pRenderPassBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013675 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
13676 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013677 local_pRenderPassBegin = nullptr;
13678 if (pRenderPassBegin)
13679 {
13680 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
13681 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
13682 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013683 local_pSubpassBeginInfo = nullptr;
13684 if (pSubpassBeginInfo)
13685 {
13686 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
13687 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13688 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013689 countingStream->rewind();
13690 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013691 uint64_t cgen_var_1067;
13692 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1067, 1);
13693 countingStream->write((uint64_t*)&cgen_var_1067, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013694 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
13695 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013696 }
13697 uint32_t packetSize_vkCmdBeginRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13698 countingStream->rewind();
13699 uint32_t opcode_vkCmdBeginRenderPass2KHR = OP_vkCmdBeginRenderPass2KHR;
13700 stream->write(&opcode_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
13701 stream->write(&packetSize_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013702 uint64_t cgen_var_1068;
13703 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1068, 1);
13704 stream->write((uint64_t*)&cgen_var_1068, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013705 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
13706 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013707}
13708
13709void VkEncoder::vkCmdNextSubpass2KHR(
13710 VkCommandBuffer commandBuffer,
13711 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
13712 const VkSubpassEndInfoKHR* pSubpassEndInfo)
13713{
13714 auto stream = mImpl->stream();
13715 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013716 auto resources = mImpl->resources();
13717 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013718 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013719 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013720 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013721 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
13722 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013723 local_pSubpassBeginInfo = nullptr;
13724 if (pSubpassBeginInfo)
13725 {
13726 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
13727 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13728 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013729 local_pSubpassEndInfo = nullptr;
13730 if (pSubpassEndInfo)
13731 {
13732 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
13733 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
13734 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013735 countingStream->rewind();
13736 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013737 uint64_t cgen_var_1069;
13738 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1069, 1);
13739 countingStream->write((uint64_t*)&cgen_var_1069, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013740 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13741 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013742 }
13743 uint32_t packetSize_vkCmdNextSubpass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13744 countingStream->rewind();
13745 uint32_t opcode_vkCmdNextSubpass2KHR = OP_vkCmdNextSubpass2KHR;
13746 stream->write(&opcode_vkCmdNextSubpass2KHR, sizeof(uint32_t));
13747 stream->write(&packetSize_vkCmdNextSubpass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013748 uint64_t cgen_var_1070;
13749 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1070, 1);
13750 stream->write((uint64_t*)&cgen_var_1070, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013751 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13752 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013753}
13754
13755void VkEncoder::vkCmdEndRenderPass2KHR(
13756 VkCommandBuffer commandBuffer,
13757 const VkSubpassEndInfoKHR* pSubpassEndInfo)
13758{
13759 auto stream = mImpl->stream();
13760 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013761 auto resources = mImpl->resources();
13762 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013763 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013764 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013765 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013766 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013767 local_pSubpassEndInfo = nullptr;
13768 if (pSubpassEndInfo)
13769 {
13770 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
13771 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
13772 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013773 countingStream->rewind();
13774 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013775 uint64_t cgen_var_1071;
13776 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1071, 1);
13777 countingStream->write((uint64_t*)&cgen_var_1071, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013778 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013779 }
13780 uint32_t packetSize_vkCmdEndRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13781 countingStream->rewind();
13782 uint32_t opcode_vkCmdEndRenderPass2KHR = OP_vkCmdEndRenderPass2KHR;
13783 stream->write(&opcode_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
13784 stream->write(&packetSize_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013785 uint64_t cgen_var_1072;
13786 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1072, 1);
13787 stream->write((uint64_t*)&cgen_var_1072, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013788 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013789}
13790
13791#endif
13792#ifdef VK_KHR_shared_presentable_image
13793VkResult VkEncoder::vkGetSwapchainStatusKHR(
13794 VkDevice device,
13795 VkSwapchainKHR swapchain)
13796{
13797 auto stream = mImpl->stream();
13798 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013799 auto resources = mImpl->resources();
13800 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013801 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013802 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013803 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013804 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013805 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013806 countingStream->rewind();
13807 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013808 uint64_t cgen_var_1073;
13809 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1073, 1);
13810 countingStream->write((uint64_t*)&cgen_var_1073, 1 * 8);
13811 uint64_t cgen_var_1074;
13812 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1074, 1);
13813 countingStream->write((uint64_t*)&cgen_var_1074, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013814 }
13815 uint32_t packetSize_vkGetSwapchainStatusKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13816 countingStream->rewind();
13817 uint32_t opcode_vkGetSwapchainStatusKHR = OP_vkGetSwapchainStatusKHR;
13818 stream->write(&opcode_vkGetSwapchainStatusKHR, sizeof(uint32_t));
13819 stream->write(&packetSize_vkGetSwapchainStatusKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013820 uint64_t cgen_var_1075;
13821 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1075, 1);
13822 stream->write((uint64_t*)&cgen_var_1075, 1 * 8);
13823 uint64_t cgen_var_1076;
13824 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1076, 1);
13825 stream->write((uint64_t*)&cgen_var_1076, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013826 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
13827 stream->read(&vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013828 countingStream->clearPool();
13829 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013830 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013831 return vkGetSwapchainStatusKHR_VkResult_return;
13832}
13833
13834#endif
13835#ifdef VK_KHR_external_fence_capabilities
13836void VkEncoder::vkGetPhysicalDeviceExternalFencePropertiesKHR(
13837 VkPhysicalDevice physicalDevice,
13838 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
13839 VkExternalFenceProperties* pExternalFenceProperties)
13840{
13841 auto stream = mImpl->stream();
13842 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013843 auto resources = mImpl->resources();
13844 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013845 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013846 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013847 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013848 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013849 local_pExternalFenceInfo = nullptr;
13850 if (pExternalFenceInfo)
13851 {
13852 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
13853 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
13854 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013855 countingStream->rewind();
13856 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013857 uint64_t cgen_var_1077;
13858 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1077, 1);
13859 countingStream->write((uint64_t*)&cgen_var_1077, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013860 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013861 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
13862 }
13863 uint32_t packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13864 countingStream->rewind();
13865 uint32_t opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR = OP_vkGetPhysicalDeviceExternalFencePropertiesKHR;
13866 stream->write(&opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
13867 stream->write(&packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013868 uint64_t cgen_var_1078;
13869 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1078, 1);
13870 stream->write((uint64_t*)&cgen_var_1078, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013871 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013872 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
13873 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
13874}
13875
13876#endif
13877#ifdef VK_KHR_external_fence
13878#endif
13879#ifdef VK_KHR_external_fence_win32
13880VkResult VkEncoder::vkImportFenceWin32HandleKHR(
13881 VkDevice device,
13882 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
13883{
13884 auto stream = mImpl->stream();
13885 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013886 auto resources = mImpl->resources();
13887 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013888 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013889 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013890 VkImportFenceWin32HandleInfoKHR* local_pImportFenceWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013891 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013892 local_pImportFenceWin32HandleInfo = nullptr;
13893 if (pImportFenceWin32HandleInfo)
13894 {
13895 local_pImportFenceWin32HandleInfo = (VkImportFenceWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportFenceWin32HandleInfoKHR));
13896 deepcopy_VkImportFenceWin32HandleInfoKHR(pool, pImportFenceWin32HandleInfo, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
13897 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013898 countingStream->rewind();
13899 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013900 uint64_t cgen_var_1079;
13901 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1079, 1);
13902 countingStream->write((uint64_t*)&cgen_var_1079, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013903 marshal_VkImportFenceWin32HandleInfoKHR(countingStream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013904 }
13905 uint32_t packetSize_vkImportFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13906 countingStream->rewind();
13907 uint32_t opcode_vkImportFenceWin32HandleKHR = OP_vkImportFenceWin32HandleKHR;
13908 stream->write(&opcode_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
13909 stream->write(&packetSize_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013910 uint64_t cgen_var_1080;
13911 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1080, 1);
13912 stream->write((uint64_t*)&cgen_var_1080, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013913 marshal_VkImportFenceWin32HandleInfoKHR(stream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013914 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
13915 stream->read(&vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013916 countingStream->clearPool();
13917 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013918 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013919 return vkImportFenceWin32HandleKHR_VkResult_return;
13920}
13921
13922VkResult VkEncoder::vkGetFenceWin32HandleKHR(
13923 VkDevice device,
13924 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
13925 HANDLE* pHandle)
13926{
13927 auto stream = mImpl->stream();
13928 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013929 auto resources = mImpl->resources();
13930 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013931 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013932 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013933 VkFenceGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013934 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013935 local_pGetWin32HandleInfo = nullptr;
13936 if (pGetWin32HandleInfo)
13937 {
13938 local_pGetWin32HandleInfo = (VkFenceGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkFenceGetWin32HandleInfoKHR));
13939 deepcopy_VkFenceGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
13940 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013941 countingStream->rewind();
13942 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013943 uint64_t cgen_var_1081;
13944 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1081, 1);
13945 countingStream->write((uint64_t*)&cgen_var_1081, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013946 marshal_VkFenceGetWin32HandleInfoKHR(countingStream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013947 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
13948 }
13949 uint32_t packetSize_vkGetFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13950 countingStream->rewind();
13951 uint32_t opcode_vkGetFenceWin32HandleKHR = OP_vkGetFenceWin32HandleKHR;
13952 stream->write(&opcode_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
13953 stream->write(&packetSize_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013954 uint64_t cgen_var_1082;
13955 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1082, 1);
13956 stream->write((uint64_t*)&cgen_var_1082, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013957 marshal_VkFenceGetWin32HandleInfoKHR(stream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013958 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
13959 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
13960 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
13961 stream->read(&vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013962 countingStream->clearPool();
13963 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013964 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013965 return vkGetFenceWin32HandleKHR_VkResult_return;
13966}
13967
13968#endif
13969#ifdef VK_KHR_external_fence_fd
13970VkResult VkEncoder::vkImportFenceFdKHR(
13971 VkDevice device,
13972 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
13973{
13974 auto stream = mImpl->stream();
13975 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013976 auto resources = mImpl->resources();
13977 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013978 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013979 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013980 VkImportFenceFdInfoKHR* local_pImportFenceFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013981 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013982 local_pImportFenceFdInfo = nullptr;
13983 if (pImportFenceFdInfo)
13984 {
13985 local_pImportFenceFdInfo = (VkImportFenceFdInfoKHR*)pool->alloc(sizeof(const VkImportFenceFdInfoKHR));
13986 deepcopy_VkImportFenceFdInfoKHR(pool, pImportFenceFdInfo, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
13987 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013988 countingStream->rewind();
13989 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013990 uint64_t cgen_var_1083;
13991 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1083, 1);
13992 countingStream->write((uint64_t*)&cgen_var_1083, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013993 marshal_VkImportFenceFdInfoKHR(countingStream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013994 }
13995 uint32_t packetSize_vkImportFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13996 countingStream->rewind();
13997 uint32_t opcode_vkImportFenceFdKHR = OP_vkImportFenceFdKHR;
13998 stream->write(&opcode_vkImportFenceFdKHR, sizeof(uint32_t));
13999 stream->write(&packetSize_vkImportFenceFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014000 uint64_t cgen_var_1084;
14001 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1084, 1);
14002 stream->write((uint64_t*)&cgen_var_1084, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014003 marshal_VkImportFenceFdInfoKHR(stream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014004 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
14005 stream->read(&vkImportFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014006 countingStream->clearPool();
14007 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014008 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014009 return vkImportFenceFdKHR_VkResult_return;
14010}
14011
14012VkResult VkEncoder::vkGetFenceFdKHR(
14013 VkDevice device,
14014 const VkFenceGetFdInfoKHR* pGetFdInfo,
14015 int* pFd)
14016{
14017 auto stream = mImpl->stream();
14018 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014019 auto resources = mImpl->resources();
14020 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014021 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014022 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014023 VkFenceGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014024 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014025 local_pGetFdInfo = nullptr;
14026 if (pGetFdInfo)
14027 {
14028 local_pGetFdInfo = (VkFenceGetFdInfoKHR*)pool->alloc(sizeof(const VkFenceGetFdInfoKHR));
14029 deepcopy_VkFenceGetFdInfoKHR(pool, pGetFdInfo, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
14030 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014031 countingStream->rewind();
14032 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014033 uint64_t cgen_var_1085;
14034 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1085, 1);
14035 countingStream->write((uint64_t*)&cgen_var_1085, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014036 marshal_VkFenceGetFdInfoKHR(countingStream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014037 countingStream->write((int*)pFd, sizeof(int));
14038 }
14039 uint32_t packetSize_vkGetFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14040 countingStream->rewind();
14041 uint32_t opcode_vkGetFenceFdKHR = OP_vkGetFenceFdKHR;
14042 stream->write(&opcode_vkGetFenceFdKHR, sizeof(uint32_t));
14043 stream->write(&packetSize_vkGetFenceFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014044 uint64_t cgen_var_1086;
14045 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1086, 1);
14046 stream->write((uint64_t*)&cgen_var_1086, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014047 marshal_VkFenceGetFdInfoKHR(stream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014048 stream->write((int*)pFd, sizeof(int));
14049 stream->read((int*)pFd, sizeof(int));
14050 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
14051 stream->read(&vkGetFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014052 countingStream->clearPool();
14053 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014054 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014055 return vkGetFenceFdKHR_VkResult_return;
14056}
14057
14058#endif
14059#ifdef VK_KHR_maintenance2
14060#endif
14061#ifdef VK_KHR_get_surface_capabilities2
14062VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2KHR(
14063 VkPhysicalDevice physicalDevice,
14064 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
14065 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
14066{
14067 auto stream = mImpl->stream();
14068 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014069 auto resources = mImpl->resources();
14070 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014071 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014072 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014073 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014074 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014075 local_pSurfaceInfo = nullptr;
14076 if (pSurfaceInfo)
14077 {
14078 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
14079 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
14080 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014081 countingStream->rewind();
14082 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014083 uint64_t cgen_var_1087;
14084 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1087, 1);
14085 countingStream->write((uint64_t*)&cgen_var_1087, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014086 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014087 marshal_VkSurfaceCapabilities2KHR(countingStream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
14088 }
14089 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14090 countingStream->rewind();
14091 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR = OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR;
14092 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
14093 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014094 uint64_t cgen_var_1088;
14095 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1088, 1);
14096 stream->write((uint64_t*)&cgen_var_1088, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014097 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014098 marshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
14099 unmarshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
14100 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
14101 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014102 countingStream->clearPool();
14103 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014104 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014105 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
14106}
14107
14108VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormats2KHR(
14109 VkPhysicalDevice physicalDevice,
14110 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
14111 uint32_t* pSurfaceFormatCount,
14112 VkSurfaceFormat2KHR* pSurfaceFormats)
14113{
14114 auto stream = mImpl->stream();
14115 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014116 auto resources = mImpl->resources();
14117 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014118 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014119 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014120 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014121 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014122 local_pSurfaceInfo = nullptr;
14123 if (pSurfaceInfo)
14124 {
14125 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
14126 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
14127 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014128 countingStream->rewind();
14129 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014130 uint64_t cgen_var_1089;
14131 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1089, 1);
14132 countingStream->write((uint64_t*)&cgen_var_1089, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014133 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014134 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014135 uint64_t cgen_var_1090 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
14136 countingStream->putBe64(cgen_var_1090);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014137 if (pSurfaceFormatCount)
14138 {
14139 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
14140 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014141 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014142 uint64_t cgen_var_1091 = (uint64_t)(uintptr_t)pSurfaceFormats;
14143 countingStream->putBe64(cgen_var_1091);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014144 if (pSurfaceFormats)
14145 {
14146 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
14147 {
14148 marshal_VkSurfaceFormat2KHR(countingStream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
14149 }
14150 }
14151 }
14152 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14153 countingStream->rewind();
14154 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormats2KHR = OP_vkGetPhysicalDeviceSurfaceFormats2KHR;
14155 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
14156 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014157 uint64_t cgen_var_1092;
14158 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1092, 1);
14159 stream->write((uint64_t*)&cgen_var_1092, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014160 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014161 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014162 uint64_t cgen_var_1093 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
14163 stream->putBe64(cgen_var_1093);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014164 if (pSurfaceFormatCount)
14165 {
14166 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
14167 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014168 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014169 uint64_t cgen_var_1094 = (uint64_t)(uintptr_t)pSurfaceFormats;
14170 stream->putBe64(cgen_var_1094);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014171 if (pSurfaceFormats)
14172 {
14173 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
14174 {
14175 marshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
14176 }
14177 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014178 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014179 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014180 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014181 if (pSurfaceFormatCount)
14182 {
14183 if (!(check_pSurfaceFormatCount))
14184 {
14185 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
14186 }
14187 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
14188 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014189 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014190 VkSurfaceFormat2KHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014191 check_pSurfaceFormats = (VkSurfaceFormat2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014192 if (pSurfaceFormats)
14193 {
14194 if (!(check_pSurfaceFormats))
14195 {
14196 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
14197 }
14198 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
14199 {
14200 unmarshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
14201 }
14202 }
14203 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
14204 stream->read(&vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014205 countingStream->clearPool();
14206 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014207 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014208 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
14209}
14210
14211#endif
14212#ifdef VK_KHR_variable_pointers
14213#endif
14214#ifdef VK_KHR_get_display_properties2
14215VkResult VkEncoder::vkGetPhysicalDeviceDisplayProperties2KHR(
14216 VkPhysicalDevice physicalDevice,
14217 uint32_t* pPropertyCount,
14218 VkDisplayProperties2KHR* pProperties)
14219{
14220 auto stream = mImpl->stream();
14221 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014222 auto resources = mImpl->resources();
14223 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014224 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014225 VkPhysicalDevice local_physicalDevice;
14226 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014227 countingStream->rewind();
14228 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014229 uint64_t cgen_var_1097;
14230 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1097, 1);
14231 countingStream->write((uint64_t*)&cgen_var_1097, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014232 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014233 uint64_t cgen_var_1098 = (uint64_t)(uintptr_t)pPropertyCount;
14234 countingStream->putBe64(cgen_var_1098);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014235 if (pPropertyCount)
14236 {
14237 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14238 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014239 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014240 uint64_t cgen_var_1099 = (uint64_t)(uintptr_t)pProperties;
14241 countingStream->putBe64(cgen_var_1099);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014242 if (pProperties)
14243 {
14244 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14245 {
14246 marshal_VkDisplayProperties2KHR(countingStream, (VkDisplayProperties2KHR*)(pProperties + i));
14247 }
14248 }
14249 }
14250 uint32_t packetSize_vkGetPhysicalDeviceDisplayProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14251 countingStream->rewind();
14252 uint32_t opcode_vkGetPhysicalDeviceDisplayProperties2KHR = OP_vkGetPhysicalDeviceDisplayProperties2KHR;
14253 stream->write(&opcode_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
14254 stream->write(&packetSize_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014255 uint64_t cgen_var_1100;
14256 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1100, 1);
14257 stream->write((uint64_t*)&cgen_var_1100, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014258 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014259 uint64_t cgen_var_1101 = (uint64_t)(uintptr_t)pPropertyCount;
14260 stream->putBe64(cgen_var_1101);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014261 if (pPropertyCount)
14262 {
14263 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14264 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014265 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014266 uint64_t cgen_var_1102 = (uint64_t)(uintptr_t)pProperties;
14267 stream->putBe64(cgen_var_1102);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014268 if (pProperties)
14269 {
14270 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14271 {
14272 marshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
14273 }
14274 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014275 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014276 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014277 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014278 if (pPropertyCount)
14279 {
14280 if (!(check_pPropertyCount))
14281 {
14282 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
14283 }
14284 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
14285 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014286 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014287 VkDisplayProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014288 check_pProperties = (VkDisplayProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014289 if (pProperties)
14290 {
14291 if (!(check_pProperties))
14292 {
14293 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
14294 }
14295 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14296 {
14297 unmarshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
14298 }
14299 }
14300 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
14301 stream->read(&vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014302 countingStream->clearPool();
14303 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014304 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014305 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
14306}
14307
14308VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
14309 VkPhysicalDevice physicalDevice,
14310 uint32_t* pPropertyCount,
14311 VkDisplayPlaneProperties2KHR* pProperties)
14312{
14313 auto stream = mImpl->stream();
14314 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014315 auto resources = mImpl->resources();
14316 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014317 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014318 VkPhysicalDevice local_physicalDevice;
14319 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014320 countingStream->rewind();
14321 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014322 uint64_t cgen_var_1105;
14323 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1105, 1);
14324 countingStream->write((uint64_t*)&cgen_var_1105, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014325 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014326 uint64_t cgen_var_1106 = (uint64_t)(uintptr_t)pPropertyCount;
14327 countingStream->putBe64(cgen_var_1106);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014328 if (pPropertyCount)
14329 {
14330 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14331 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014332 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014333 uint64_t cgen_var_1107 = (uint64_t)(uintptr_t)pProperties;
14334 countingStream->putBe64(cgen_var_1107);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014335 if (pProperties)
14336 {
14337 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14338 {
14339 marshal_VkDisplayPlaneProperties2KHR(countingStream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
14340 }
14341 }
14342 }
14343 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14344 countingStream->rewind();
14345 uint32_t opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
14346 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
14347 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014348 uint64_t cgen_var_1108;
14349 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1108, 1);
14350 stream->write((uint64_t*)&cgen_var_1108, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014351 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014352 uint64_t cgen_var_1109 = (uint64_t)(uintptr_t)pPropertyCount;
14353 stream->putBe64(cgen_var_1109);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014354 if (pPropertyCount)
14355 {
14356 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14357 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014358 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014359 uint64_t cgen_var_1110 = (uint64_t)(uintptr_t)pProperties;
14360 stream->putBe64(cgen_var_1110);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014361 if (pProperties)
14362 {
14363 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14364 {
14365 marshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
14366 }
14367 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014368 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014369 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014370 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014371 if (pPropertyCount)
14372 {
14373 if (!(check_pPropertyCount))
14374 {
14375 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
14376 }
14377 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
14378 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014379 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014380 VkDisplayPlaneProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014381 check_pProperties = (VkDisplayPlaneProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014382 if (pProperties)
14383 {
14384 if (!(check_pProperties))
14385 {
14386 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
14387 }
14388 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14389 {
14390 unmarshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
14391 }
14392 }
14393 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
14394 stream->read(&vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014395 countingStream->clearPool();
14396 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014397 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014398 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
14399}
14400
14401VkResult VkEncoder::vkGetDisplayModeProperties2KHR(
14402 VkPhysicalDevice physicalDevice,
14403 VkDisplayKHR display,
14404 uint32_t* pPropertyCount,
14405 VkDisplayModeProperties2KHR* pProperties)
14406{
14407 auto stream = mImpl->stream();
14408 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014409 auto resources = mImpl->resources();
14410 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014411 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014412 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014413 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014414 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014415 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014416 countingStream->rewind();
14417 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014418 uint64_t cgen_var_1113;
14419 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1113, 1);
14420 countingStream->write((uint64_t*)&cgen_var_1113, 1 * 8);
14421 uint64_t cgen_var_1114;
14422 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1114, 1);
14423 countingStream->write((uint64_t*)&cgen_var_1114, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014424 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014425 uint64_t cgen_var_1115 = (uint64_t)(uintptr_t)pPropertyCount;
14426 countingStream->putBe64(cgen_var_1115);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014427 if (pPropertyCount)
14428 {
14429 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14430 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014431 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014432 uint64_t cgen_var_1116 = (uint64_t)(uintptr_t)pProperties;
14433 countingStream->putBe64(cgen_var_1116);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014434 if (pProperties)
14435 {
14436 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14437 {
14438 marshal_VkDisplayModeProperties2KHR(countingStream, (VkDisplayModeProperties2KHR*)(pProperties + i));
14439 }
14440 }
14441 }
14442 uint32_t packetSize_vkGetDisplayModeProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14443 countingStream->rewind();
14444 uint32_t opcode_vkGetDisplayModeProperties2KHR = OP_vkGetDisplayModeProperties2KHR;
14445 stream->write(&opcode_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
14446 stream->write(&packetSize_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014447 uint64_t cgen_var_1117;
14448 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1117, 1);
14449 stream->write((uint64_t*)&cgen_var_1117, 1 * 8);
14450 uint64_t cgen_var_1118;
14451 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1118, 1);
14452 stream->write((uint64_t*)&cgen_var_1118, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014453 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014454 uint64_t cgen_var_1119 = (uint64_t)(uintptr_t)pPropertyCount;
14455 stream->putBe64(cgen_var_1119);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014456 if (pPropertyCount)
14457 {
14458 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14459 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014460 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014461 uint64_t cgen_var_1120 = (uint64_t)(uintptr_t)pProperties;
14462 stream->putBe64(cgen_var_1120);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014463 if (pProperties)
14464 {
14465 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14466 {
14467 marshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
14468 }
14469 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014470 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014471 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014472 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014473 if (pPropertyCount)
14474 {
14475 if (!(check_pPropertyCount))
14476 {
14477 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
14478 }
14479 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
14480 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014481 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014482 VkDisplayModeProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014483 check_pProperties = (VkDisplayModeProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014484 if (pProperties)
14485 {
14486 if (!(check_pProperties))
14487 {
14488 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
14489 }
14490 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14491 {
14492 unmarshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
14493 }
14494 }
14495 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
14496 stream->read(&vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014497 countingStream->clearPool();
14498 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014499 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014500 return vkGetDisplayModeProperties2KHR_VkResult_return;
14501}
14502
14503VkResult VkEncoder::vkGetDisplayPlaneCapabilities2KHR(
14504 VkPhysicalDevice physicalDevice,
14505 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
14506 VkDisplayPlaneCapabilities2KHR* pCapabilities)
14507{
14508 auto stream = mImpl->stream();
14509 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014510 auto resources = mImpl->resources();
14511 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014512 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014513 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014514 VkDisplayPlaneInfo2KHR* local_pDisplayPlaneInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014515 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014516 local_pDisplayPlaneInfo = nullptr;
14517 if (pDisplayPlaneInfo)
14518 {
14519 local_pDisplayPlaneInfo = (VkDisplayPlaneInfo2KHR*)pool->alloc(sizeof(const VkDisplayPlaneInfo2KHR));
14520 deepcopy_VkDisplayPlaneInfo2KHR(pool, pDisplayPlaneInfo, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
14521 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014522 countingStream->rewind();
14523 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014524 uint64_t cgen_var_1123;
14525 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1123, 1);
14526 countingStream->write((uint64_t*)&cgen_var_1123, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014527 marshal_VkDisplayPlaneInfo2KHR(countingStream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014528 marshal_VkDisplayPlaneCapabilities2KHR(countingStream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
14529 }
14530 uint32_t packetSize_vkGetDisplayPlaneCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14531 countingStream->rewind();
14532 uint32_t opcode_vkGetDisplayPlaneCapabilities2KHR = OP_vkGetDisplayPlaneCapabilities2KHR;
14533 stream->write(&opcode_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
14534 stream->write(&packetSize_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014535 uint64_t cgen_var_1124;
14536 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1124, 1);
14537 stream->write((uint64_t*)&cgen_var_1124, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014538 marshal_VkDisplayPlaneInfo2KHR(stream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014539 marshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
14540 unmarshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
14541 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
14542 stream->read(&vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014543 countingStream->clearPool();
14544 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014545 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014546 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
14547}
14548
14549#endif
14550#ifdef VK_KHR_dedicated_allocation
14551#endif
14552#ifdef VK_KHR_storage_buffer_storage_class
14553#endif
14554#ifdef VK_KHR_relaxed_block_layout
14555#endif
14556#ifdef VK_KHR_get_memory_requirements2
14557void VkEncoder::vkGetImageMemoryRequirements2KHR(
14558 VkDevice device,
14559 const VkImageMemoryRequirementsInfo2* pInfo,
14560 VkMemoryRequirements2* pMemoryRequirements)
14561{
14562 auto stream = mImpl->stream();
14563 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014564 auto resources = mImpl->resources();
14565 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014566 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014567 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014568 VkImageMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014569 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014570 local_pInfo = nullptr;
14571 if (pInfo)
14572 {
14573 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
14574 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
14575 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014576 countingStream->rewind();
14577 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014578 uint64_t cgen_var_1125;
14579 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1125, 1);
14580 countingStream->write((uint64_t*)&cgen_var_1125, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014581 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014582 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
14583 }
14584 uint32_t packetSize_vkGetImageMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14585 countingStream->rewind();
14586 uint32_t opcode_vkGetImageMemoryRequirements2KHR = OP_vkGetImageMemoryRequirements2KHR;
14587 stream->write(&opcode_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
14588 stream->write(&packetSize_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014589 uint64_t cgen_var_1126;
14590 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1126, 1);
14591 stream->write((uint64_t*)&cgen_var_1126, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014592 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014593 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14594 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14595}
14596
14597void VkEncoder::vkGetBufferMemoryRequirements2KHR(
14598 VkDevice device,
14599 const VkBufferMemoryRequirementsInfo2* pInfo,
14600 VkMemoryRequirements2* pMemoryRequirements)
14601{
14602 auto stream = mImpl->stream();
14603 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014604 auto resources = mImpl->resources();
14605 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014606 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014607 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014608 VkBufferMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014609 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014610 local_pInfo = nullptr;
14611 if (pInfo)
14612 {
14613 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
14614 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
14615 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014616 countingStream->rewind();
14617 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014618 uint64_t cgen_var_1127;
14619 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1127, 1);
14620 countingStream->write((uint64_t*)&cgen_var_1127, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014621 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014622 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
14623 }
14624 uint32_t packetSize_vkGetBufferMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14625 countingStream->rewind();
14626 uint32_t opcode_vkGetBufferMemoryRequirements2KHR = OP_vkGetBufferMemoryRequirements2KHR;
14627 stream->write(&opcode_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
14628 stream->write(&packetSize_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014629 uint64_t cgen_var_1128;
14630 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1128, 1);
14631 stream->write((uint64_t*)&cgen_var_1128, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014632 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014633 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14634 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14635}
14636
14637void VkEncoder::vkGetImageSparseMemoryRequirements2KHR(
14638 VkDevice device,
14639 const VkImageSparseMemoryRequirementsInfo2* pInfo,
14640 uint32_t* pSparseMemoryRequirementCount,
14641 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
14642{
14643 auto stream = mImpl->stream();
14644 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014645 auto resources = mImpl->resources();
14646 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014647 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014648 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014649 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014650 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014651 local_pInfo = nullptr;
14652 if (pInfo)
14653 {
14654 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
14655 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
14656 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014657 countingStream->rewind();
14658 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014659 uint64_t cgen_var_1129;
14660 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1129, 1);
14661 countingStream->write((uint64_t*)&cgen_var_1129, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014662 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014663 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014664 uint64_t cgen_var_1130 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
14665 countingStream->putBe64(cgen_var_1130);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014666 if (pSparseMemoryRequirementCount)
14667 {
14668 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
14669 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014670 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014671 uint64_t cgen_var_1131 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
14672 countingStream->putBe64(cgen_var_1131);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014673 if (pSparseMemoryRequirements)
14674 {
14675 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
14676 {
14677 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
14678 }
14679 }
14680 }
14681 uint32_t packetSize_vkGetImageSparseMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14682 countingStream->rewind();
14683 uint32_t opcode_vkGetImageSparseMemoryRequirements2KHR = OP_vkGetImageSparseMemoryRequirements2KHR;
14684 stream->write(&opcode_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
14685 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014686 uint64_t cgen_var_1132;
14687 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1132, 1);
14688 stream->write((uint64_t*)&cgen_var_1132, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014689 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014690 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014691 uint64_t cgen_var_1133 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
14692 stream->putBe64(cgen_var_1133);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014693 if (pSparseMemoryRequirementCount)
14694 {
14695 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
14696 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014697 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014698 uint64_t cgen_var_1134 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
14699 stream->putBe64(cgen_var_1134);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014700 if (pSparseMemoryRequirements)
14701 {
14702 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
14703 {
14704 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
14705 }
14706 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014707 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014708 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014709 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014710 if (pSparseMemoryRequirementCount)
14711 {
14712 if (!(check_pSparseMemoryRequirementCount))
14713 {
14714 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
14715 }
14716 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
14717 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014718 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014719 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014720 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014721 if (pSparseMemoryRequirements)
14722 {
14723 if (!(check_pSparseMemoryRequirements))
14724 {
14725 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
14726 }
14727 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
14728 {
14729 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
14730 }
14731 }
14732}
14733
14734#endif
14735#ifdef VK_KHR_image_format_list
14736#endif
14737#ifdef VK_KHR_sampler_ycbcr_conversion
14738VkResult VkEncoder::vkCreateSamplerYcbcrConversionKHR(
14739 VkDevice device,
14740 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
14741 const VkAllocationCallbacks* pAllocator,
14742 VkSamplerYcbcrConversion* pYcbcrConversion)
14743{
14744 auto stream = mImpl->stream();
14745 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014746 auto resources = mImpl->resources();
14747 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014748 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014749 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014750 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014751 VkAllocationCallbacks* local_pAllocator;
14752 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014753 local_pCreateInfo = nullptr;
14754 if (pCreateInfo)
14755 {
14756 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
14757 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
14758 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014759 local_pAllocator = nullptr;
14760 if (pAllocator)
14761 {
14762 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14763 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14764 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014765 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014766 countingStream->rewind();
14767 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014768 uint64_t cgen_var_1137;
14769 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1137, 1);
14770 countingStream->write((uint64_t*)&cgen_var_1137, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014771 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014772 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014773 uint64_t cgen_var_1138 = (uint64_t)(uintptr_t)local_pAllocator;
14774 countingStream->putBe64(cgen_var_1138);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014775 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014776 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014777 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014778 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014779 uint64_t cgen_var_1139;
14780 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1139, 1);
14781 countingStream->write((uint64_t*)&cgen_var_1139, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014782 }
14783 uint32_t packetSize_vkCreateSamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14784 countingStream->rewind();
14785 uint32_t opcode_vkCreateSamplerYcbcrConversionKHR = OP_vkCreateSamplerYcbcrConversionKHR;
14786 stream->write(&opcode_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
14787 stream->write(&packetSize_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014788 uint64_t cgen_var_1140;
14789 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1140, 1);
14790 stream->write((uint64_t*)&cgen_var_1140, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014791 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014792 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014793 uint64_t cgen_var_1141 = (uint64_t)(uintptr_t)local_pAllocator;
14794 stream->putBe64(cgen_var_1141);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014795 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014796 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014797 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014798 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080014799 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014800 uint64_t cgen_var_1142;
14801 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1142, 1);
14802 stream->write((uint64_t*)&cgen_var_1142, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080014803 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014804 uint64_t cgen_var_1143;
14805 stream->read((uint64_t*)&cgen_var_1143, 8);
14806 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_1143, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014807 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
14808 stream->read(&vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014809 countingStream->clearPool();
14810 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014811 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014812 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
14813}
14814
14815void VkEncoder::vkDestroySamplerYcbcrConversionKHR(
14816 VkDevice device,
14817 VkSamplerYcbcrConversion ycbcrConversion,
14818 const VkAllocationCallbacks* pAllocator)
14819{
14820 auto stream = mImpl->stream();
14821 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014822 auto resources = mImpl->resources();
14823 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014824 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014825 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014826 VkSamplerYcbcrConversion local_ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014827 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014828 local_device = device;
14829 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014830 local_pAllocator = nullptr;
14831 if (pAllocator)
14832 {
14833 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14834 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14835 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014836 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014837 countingStream->rewind();
14838 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014839 uint64_t cgen_var_1144;
14840 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1144, 1);
14841 countingStream->write((uint64_t*)&cgen_var_1144, 1 * 8);
14842 uint64_t cgen_var_1145;
14843 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1145, 1);
14844 countingStream->write((uint64_t*)&cgen_var_1145, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014845 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014846 uint64_t cgen_var_1146 = (uint64_t)(uintptr_t)local_pAllocator;
14847 countingStream->putBe64(cgen_var_1146);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014848 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014849 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014850 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014851 }
14852 }
14853 uint32_t packetSize_vkDestroySamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14854 countingStream->rewind();
14855 uint32_t opcode_vkDestroySamplerYcbcrConversionKHR = OP_vkDestroySamplerYcbcrConversionKHR;
14856 stream->write(&opcode_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
14857 stream->write(&packetSize_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014858 uint64_t cgen_var_1147;
14859 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1147, 1);
14860 stream->write((uint64_t*)&cgen_var_1147, 1 * 8);
14861 uint64_t cgen_var_1148;
14862 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1148, 1);
14863 stream->write((uint64_t*)&cgen_var_1148, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014864 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014865 uint64_t cgen_var_1149 = (uint64_t)(uintptr_t)local_pAllocator;
14866 stream->putBe64(cgen_var_1149);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014867 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014868 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014869 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014870 }
14871}
14872
14873#endif
14874#ifdef VK_KHR_bind_memory2
14875VkResult VkEncoder::vkBindBufferMemory2KHR(
14876 VkDevice device,
14877 uint32_t bindInfoCount,
14878 const VkBindBufferMemoryInfo* pBindInfos)
14879{
14880 auto stream = mImpl->stream();
14881 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014882 auto resources = mImpl->resources();
14883 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014884 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014885 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014886 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014887 VkBindBufferMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014888 local_device = device;
14889 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014890 local_pBindInfos = nullptr;
14891 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014892 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014893 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014894 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14895 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014896 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
14897 }
14898 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014899 countingStream->rewind();
14900 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014901 uint64_t cgen_var_1150;
14902 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1150, 1);
14903 countingStream->write((uint64_t*)&cgen_var_1150, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014904 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
14905 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14906 {
14907 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014908 }
14909 }
14910 uint32_t packetSize_vkBindBufferMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14911 countingStream->rewind();
14912 uint32_t opcode_vkBindBufferMemory2KHR = OP_vkBindBufferMemory2KHR;
14913 stream->write(&opcode_vkBindBufferMemory2KHR, sizeof(uint32_t));
14914 stream->write(&packetSize_vkBindBufferMemory2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014915 uint64_t cgen_var_1151;
14916 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1151, 1);
14917 stream->write((uint64_t*)&cgen_var_1151, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014918 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014919 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14920 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014921 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014922 }
14923 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
14924 stream->read(&vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014925 countingStream->clearPool();
14926 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014927 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014928 return vkBindBufferMemory2KHR_VkResult_return;
14929}
14930
14931VkResult VkEncoder::vkBindImageMemory2KHR(
14932 VkDevice device,
14933 uint32_t bindInfoCount,
14934 const VkBindImageMemoryInfo* pBindInfos)
14935{
14936 auto stream = mImpl->stream();
14937 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014938 auto resources = mImpl->resources();
14939 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014940 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014941 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014942 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014943 VkBindImageMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014944 local_device = device;
14945 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014946 local_pBindInfos = nullptr;
14947 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014948 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014949 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014950 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14951 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014952 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
14953 }
14954 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014955 countingStream->rewind();
14956 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014957 uint64_t cgen_var_1152;
14958 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1152, 1);
14959 countingStream->write((uint64_t*)&cgen_var_1152, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014960 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
14961 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14962 {
14963 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014964 }
14965 }
14966 uint32_t packetSize_vkBindImageMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14967 countingStream->rewind();
14968 uint32_t opcode_vkBindImageMemory2KHR = OP_vkBindImageMemory2KHR;
14969 stream->write(&opcode_vkBindImageMemory2KHR, sizeof(uint32_t));
14970 stream->write(&packetSize_vkBindImageMemory2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014971 uint64_t cgen_var_1153;
14972 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1153, 1);
14973 stream->write((uint64_t*)&cgen_var_1153, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014974 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014975 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14976 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014977 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014978 }
14979 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
14980 stream->read(&vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014981 countingStream->clearPool();
14982 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014983 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014984 return vkBindImageMemory2KHR_VkResult_return;
14985}
14986
14987#endif
14988#ifdef VK_KHR_maintenance3
14989void VkEncoder::vkGetDescriptorSetLayoutSupportKHR(
14990 VkDevice device,
14991 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
14992 VkDescriptorSetLayoutSupport* pSupport)
14993{
14994 auto stream = mImpl->stream();
14995 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014996 auto resources = mImpl->resources();
14997 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014998 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014999 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015000 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015001 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015002 local_pCreateInfo = nullptr;
15003 if (pCreateInfo)
15004 {
15005 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
15006 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
15007 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015008 countingStream->rewind();
15009 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015010 uint64_t cgen_var_1154;
15011 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1154, 1);
15012 countingStream->write((uint64_t*)&cgen_var_1154, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015013 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015014 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
15015 }
15016 uint32_t packetSize_vkGetDescriptorSetLayoutSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15017 countingStream->rewind();
15018 uint32_t opcode_vkGetDescriptorSetLayoutSupportKHR = OP_vkGetDescriptorSetLayoutSupportKHR;
15019 stream->write(&opcode_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
15020 stream->write(&packetSize_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015021 uint64_t cgen_var_1155;
15022 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1155, 1);
15023 stream->write((uint64_t*)&cgen_var_1155, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015024 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015025 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
15026 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
15027}
15028
15029#endif
15030#ifdef VK_KHR_draw_indirect_count
15031void VkEncoder::vkCmdDrawIndirectCountKHR(
15032 VkCommandBuffer commandBuffer,
15033 VkBuffer buffer,
15034 VkDeviceSize offset,
15035 VkBuffer countBuffer,
15036 VkDeviceSize countBufferOffset,
15037 uint32_t maxDrawCount,
15038 uint32_t stride)
15039{
15040 auto stream = mImpl->stream();
15041 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015042 auto resources = mImpl->resources();
15043 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015044 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015045 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015046 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015047 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015048 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015049 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015050 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015051 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015052 local_commandBuffer = commandBuffer;
15053 local_buffer = buffer;
15054 local_offset = offset;
15055 local_countBuffer = countBuffer;
15056 local_countBufferOffset = countBufferOffset;
15057 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015058 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015059 countingStream->rewind();
15060 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015061 uint64_t cgen_var_1156;
15062 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1156, 1);
15063 countingStream->write((uint64_t*)&cgen_var_1156, 1 * 8);
15064 uint64_t cgen_var_1157;
15065 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1157, 1);
15066 countingStream->write((uint64_t*)&cgen_var_1157, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015067 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015068 uint64_t cgen_var_1158;
15069 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1158, 1);
15070 countingStream->write((uint64_t*)&cgen_var_1158, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015071 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15072 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15073 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015074 }
15075 uint32_t packetSize_vkCmdDrawIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15076 countingStream->rewind();
15077 uint32_t opcode_vkCmdDrawIndirectCountKHR = OP_vkCmdDrawIndirectCountKHR;
15078 stream->write(&opcode_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
15079 stream->write(&packetSize_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015080 uint64_t cgen_var_1159;
15081 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1159, 1);
15082 stream->write((uint64_t*)&cgen_var_1159, 1 * 8);
15083 uint64_t cgen_var_1160;
15084 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1160, 1);
15085 stream->write((uint64_t*)&cgen_var_1160, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015086 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015087 uint64_t cgen_var_1161;
15088 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1161, 1);
15089 stream->write((uint64_t*)&cgen_var_1161, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015090 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15091 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15092 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015093}
15094
15095void VkEncoder::vkCmdDrawIndexedIndirectCountKHR(
15096 VkCommandBuffer commandBuffer,
15097 VkBuffer buffer,
15098 VkDeviceSize offset,
15099 VkBuffer countBuffer,
15100 VkDeviceSize countBufferOffset,
15101 uint32_t maxDrawCount,
15102 uint32_t stride)
15103{
15104 auto stream = mImpl->stream();
15105 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015106 auto resources = mImpl->resources();
15107 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015108 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015109 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015110 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015111 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015112 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015113 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015114 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015115 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015116 local_commandBuffer = commandBuffer;
15117 local_buffer = buffer;
15118 local_offset = offset;
15119 local_countBuffer = countBuffer;
15120 local_countBufferOffset = countBufferOffset;
15121 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015122 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015123 countingStream->rewind();
15124 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015125 uint64_t cgen_var_1162;
15126 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1162, 1);
15127 countingStream->write((uint64_t*)&cgen_var_1162, 1 * 8);
15128 uint64_t cgen_var_1163;
15129 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1163, 1);
15130 countingStream->write((uint64_t*)&cgen_var_1163, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015131 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015132 uint64_t cgen_var_1164;
15133 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1164, 1);
15134 countingStream->write((uint64_t*)&cgen_var_1164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015135 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15136 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15137 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015138 }
15139 uint32_t packetSize_vkCmdDrawIndexedIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15140 countingStream->rewind();
15141 uint32_t opcode_vkCmdDrawIndexedIndirectCountKHR = OP_vkCmdDrawIndexedIndirectCountKHR;
15142 stream->write(&opcode_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
15143 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015144 uint64_t cgen_var_1165;
15145 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1165, 1);
15146 stream->write((uint64_t*)&cgen_var_1165, 1 * 8);
15147 uint64_t cgen_var_1166;
15148 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1166, 1);
15149 stream->write((uint64_t*)&cgen_var_1166, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015150 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015151 uint64_t cgen_var_1167;
15152 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1167, 1);
15153 stream->write((uint64_t*)&cgen_var_1167, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015154 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15155 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15156 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015157}
15158
15159#endif
15160#ifdef VK_KHR_8bit_storage
15161#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -080015162#ifdef VK_ANDROID_native_buffer
15163VkResult VkEncoder::vkGetSwapchainGrallocUsageANDROID(
15164 VkDevice device,
15165 VkFormat format,
15166 VkImageUsageFlags imageUsage,
15167 int* grallocUsage)
15168{
15169 auto stream = mImpl->stream();
15170 auto countingStream = mImpl->countingStream();
15171 auto resources = mImpl->resources();
15172 auto pool = mImpl->pool();
15173 stream->setHandleMapping(resources->unwrapMapping());
15174 VkDevice local_device;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015175 VkFormat local_format;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015176 VkImageUsageFlags local_imageUsage;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015177 local_device = device;
15178 local_format = format;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015179 local_imageUsage = imageUsage;
15180 countingStream->rewind();
15181 {
15182 uint64_t cgen_var_1168;
15183 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1168, 1);
15184 countingStream->write((uint64_t*)&cgen_var_1168, 1 * 8);
15185 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
15186 countingStream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
15187 countingStream->write((int*)grallocUsage, sizeof(int));
15188 }
15189 uint32_t packetSize_vkGetSwapchainGrallocUsageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15190 countingStream->rewind();
15191 uint32_t opcode_vkGetSwapchainGrallocUsageANDROID = OP_vkGetSwapchainGrallocUsageANDROID;
15192 stream->write(&opcode_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
15193 stream->write(&packetSize_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
15194 uint64_t cgen_var_1169;
15195 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1169, 1);
15196 stream->write((uint64_t*)&cgen_var_1169, 1 * 8);
15197 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
15198 stream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
15199 stream->write((int*)grallocUsage, sizeof(int));
15200 stream->read((int*)grallocUsage, sizeof(int));
15201 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
15202 stream->read(&vkGetSwapchainGrallocUsageANDROID_VkResult_return, sizeof(VkResult));
15203 countingStream->clearPool();
15204 stream->clearPool();
15205 pool->freeAll();
15206 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
15207}
15208
15209VkResult VkEncoder::vkAcquireImageANDROID(
15210 VkDevice device,
15211 VkImage image,
15212 int nativeFenceFd,
15213 VkSemaphore semaphore,
15214 VkFence fence)
15215{
15216 auto stream = mImpl->stream();
15217 auto countingStream = mImpl->countingStream();
15218 auto resources = mImpl->resources();
15219 auto pool = mImpl->pool();
15220 stream->setHandleMapping(resources->unwrapMapping());
15221 VkDevice local_device;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015222 VkImage local_image;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015223 int local_nativeFenceFd;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015224 VkSemaphore local_semaphore;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015225 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015226 local_device = device;
15227 local_image = image;
15228 local_nativeFenceFd = nativeFenceFd;
15229 local_semaphore = semaphore;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015230 local_fence = fence;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -080015231 mImpl->resources()->unwrap_vkAcquireImageANDROID_nativeFenceFd(nativeFenceFd, &local_nativeFenceFd);
Lingfeng Yang808a6312018-11-13 21:06:15 -080015232 countingStream->rewind();
15233 {
15234 uint64_t cgen_var_1170;
15235 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1170, 1);
15236 countingStream->write((uint64_t*)&cgen_var_1170, 1 * 8);
15237 uint64_t cgen_var_1171;
15238 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1171, 1);
15239 countingStream->write((uint64_t*)&cgen_var_1171, 1 * 8);
15240 countingStream->write((int*)&local_nativeFenceFd, sizeof(int));
15241 uint64_t cgen_var_1172;
15242 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1172, 1);
15243 countingStream->write((uint64_t*)&cgen_var_1172, 1 * 8);
15244 uint64_t cgen_var_1173;
15245 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1173, 1);
15246 countingStream->write((uint64_t*)&cgen_var_1173, 1 * 8);
15247 }
15248 uint32_t packetSize_vkAcquireImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15249 countingStream->rewind();
15250 uint32_t opcode_vkAcquireImageANDROID = OP_vkAcquireImageANDROID;
15251 stream->write(&opcode_vkAcquireImageANDROID, sizeof(uint32_t));
15252 stream->write(&packetSize_vkAcquireImageANDROID, sizeof(uint32_t));
15253 uint64_t cgen_var_1174;
15254 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1174, 1);
15255 stream->write((uint64_t*)&cgen_var_1174, 1 * 8);
15256 uint64_t cgen_var_1175;
15257 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1175, 1);
15258 stream->write((uint64_t*)&cgen_var_1175, 1 * 8);
15259 stream->write((int*)&local_nativeFenceFd, sizeof(int));
15260 uint64_t cgen_var_1176;
15261 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1176, 1);
15262 stream->write((uint64_t*)&cgen_var_1176, 1 * 8);
15263 uint64_t cgen_var_1177;
15264 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1177, 1);
15265 stream->write((uint64_t*)&cgen_var_1177, 1 * 8);
15266 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
15267 stream->read(&vkAcquireImageANDROID_VkResult_return, sizeof(VkResult));
15268 countingStream->clearPool();
15269 stream->clearPool();
15270 pool->freeAll();
15271 return vkAcquireImageANDROID_VkResult_return;
15272}
15273
15274VkResult VkEncoder::vkQueueSignalReleaseImageANDROID(
15275 VkQueue queue,
15276 uint32_t waitSemaphoreCount,
15277 const VkSemaphore* pWaitSemaphores,
15278 VkImage image,
15279 int* pNativeFenceFd)
15280{
15281 auto stream = mImpl->stream();
15282 auto countingStream = mImpl->countingStream();
15283 auto resources = mImpl->resources();
15284 auto pool = mImpl->pool();
15285 stream->setHandleMapping(resources->unwrapMapping());
15286 VkQueue local_queue;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015287 uint32_t local_waitSemaphoreCount;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015288 VkSemaphore* local_pWaitSemaphores;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015289 VkImage local_image;
15290 local_queue = queue;
15291 local_waitSemaphoreCount = waitSemaphoreCount;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015292 local_pWaitSemaphores = nullptr;
15293 if (pWaitSemaphores)
15294 {
15295 local_pWaitSemaphores = (VkSemaphore*)pool->dupArray(pWaitSemaphores, sizeof(const VkSemaphore));
15296 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080015297 local_image = image;
15298 countingStream->rewind();
15299 {
15300 uint64_t cgen_var_1178;
15301 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1178, 1);
15302 countingStream->write((uint64_t*)&cgen_var_1178, 1 * 8);
15303 countingStream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
15304 uint64_t cgen_var_1179;
15305 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, &cgen_var_1179, 1);
15306 countingStream->write((uint64_t*)&cgen_var_1179, 8);
15307 uint64_t cgen_var_1180;
15308 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1180, 1);
15309 countingStream->write((uint64_t*)&cgen_var_1180, 1 * 8);
15310 countingStream->write((int*)pNativeFenceFd, sizeof(int));
15311 }
15312 uint32_t packetSize_vkQueueSignalReleaseImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15313 countingStream->rewind();
15314 uint32_t opcode_vkQueueSignalReleaseImageANDROID = OP_vkQueueSignalReleaseImageANDROID;
15315 stream->write(&opcode_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
15316 stream->write(&packetSize_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
15317 uint64_t cgen_var_1181;
15318 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1181, 1);
15319 stream->write((uint64_t*)&cgen_var_1181, 1 * 8);
15320 stream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
15321 uint64_t cgen_var_1182;
15322 stream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, &cgen_var_1182, 1);
15323 stream->write((uint64_t*)&cgen_var_1182, 8);
15324 uint64_t cgen_var_1183;
15325 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1183, 1);
15326 stream->write((uint64_t*)&cgen_var_1183, 1 * 8);
15327 stream->write((int*)pNativeFenceFd, sizeof(int));
15328 stream->read((int*)pNativeFenceFd, sizeof(int));
15329 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
15330 stream->read(&vkQueueSignalReleaseImageANDROID_VkResult_return, sizeof(VkResult));
15331 countingStream->clearPool();
15332 stream->clearPool();
15333 pool->freeAll();
15334 return vkQueueSignalReleaseImageANDROID_VkResult_return;
15335}
15336
15337#endif
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015338#ifdef VK_EXT_debug_report
15339VkResult VkEncoder::vkCreateDebugReportCallbackEXT(
15340 VkInstance instance,
15341 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
15342 const VkAllocationCallbacks* pAllocator,
15343 VkDebugReportCallbackEXT* pCallback)
15344{
15345 auto stream = mImpl->stream();
15346 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015347 auto resources = mImpl->resources();
15348 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015349 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015350 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015351 VkDebugReportCallbackCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015352 VkAllocationCallbacks* local_pAllocator;
15353 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015354 local_pCreateInfo = nullptr;
15355 if (pCreateInfo)
15356 {
15357 local_pCreateInfo = (VkDebugReportCallbackCreateInfoEXT*)pool->alloc(sizeof(const VkDebugReportCallbackCreateInfoEXT));
15358 deepcopy_VkDebugReportCallbackCreateInfoEXT(pool, pCreateInfo, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
15359 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015360 local_pAllocator = nullptr;
15361 if (pAllocator)
15362 {
15363 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15364 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15365 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015366 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015367 countingStream->rewind();
15368 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015369 uint64_t cgen_var_1184;
15370 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1184, 1);
15371 countingStream->write((uint64_t*)&cgen_var_1184, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015372 marshal_VkDebugReportCallbackCreateInfoEXT(countingStream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015373 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015374 uint64_t cgen_var_1185 = (uint64_t)(uintptr_t)local_pAllocator;
15375 countingStream->putBe64(cgen_var_1185);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015376 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015377 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015378 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015379 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080015380 uint64_t cgen_var_1186;
15381 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1186, 1);
15382 countingStream->write((uint64_t*)&cgen_var_1186, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015383 }
15384 uint32_t packetSize_vkCreateDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15385 countingStream->rewind();
15386 uint32_t opcode_vkCreateDebugReportCallbackEXT = OP_vkCreateDebugReportCallbackEXT;
15387 stream->write(&opcode_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
15388 stream->write(&packetSize_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015389 uint64_t cgen_var_1187;
15390 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1187, 1);
15391 stream->write((uint64_t*)&cgen_var_1187, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015392 marshal_VkDebugReportCallbackCreateInfoEXT(stream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015393 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015394 uint64_t cgen_var_1188 = (uint64_t)(uintptr_t)local_pAllocator;
15395 stream->putBe64(cgen_var_1188);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015396 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015397 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015398 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015399 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080015400 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015401 uint64_t cgen_var_1189;
15402 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1189, 1);
15403 stream->write((uint64_t*)&cgen_var_1189, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015404 stream->setHandleMapping(resources->unwrapMapping());
15405 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080015406 uint64_t cgen_var_1190;
15407 stream->read((uint64_t*)&cgen_var_1190, 8);
15408 stream->handleMapping()->mapHandles_u64_VkDebugReportCallbackEXT(&cgen_var_1190, (VkDebugReportCallbackEXT*)pCallback, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015409 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015410 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
15411 stream->read(&vkCreateDebugReportCallbackEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015412 countingStream->clearPool();
15413 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015414 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015415 return vkCreateDebugReportCallbackEXT_VkResult_return;
15416}
15417
15418void VkEncoder::vkDestroyDebugReportCallbackEXT(
15419 VkInstance instance,
15420 VkDebugReportCallbackEXT callback,
15421 const VkAllocationCallbacks* pAllocator)
15422{
15423 auto stream = mImpl->stream();
15424 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015425 auto resources = mImpl->resources();
15426 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015427 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015428 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015429 VkDebugReportCallbackEXT local_callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015430 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015431 local_instance = instance;
15432 local_callback = callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015433 local_pAllocator = nullptr;
15434 if (pAllocator)
15435 {
15436 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15437 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15438 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015439 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015440 countingStream->rewind();
15441 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015442 uint64_t cgen_var_1191;
15443 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1191, 1);
15444 countingStream->write((uint64_t*)&cgen_var_1191, 1 * 8);
15445 uint64_t cgen_var_1192;
15446 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1192, 1);
15447 countingStream->write((uint64_t*)&cgen_var_1192, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015448 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015449 uint64_t cgen_var_1193 = (uint64_t)(uintptr_t)local_pAllocator;
15450 countingStream->putBe64(cgen_var_1193);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015451 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015452 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015453 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015454 }
15455 }
15456 uint32_t packetSize_vkDestroyDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15457 countingStream->rewind();
15458 uint32_t opcode_vkDestroyDebugReportCallbackEXT = OP_vkDestroyDebugReportCallbackEXT;
15459 stream->write(&opcode_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
15460 stream->write(&packetSize_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015461 uint64_t cgen_var_1194;
15462 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1194, 1);
15463 stream->write((uint64_t*)&cgen_var_1194, 1 * 8);
15464 uint64_t cgen_var_1195;
15465 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1195, 1);
15466 stream->write((uint64_t*)&cgen_var_1195, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015467 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015468 uint64_t cgen_var_1196 = (uint64_t)(uintptr_t)local_pAllocator;
15469 stream->putBe64(cgen_var_1196);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015470 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015471 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015472 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015473 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015474 resources->destroyMapping()->mapHandles_VkDebugReportCallbackEXT((VkDebugReportCallbackEXT*)&callback);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015475}
15476
15477void VkEncoder::vkDebugReportMessageEXT(
15478 VkInstance instance,
15479 VkDebugReportFlagsEXT flags,
15480 VkDebugReportObjectTypeEXT objectType,
15481 uint64_t object,
15482 size_t location,
15483 int32_t messageCode,
15484 const char* pLayerPrefix,
15485 const char* pMessage)
15486{
15487 auto stream = mImpl->stream();
15488 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015489 auto resources = mImpl->resources();
15490 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015491 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015492 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015493 VkDebugReportFlagsEXT local_flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015494 VkDebugReportObjectTypeEXT local_objectType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015495 uint64_t local_object;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015496 size_t local_location;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015497 int32_t local_messageCode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015498 char* local_pLayerPrefix;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015499 char* local_pMessage;
15500 local_instance = instance;
15501 local_flags = flags;
15502 local_objectType = objectType;
15503 local_object = object;
15504 local_location = location;
15505 local_messageCode = messageCode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015506 local_pLayerPrefix = nullptr;
15507 if (pLayerPrefix)
15508 {
15509 local_pLayerPrefix = pool->strDup(pLayerPrefix);
15510 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015511 local_pMessage = nullptr;
15512 if (pMessage)
15513 {
15514 local_pMessage = pool->strDup(pMessage);
15515 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015516 countingStream->rewind();
15517 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015518 uint64_t cgen_var_1197;
15519 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1197, 1);
15520 countingStream->write((uint64_t*)&cgen_var_1197, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015521 countingStream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
15522 countingStream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
15523 countingStream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015524 uint64_t cgen_var_1198 = (uint64_t)local_location;
15525 countingStream->putBe64(cgen_var_1198);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015526 countingStream->write((int32_t*)&local_messageCode, sizeof(int32_t));
15527 countingStream->putString(local_pLayerPrefix);
15528 countingStream->putString(local_pMessage);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015529 }
15530 uint32_t packetSize_vkDebugReportMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15531 countingStream->rewind();
15532 uint32_t opcode_vkDebugReportMessageEXT = OP_vkDebugReportMessageEXT;
15533 stream->write(&opcode_vkDebugReportMessageEXT, sizeof(uint32_t));
15534 stream->write(&packetSize_vkDebugReportMessageEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015535 uint64_t cgen_var_1199;
15536 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1199, 1);
15537 stream->write((uint64_t*)&cgen_var_1199, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015538 stream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
15539 stream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
15540 stream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015541 uint64_t cgen_var_1200 = (uint64_t)local_location;
15542 stream->putBe64(cgen_var_1200);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015543 stream->write((int32_t*)&local_messageCode, sizeof(int32_t));
15544 stream->putString(local_pLayerPrefix);
15545 stream->putString(local_pMessage);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015546}
15547
15548#endif
15549#ifdef VK_NV_glsl_shader
15550#endif
15551#ifdef VK_EXT_depth_range_unrestricted
15552#endif
15553#ifdef VK_IMG_filter_cubic
15554#endif
15555#ifdef VK_AMD_rasterization_order
15556#endif
15557#ifdef VK_AMD_shader_trinary_minmax
15558#endif
15559#ifdef VK_AMD_shader_explicit_vertex_parameter
15560#endif
15561#ifdef VK_EXT_debug_marker
15562VkResult VkEncoder::vkDebugMarkerSetObjectTagEXT(
15563 VkDevice device,
15564 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
15565{
15566 auto stream = mImpl->stream();
15567 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015568 auto resources = mImpl->resources();
15569 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015570 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015571 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015572 VkDebugMarkerObjectTagInfoEXT* local_pTagInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015573 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015574 local_pTagInfo = nullptr;
15575 if (pTagInfo)
15576 {
15577 local_pTagInfo = (VkDebugMarkerObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectTagInfoEXT));
15578 deepcopy_VkDebugMarkerObjectTagInfoEXT(pool, pTagInfo, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
15579 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015580 countingStream->rewind();
15581 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015582 uint64_t cgen_var_1201;
15583 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1201, 1);
15584 countingStream->write((uint64_t*)&cgen_var_1201, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015585 marshal_VkDebugMarkerObjectTagInfoEXT(countingStream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015586 }
15587 uint32_t packetSize_vkDebugMarkerSetObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15588 countingStream->rewind();
15589 uint32_t opcode_vkDebugMarkerSetObjectTagEXT = OP_vkDebugMarkerSetObjectTagEXT;
15590 stream->write(&opcode_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
15591 stream->write(&packetSize_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015592 uint64_t cgen_var_1202;
15593 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1202, 1);
15594 stream->write((uint64_t*)&cgen_var_1202, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015595 marshal_VkDebugMarkerObjectTagInfoEXT(stream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015596 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
15597 stream->read(&vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015598 countingStream->clearPool();
15599 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015600 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015601 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
15602}
15603
15604VkResult VkEncoder::vkDebugMarkerSetObjectNameEXT(
15605 VkDevice device,
15606 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
15607{
15608 auto stream = mImpl->stream();
15609 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015610 auto resources = mImpl->resources();
15611 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015612 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015613 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015614 VkDebugMarkerObjectNameInfoEXT* local_pNameInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015615 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015616 local_pNameInfo = nullptr;
15617 if (pNameInfo)
15618 {
15619 local_pNameInfo = (VkDebugMarkerObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectNameInfoEXT));
15620 deepcopy_VkDebugMarkerObjectNameInfoEXT(pool, pNameInfo, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
15621 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015622 countingStream->rewind();
15623 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015624 uint64_t cgen_var_1203;
15625 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1203, 1);
15626 countingStream->write((uint64_t*)&cgen_var_1203, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015627 marshal_VkDebugMarkerObjectNameInfoEXT(countingStream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015628 }
15629 uint32_t packetSize_vkDebugMarkerSetObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15630 countingStream->rewind();
15631 uint32_t opcode_vkDebugMarkerSetObjectNameEXT = OP_vkDebugMarkerSetObjectNameEXT;
15632 stream->write(&opcode_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
15633 stream->write(&packetSize_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015634 uint64_t cgen_var_1204;
15635 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1204, 1);
15636 stream->write((uint64_t*)&cgen_var_1204, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015637 marshal_VkDebugMarkerObjectNameInfoEXT(stream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015638 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
15639 stream->read(&vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015640 countingStream->clearPool();
15641 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015642 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015643 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
15644}
15645
15646void VkEncoder::vkCmdDebugMarkerBeginEXT(
15647 VkCommandBuffer commandBuffer,
15648 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
15649{
15650 auto stream = mImpl->stream();
15651 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015652 auto resources = mImpl->resources();
15653 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015654 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015655 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015656 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015657 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015658 local_pMarkerInfo = nullptr;
15659 if (pMarkerInfo)
15660 {
15661 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
15662 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
15663 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015664 countingStream->rewind();
15665 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015666 uint64_t cgen_var_1205;
15667 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1205, 1);
15668 countingStream->write((uint64_t*)&cgen_var_1205, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015669 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015670 }
15671 uint32_t packetSize_vkCmdDebugMarkerBeginEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15672 countingStream->rewind();
15673 uint32_t opcode_vkCmdDebugMarkerBeginEXT = OP_vkCmdDebugMarkerBeginEXT;
15674 stream->write(&opcode_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
15675 stream->write(&packetSize_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015676 uint64_t cgen_var_1206;
15677 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1206, 1);
15678 stream->write((uint64_t*)&cgen_var_1206, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015679 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015680}
15681
15682void VkEncoder::vkCmdDebugMarkerEndEXT(
15683 VkCommandBuffer commandBuffer)
15684{
15685 auto stream = mImpl->stream();
15686 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015687 auto resources = mImpl->resources();
15688 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015689 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015690 VkCommandBuffer local_commandBuffer;
15691 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015692 countingStream->rewind();
15693 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015694 uint64_t cgen_var_1207;
15695 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1207, 1);
15696 countingStream->write((uint64_t*)&cgen_var_1207, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015697 }
15698 uint32_t packetSize_vkCmdDebugMarkerEndEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15699 countingStream->rewind();
15700 uint32_t opcode_vkCmdDebugMarkerEndEXT = OP_vkCmdDebugMarkerEndEXT;
15701 stream->write(&opcode_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
15702 stream->write(&packetSize_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015703 uint64_t cgen_var_1208;
15704 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1208, 1);
15705 stream->write((uint64_t*)&cgen_var_1208, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015706}
15707
15708void VkEncoder::vkCmdDebugMarkerInsertEXT(
15709 VkCommandBuffer commandBuffer,
15710 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
15711{
15712 auto stream = mImpl->stream();
15713 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015714 auto resources = mImpl->resources();
15715 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015716 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015717 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015718 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015719 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015720 local_pMarkerInfo = nullptr;
15721 if (pMarkerInfo)
15722 {
15723 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
15724 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
15725 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015726 countingStream->rewind();
15727 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015728 uint64_t cgen_var_1209;
15729 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1209, 1);
15730 countingStream->write((uint64_t*)&cgen_var_1209, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015731 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015732 }
15733 uint32_t packetSize_vkCmdDebugMarkerInsertEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15734 countingStream->rewind();
15735 uint32_t opcode_vkCmdDebugMarkerInsertEXT = OP_vkCmdDebugMarkerInsertEXT;
15736 stream->write(&opcode_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
15737 stream->write(&packetSize_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015738 uint64_t cgen_var_1210;
15739 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1210, 1);
15740 stream->write((uint64_t*)&cgen_var_1210, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015741 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015742}
15743
15744#endif
15745#ifdef VK_AMD_gcn_shader
15746#endif
15747#ifdef VK_NV_dedicated_allocation
15748#endif
15749#ifdef VK_AMD_draw_indirect_count
15750void VkEncoder::vkCmdDrawIndirectCountAMD(
15751 VkCommandBuffer commandBuffer,
15752 VkBuffer buffer,
15753 VkDeviceSize offset,
15754 VkBuffer countBuffer,
15755 VkDeviceSize countBufferOffset,
15756 uint32_t maxDrawCount,
15757 uint32_t stride)
15758{
15759 auto stream = mImpl->stream();
15760 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015761 auto resources = mImpl->resources();
15762 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015763 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015764 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015765 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015766 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015767 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015768 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015769 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015770 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015771 local_commandBuffer = commandBuffer;
15772 local_buffer = buffer;
15773 local_offset = offset;
15774 local_countBuffer = countBuffer;
15775 local_countBufferOffset = countBufferOffset;
15776 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015777 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015778 countingStream->rewind();
15779 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015780 uint64_t cgen_var_1211;
15781 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1211, 1);
15782 countingStream->write((uint64_t*)&cgen_var_1211, 1 * 8);
15783 uint64_t cgen_var_1212;
15784 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1212, 1);
15785 countingStream->write((uint64_t*)&cgen_var_1212, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015786 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015787 uint64_t cgen_var_1213;
15788 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1213, 1);
15789 countingStream->write((uint64_t*)&cgen_var_1213, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015790 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15791 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15792 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015793 }
15794 uint32_t packetSize_vkCmdDrawIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15795 countingStream->rewind();
15796 uint32_t opcode_vkCmdDrawIndirectCountAMD = OP_vkCmdDrawIndirectCountAMD;
15797 stream->write(&opcode_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
15798 stream->write(&packetSize_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015799 uint64_t cgen_var_1214;
15800 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1214, 1);
15801 stream->write((uint64_t*)&cgen_var_1214, 1 * 8);
15802 uint64_t cgen_var_1215;
15803 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1215, 1);
15804 stream->write((uint64_t*)&cgen_var_1215, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015805 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015806 uint64_t cgen_var_1216;
15807 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1216, 1);
15808 stream->write((uint64_t*)&cgen_var_1216, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015809 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15810 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15811 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015812}
15813
15814void VkEncoder::vkCmdDrawIndexedIndirectCountAMD(
15815 VkCommandBuffer commandBuffer,
15816 VkBuffer buffer,
15817 VkDeviceSize offset,
15818 VkBuffer countBuffer,
15819 VkDeviceSize countBufferOffset,
15820 uint32_t maxDrawCount,
15821 uint32_t stride)
15822{
15823 auto stream = mImpl->stream();
15824 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015825 auto resources = mImpl->resources();
15826 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015827 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015828 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015829 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015830 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015831 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015832 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015833 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015834 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015835 local_commandBuffer = commandBuffer;
15836 local_buffer = buffer;
15837 local_offset = offset;
15838 local_countBuffer = countBuffer;
15839 local_countBufferOffset = countBufferOffset;
15840 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015841 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015842 countingStream->rewind();
15843 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015844 uint64_t cgen_var_1217;
15845 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1217, 1);
15846 countingStream->write((uint64_t*)&cgen_var_1217, 1 * 8);
15847 uint64_t cgen_var_1218;
15848 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1218, 1);
15849 countingStream->write((uint64_t*)&cgen_var_1218, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015850 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015851 uint64_t cgen_var_1219;
15852 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1219, 1);
15853 countingStream->write((uint64_t*)&cgen_var_1219, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015854 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15855 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15856 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015857 }
15858 uint32_t packetSize_vkCmdDrawIndexedIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15859 countingStream->rewind();
15860 uint32_t opcode_vkCmdDrawIndexedIndirectCountAMD = OP_vkCmdDrawIndexedIndirectCountAMD;
15861 stream->write(&opcode_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
15862 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015863 uint64_t cgen_var_1220;
15864 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1220, 1);
15865 stream->write((uint64_t*)&cgen_var_1220, 1 * 8);
15866 uint64_t cgen_var_1221;
15867 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1221, 1);
15868 stream->write((uint64_t*)&cgen_var_1221, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015869 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015870 uint64_t cgen_var_1222;
15871 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1222, 1);
15872 stream->write((uint64_t*)&cgen_var_1222, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015873 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15874 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15875 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015876}
15877
15878#endif
15879#ifdef VK_AMD_negative_viewport_height
15880#endif
15881#ifdef VK_AMD_gpu_shader_half_float
15882#endif
15883#ifdef VK_AMD_shader_ballot
15884#endif
15885#ifdef VK_AMD_texture_gather_bias_lod
15886#endif
15887#ifdef VK_AMD_shader_info
15888VkResult VkEncoder::vkGetShaderInfoAMD(
15889 VkDevice device,
15890 VkPipeline pipeline,
15891 VkShaderStageFlagBits shaderStage,
15892 VkShaderInfoTypeAMD infoType,
15893 size_t* pInfoSize,
15894 void* pInfo)
15895{
15896 auto stream = mImpl->stream();
15897 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015898 auto resources = mImpl->resources();
15899 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015900 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015901 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015902 VkPipeline local_pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015903 VkShaderStageFlagBits local_shaderStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015904 VkShaderInfoTypeAMD local_infoType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015905 local_device = device;
15906 local_pipeline = pipeline;
15907 local_shaderStage = shaderStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015908 local_infoType = infoType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015909 countingStream->rewind();
15910 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015911 uint64_t cgen_var_1223;
15912 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1223, 1);
15913 countingStream->write((uint64_t*)&cgen_var_1223, 1 * 8);
15914 uint64_t cgen_var_1224;
15915 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1224, 1);
15916 countingStream->write((uint64_t*)&cgen_var_1224, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015917 countingStream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
15918 countingStream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015919 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015920 uint64_t cgen_var_1225 = (uint64_t)(uintptr_t)pInfoSize;
15921 countingStream->putBe64(cgen_var_1225);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015922 if (pInfoSize)
15923 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015924 uint64_t cgen_var_1226 = (uint64_t)(*pInfoSize);
15925 countingStream->putBe64(cgen_var_1226);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015926 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015927 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015928 uint64_t cgen_var_1227 = (uint64_t)(uintptr_t)pInfo;
15929 countingStream->putBe64(cgen_var_1227);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015930 if (pInfo)
15931 {
15932 countingStream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
15933 }
15934 }
15935 uint32_t packetSize_vkGetShaderInfoAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15936 countingStream->rewind();
15937 uint32_t opcode_vkGetShaderInfoAMD = OP_vkGetShaderInfoAMD;
15938 stream->write(&opcode_vkGetShaderInfoAMD, sizeof(uint32_t));
15939 stream->write(&packetSize_vkGetShaderInfoAMD, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015940 uint64_t cgen_var_1228;
15941 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1228, 1);
15942 stream->write((uint64_t*)&cgen_var_1228, 1 * 8);
15943 uint64_t cgen_var_1229;
15944 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1229, 1);
15945 stream->write((uint64_t*)&cgen_var_1229, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015946 stream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
15947 stream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015948 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015949 uint64_t cgen_var_1230 = (uint64_t)(uintptr_t)pInfoSize;
15950 stream->putBe64(cgen_var_1230);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015951 if (pInfoSize)
15952 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015953 uint64_t cgen_var_1231 = (uint64_t)(*pInfoSize);
15954 stream->putBe64(cgen_var_1231);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015955 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015956 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015957 uint64_t cgen_var_1232 = (uint64_t)(uintptr_t)pInfo;
15958 stream->putBe64(cgen_var_1232);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015959 if (pInfo)
15960 {
15961 stream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
15962 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015963 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015964 size_t* check_pInfoSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015965 check_pInfoSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015966 if (pInfoSize)
15967 {
15968 if (!(check_pInfoSize))
15969 {
15970 fprintf(stderr, "fatal: pInfoSize inconsistent between guest and host\n");
15971 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015972 (*pInfoSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015973 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015974 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015975 void* check_pInfo;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015976 check_pInfo = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015977 if (pInfo)
15978 {
15979 if (!(check_pInfo))
15980 {
15981 fprintf(stderr, "fatal: pInfo inconsistent between guest and host\n");
15982 }
15983 stream->read((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
15984 }
15985 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
15986 stream->read(&vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015987 countingStream->clearPool();
15988 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015989 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015990 return vkGetShaderInfoAMD_VkResult_return;
15991}
15992
15993#endif
15994#ifdef VK_AMD_shader_image_load_store_lod
15995#endif
15996#ifdef VK_IMG_format_pvrtc
15997#endif
15998#ifdef VK_NV_external_memory_capabilities
15999VkResult VkEncoder::vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
16000 VkPhysicalDevice physicalDevice,
16001 VkFormat format,
16002 VkImageType type,
16003 VkImageTiling tiling,
16004 VkImageUsageFlags usage,
16005 VkImageCreateFlags flags,
16006 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
16007 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
16008{
16009 auto stream = mImpl->stream();
16010 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016011 auto resources = mImpl->resources();
16012 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016013 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016014 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016015 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016016 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016017 VkImageTiling local_tiling;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016018 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016019 VkImageCreateFlags local_flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016020 VkExternalMemoryHandleTypeFlagsNV local_externalHandleType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016021 local_physicalDevice = physicalDevice;
16022 local_format = format;
16023 local_type = type;
16024 local_tiling = tiling;
16025 local_usage = usage;
16026 local_flags = flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016027 local_externalHandleType = externalHandleType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016028 countingStream->rewind();
16029 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016030 uint64_t cgen_var_1236;
16031 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1236, 1);
16032 countingStream->write((uint64_t*)&cgen_var_1236, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016033 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
16034 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
16035 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
16036 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
16037 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
16038 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016039 marshal_VkExternalImageFormatPropertiesNV(countingStream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
16040 }
16041 uint32_t packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16042 countingStream->rewind();
16043 uint32_t opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
16044 stream->write(&opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
16045 stream->write(&packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016046 uint64_t cgen_var_1237;
16047 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1237, 1);
16048 stream->write((uint64_t*)&cgen_var_1237, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016049 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
16050 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
16051 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
16052 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
16053 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
16054 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016055 marshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
16056 unmarshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
16057 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
16058 stream->read(&vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016059 countingStream->clearPool();
16060 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016061 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016062 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
16063}
16064
16065#endif
16066#ifdef VK_NV_external_memory
16067#endif
16068#ifdef VK_NV_external_memory_win32
16069VkResult VkEncoder::vkGetMemoryWin32HandleNV(
16070 VkDevice device,
16071 VkDeviceMemory memory,
16072 VkExternalMemoryHandleTypeFlagsNV handleType,
16073 HANDLE* pHandle)
16074{
16075 auto stream = mImpl->stream();
16076 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016077 auto resources = mImpl->resources();
16078 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016079 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016080 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016081 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016082 VkExternalMemoryHandleTypeFlagsNV local_handleType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016083 local_device = device;
16084 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016085 local_handleType = handleType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016086 countingStream->rewind();
16087 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016088 uint64_t cgen_var_1238;
16089 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1238, 1);
16090 countingStream->write((uint64_t*)&cgen_var_1238, 1 * 8);
16091 uint64_t cgen_var_1239;
16092 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1239, 1);
16093 countingStream->write((uint64_t*)&cgen_var_1239, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016094 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016095 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
16096 }
16097 uint32_t packetSize_vkGetMemoryWin32HandleNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16098 countingStream->rewind();
16099 uint32_t opcode_vkGetMemoryWin32HandleNV = OP_vkGetMemoryWin32HandleNV;
16100 stream->write(&opcode_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
16101 stream->write(&packetSize_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016102 uint64_t cgen_var_1240;
16103 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1240, 1);
16104 stream->write((uint64_t*)&cgen_var_1240, 1 * 8);
16105 uint64_t cgen_var_1241;
16106 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1241, 1);
16107 stream->write((uint64_t*)&cgen_var_1241, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016108 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016109 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
16110 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
16111 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
16112 stream->read(&vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016113 countingStream->clearPool();
16114 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016115 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016116 return vkGetMemoryWin32HandleNV_VkResult_return;
16117}
16118
16119#endif
16120#ifdef VK_NV_win32_keyed_mutex
16121#endif
16122#ifdef VK_EXT_validation_flags
16123#endif
16124#ifdef VK_NN_vi_surface
16125VkResult VkEncoder::vkCreateViSurfaceNN(
16126 VkInstance instance,
16127 const VkViSurfaceCreateInfoNN* pCreateInfo,
16128 const VkAllocationCallbacks* pAllocator,
16129 VkSurfaceKHR* pSurface)
16130{
16131 auto stream = mImpl->stream();
16132 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016133 auto resources = mImpl->resources();
16134 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016135 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016136 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016137 VkViSurfaceCreateInfoNN* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016138 VkAllocationCallbacks* local_pAllocator;
16139 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016140 local_pCreateInfo = nullptr;
16141 if (pCreateInfo)
16142 {
16143 local_pCreateInfo = (VkViSurfaceCreateInfoNN*)pool->alloc(sizeof(const VkViSurfaceCreateInfoNN));
16144 deepcopy_VkViSurfaceCreateInfoNN(pool, pCreateInfo, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
16145 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016146 local_pAllocator = nullptr;
16147 if (pAllocator)
16148 {
16149 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16150 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16151 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016152 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016153 countingStream->rewind();
16154 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016155 uint64_t cgen_var_1242;
16156 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1242, 1);
16157 countingStream->write((uint64_t*)&cgen_var_1242, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016158 marshal_VkViSurfaceCreateInfoNN(countingStream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016159 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016160 uint64_t cgen_var_1243 = (uint64_t)(uintptr_t)local_pAllocator;
16161 countingStream->putBe64(cgen_var_1243);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016162 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016163 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016164 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016165 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080016166 uint64_t cgen_var_1244;
16167 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1244, 1);
16168 countingStream->write((uint64_t*)&cgen_var_1244, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016169 }
16170 uint32_t packetSize_vkCreateViSurfaceNN = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16171 countingStream->rewind();
16172 uint32_t opcode_vkCreateViSurfaceNN = OP_vkCreateViSurfaceNN;
16173 stream->write(&opcode_vkCreateViSurfaceNN, sizeof(uint32_t));
16174 stream->write(&packetSize_vkCreateViSurfaceNN, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016175 uint64_t cgen_var_1245;
16176 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1245, 1);
16177 stream->write((uint64_t*)&cgen_var_1245, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016178 marshal_VkViSurfaceCreateInfoNN(stream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016179 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016180 uint64_t cgen_var_1246 = (uint64_t)(uintptr_t)local_pAllocator;
16181 stream->putBe64(cgen_var_1246);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016182 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016183 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016184 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016185 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016186 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016187 uint64_t cgen_var_1247;
16188 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1247, 1);
16189 stream->write((uint64_t*)&cgen_var_1247, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016190 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080016191 uint64_t cgen_var_1248;
16192 stream->read((uint64_t*)&cgen_var_1248, 8);
16193 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1248, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016194 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
16195 stream->read(&vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016196 countingStream->clearPool();
16197 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016198 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016199 return vkCreateViSurfaceNN_VkResult_return;
16200}
16201
16202#endif
16203#ifdef VK_EXT_shader_subgroup_ballot
16204#endif
16205#ifdef VK_EXT_shader_subgroup_vote
16206#endif
16207#ifdef VK_EXT_conditional_rendering
16208void VkEncoder::vkCmdBeginConditionalRenderingEXT(
16209 VkCommandBuffer commandBuffer,
16210 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
16211{
16212 auto stream = mImpl->stream();
16213 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016214 auto resources = mImpl->resources();
16215 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016216 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016217 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016218 VkConditionalRenderingBeginInfoEXT* local_pConditionalRenderingBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016219 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016220 local_pConditionalRenderingBegin = nullptr;
16221 if (pConditionalRenderingBegin)
16222 {
16223 local_pConditionalRenderingBegin = (VkConditionalRenderingBeginInfoEXT*)pool->alloc(sizeof(const VkConditionalRenderingBeginInfoEXT));
16224 deepcopy_VkConditionalRenderingBeginInfoEXT(pool, pConditionalRenderingBegin, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
16225 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016226 countingStream->rewind();
16227 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016228 uint64_t cgen_var_1249;
16229 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1249, 1);
16230 countingStream->write((uint64_t*)&cgen_var_1249, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016231 marshal_VkConditionalRenderingBeginInfoEXT(countingStream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016232 }
16233 uint32_t packetSize_vkCmdBeginConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16234 countingStream->rewind();
16235 uint32_t opcode_vkCmdBeginConditionalRenderingEXT = OP_vkCmdBeginConditionalRenderingEXT;
16236 stream->write(&opcode_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
16237 stream->write(&packetSize_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016238 uint64_t cgen_var_1250;
16239 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1250, 1);
16240 stream->write((uint64_t*)&cgen_var_1250, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016241 marshal_VkConditionalRenderingBeginInfoEXT(stream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016242}
16243
16244void VkEncoder::vkCmdEndConditionalRenderingEXT(
16245 VkCommandBuffer commandBuffer)
16246{
16247 auto stream = mImpl->stream();
16248 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016249 auto resources = mImpl->resources();
16250 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016251 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016252 VkCommandBuffer local_commandBuffer;
16253 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016254 countingStream->rewind();
16255 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016256 uint64_t cgen_var_1251;
16257 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1251, 1);
16258 countingStream->write((uint64_t*)&cgen_var_1251, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016259 }
16260 uint32_t packetSize_vkCmdEndConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16261 countingStream->rewind();
16262 uint32_t opcode_vkCmdEndConditionalRenderingEXT = OP_vkCmdEndConditionalRenderingEXT;
16263 stream->write(&opcode_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
16264 stream->write(&packetSize_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016265 uint64_t cgen_var_1252;
16266 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1252, 1);
16267 stream->write((uint64_t*)&cgen_var_1252, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016268}
16269
16270#endif
16271#ifdef VK_NVX_device_generated_commands
16272void VkEncoder::vkCmdProcessCommandsNVX(
16273 VkCommandBuffer commandBuffer,
16274 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
16275{
16276 auto stream = mImpl->stream();
16277 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016278 auto resources = mImpl->resources();
16279 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016280 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016281 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016282 VkCmdProcessCommandsInfoNVX* local_pProcessCommandsInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016283 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016284 local_pProcessCommandsInfo = nullptr;
16285 if (pProcessCommandsInfo)
16286 {
16287 local_pProcessCommandsInfo = (VkCmdProcessCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdProcessCommandsInfoNVX));
16288 deepcopy_VkCmdProcessCommandsInfoNVX(pool, pProcessCommandsInfo, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
16289 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016290 countingStream->rewind();
16291 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016292 uint64_t cgen_var_1253;
16293 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1253, 1);
16294 countingStream->write((uint64_t*)&cgen_var_1253, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016295 marshal_VkCmdProcessCommandsInfoNVX(countingStream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016296 }
16297 uint32_t packetSize_vkCmdProcessCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16298 countingStream->rewind();
16299 uint32_t opcode_vkCmdProcessCommandsNVX = OP_vkCmdProcessCommandsNVX;
16300 stream->write(&opcode_vkCmdProcessCommandsNVX, sizeof(uint32_t));
16301 stream->write(&packetSize_vkCmdProcessCommandsNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016302 uint64_t cgen_var_1254;
16303 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1254, 1);
16304 stream->write((uint64_t*)&cgen_var_1254, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016305 marshal_VkCmdProcessCommandsInfoNVX(stream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016306}
16307
16308void VkEncoder::vkCmdReserveSpaceForCommandsNVX(
16309 VkCommandBuffer commandBuffer,
16310 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
16311{
16312 auto stream = mImpl->stream();
16313 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016314 auto resources = mImpl->resources();
16315 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016316 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016317 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016318 VkCmdReserveSpaceForCommandsInfoNVX* local_pReserveSpaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016319 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016320 local_pReserveSpaceInfo = nullptr;
16321 if (pReserveSpaceInfo)
16322 {
16323 local_pReserveSpaceInfo = (VkCmdReserveSpaceForCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdReserveSpaceForCommandsInfoNVX));
16324 deepcopy_VkCmdReserveSpaceForCommandsInfoNVX(pool, pReserveSpaceInfo, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
16325 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016326 countingStream->rewind();
16327 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016328 uint64_t cgen_var_1255;
16329 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1255, 1);
16330 countingStream->write((uint64_t*)&cgen_var_1255, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016331 marshal_VkCmdReserveSpaceForCommandsInfoNVX(countingStream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016332 }
16333 uint32_t packetSize_vkCmdReserveSpaceForCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16334 countingStream->rewind();
16335 uint32_t opcode_vkCmdReserveSpaceForCommandsNVX = OP_vkCmdReserveSpaceForCommandsNVX;
16336 stream->write(&opcode_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
16337 stream->write(&packetSize_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016338 uint64_t cgen_var_1256;
16339 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1256, 1);
16340 stream->write((uint64_t*)&cgen_var_1256, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016341 marshal_VkCmdReserveSpaceForCommandsInfoNVX(stream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016342}
16343
16344VkResult VkEncoder::vkCreateIndirectCommandsLayoutNVX(
16345 VkDevice device,
16346 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
16347 const VkAllocationCallbacks* pAllocator,
16348 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
16349{
16350 auto stream = mImpl->stream();
16351 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016352 auto resources = mImpl->resources();
16353 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016354 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016355 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016356 VkIndirectCommandsLayoutCreateInfoNVX* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016357 VkAllocationCallbacks* local_pAllocator;
16358 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016359 local_pCreateInfo = nullptr;
16360 if (pCreateInfo)
16361 {
16362 local_pCreateInfo = (VkIndirectCommandsLayoutCreateInfoNVX*)pool->alloc(sizeof(const VkIndirectCommandsLayoutCreateInfoNVX));
16363 deepcopy_VkIndirectCommandsLayoutCreateInfoNVX(pool, pCreateInfo, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
16364 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016365 local_pAllocator = nullptr;
16366 if (pAllocator)
16367 {
16368 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16369 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16370 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016371 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016372 countingStream->rewind();
16373 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016374 uint64_t cgen_var_1257;
16375 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1257, 1);
16376 countingStream->write((uint64_t*)&cgen_var_1257, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016377 marshal_VkIndirectCommandsLayoutCreateInfoNVX(countingStream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016378 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016379 uint64_t cgen_var_1258 = (uint64_t)(uintptr_t)local_pAllocator;
16380 countingStream->putBe64(cgen_var_1258);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016381 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016382 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016383 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016384 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080016385 uint64_t cgen_var_1259;
16386 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1259, 1);
16387 countingStream->write((uint64_t*)&cgen_var_1259, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016388 }
16389 uint32_t packetSize_vkCreateIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16390 countingStream->rewind();
16391 uint32_t opcode_vkCreateIndirectCommandsLayoutNVX = OP_vkCreateIndirectCommandsLayoutNVX;
16392 stream->write(&opcode_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
16393 stream->write(&packetSize_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016394 uint64_t cgen_var_1260;
16395 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1260, 1);
16396 stream->write((uint64_t*)&cgen_var_1260, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016397 marshal_VkIndirectCommandsLayoutCreateInfoNVX(stream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016398 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016399 uint64_t cgen_var_1261 = (uint64_t)(uintptr_t)local_pAllocator;
16400 stream->putBe64(cgen_var_1261);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016401 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016402 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016403 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016404 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016405 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016406 uint64_t cgen_var_1262;
16407 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1262, 1);
16408 stream->write((uint64_t*)&cgen_var_1262, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016409 stream->setHandleMapping(resources->unwrapMapping());
16410 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080016411 uint64_t cgen_var_1263;
16412 stream->read((uint64_t*)&cgen_var_1263, 8);
16413 stream->handleMapping()->mapHandles_u64_VkIndirectCommandsLayoutNVX(&cgen_var_1263, (VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016414 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016415 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
16416 stream->read(&vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016417 countingStream->clearPool();
16418 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016419 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016420 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
16421}
16422
16423void VkEncoder::vkDestroyIndirectCommandsLayoutNVX(
16424 VkDevice device,
16425 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
16426 const VkAllocationCallbacks* pAllocator)
16427{
16428 auto stream = mImpl->stream();
16429 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016430 auto resources = mImpl->resources();
16431 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016432 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016433 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016434 VkIndirectCommandsLayoutNVX local_indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016435 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016436 local_device = device;
16437 local_indirectCommandsLayout = indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016438 local_pAllocator = nullptr;
16439 if (pAllocator)
16440 {
16441 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16442 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16443 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016444 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016445 countingStream->rewind();
16446 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016447 uint64_t cgen_var_1264;
16448 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1264, 1);
16449 countingStream->write((uint64_t*)&cgen_var_1264, 1 * 8);
16450 uint64_t cgen_var_1265;
16451 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1265, 1);
16452 countingStream->write((uint64_t*)&cgen_var_1265, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016453 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016454 uint64_t cgen_var_1266 = (uint64_t)(uintptr_t)local_pAllocator;
16455 countingStream->putBe64(cgen_var_1266);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016456 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016457 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016458 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016459 }
16460 }
16461 uint32_t packetSize_vkDestroyIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16462 countingStream->rewind();
16463 uint32_t opcode_vkDestroyIndirectCommandsLayoutNVX = OP_vkDestroyIndirectCommandsLayoutNVX;
16464 stream->write(&opcode_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
16465 stream->write(&packetSize_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016466 uint64_t cgen_var_1267;
16467 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1267, 1);
16468 stream->write((uint64_t*)&cgen_var_1267, 1 * 8);
16469 uint64_t cgen_var_1268;
16470 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1268, 1);
16471 stream->write((uint64_t*)&cgen_var_1268, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016472 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016473 uint64_t cgen_var_1269 = (uint64_t)(uintptr_t)local_pAllocator;
16474 stream->putBe64(cgen_var_1269);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016475 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016476 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016477 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016478 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016479 resources->destroyMapping()->mapHandles_VkIndirectCommandsLayoutNVX((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016480}
16481
16482VkResult VkEncoder::vkCreateObjectTableNVX(
16483 VkDevice device,
16484 const VkObjectTableCreateInfoNVX* pCreateInfo,
16485 const VkAllocationCallbacks* pAllocator,
16486 VkObjectTableNVX* pObjectTable)
16487{
16488 auto stream = mImpl->stream();
16489 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016490 auto resources = mImpl->resources();
16491 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016492 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016493 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016494 VkObjectTableCreateInfoNVX* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016495 VkAllocationCallbacks* local_pAllocator;
16496 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016497 local_pCreateInfo = nullptr;
16498 if (pCreateInfo)
16499 {
16500 local_pCreateInfo = (VkObjectTableCreateInfoNVX*)pool->alloc(sizeof(const VkObjectTableCreateInfoNVX));
16501 deepcopy_VkObjectTableCreateInfoNVX(pool, pCreateInfo, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
16502 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016503 local_pAllocator = nullptr;
16504 if (pAllocator)
16505 {
16506 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16507 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16508 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016509 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016510 countingStream->rewind();
16511 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016512 uint64_t cgen_var_1270;
16513 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1270, 1);
16514 countingStream->write((uint64_t*)&cgen_var_1270, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016515 marshal_VkObjectTableCreateInfoNVX(countingStream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016516 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016517 uint64_t cgen_var_1271 = (uint64_t)(uintptr_t)local_pAllocator;
16518 countingStream->putBe64(cgen_var_1271);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016519 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016520 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016521 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016522 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080016523 uint64_t cgen_var_1272;
16524 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1272, 1);
16525 countingStream->write((uint64_t*)&cgen_var_1272, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016526 }
16527 uint32_t packetSize_vkCreateObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16528 countingStream->rewind();
16529 uint32_t opcode_vkCreateObjectTableNVX = OP_vkCreateObjectTableNVX;
16530 stream->write(&opcode_vkCreateObjectTableNVX, sizeof(uint32_t));
16531 stream->write(&packetSize_vkCreateObjectTableNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016532 uint64_t cgen_var_1273;
16533 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1273, 1);
16534 stream->write((uint64_t*)&cgen_var_1273, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016535 marshal_VkObjectTableCreateInfoNVX(stream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016536 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016537 uint64_t cgen_var_1274 = (uint64_t)(uintptr_t)local_pAllocator;
16538 stream->putBe64(cgen_var_1274);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016539 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016540 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016541 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016542 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016543 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016544 uint64_t cgen_var_1275;
16545 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1275, 1);
16546 stream->write((uint64_t*)&cgen_var_1275, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016547 stream->setHandleMapping(resources->unwrapMapping());
16548 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080016549 uint64_t cgen_var_1276;
16550 stream->read((uint64_t*)&cgen_var_1276, 8);
16551 stream->handleMapping()->mapHandles_u64_VkObjectTableNVX(&cgen_var_1276, (VkObjectTableNVX*)pObjectTable, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016552 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016553 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
16554 stream->read(&vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016555 countingStream->clearPool();
16556 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016557 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016558 return vkCreateObjectTableNVX_VkResult_return;
16559}
16560
16561void VkEncoder::vkDestroyObjectTableNVX(
16562 VkDevice device,
16563 VkObjectTableNVX objectTable,
16564 const VkAllocationCallbacks* pAllocator)
16565{
16566 auto stream = mImpl->stream();
16567 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016568 auto resources = mImpl->resources();
16569 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016570 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016571 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016572 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016573 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016574 local_device = device;
16575 local_objectTable = objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016576 local_pAllocator = nullptr;
16577 if (pAllocator)
16578 {
16579 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16580 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16581 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016582 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016583 countingStream->rewind();
16584 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016585 uint64_t cgen_var_1277;
16586 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1277, 1);
16587 countingStream->write((uint64_t*)&cgen_var_1277, 1 * 8);
16588 uint64_t cgen_var_1278;
16589 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1278, 1);
16590 countingStream->write((uint64_t*)&cgen_var_1278, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016591 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016592 uint64_t cgen_var_1279 = (uint64_t)(uintptr_t)local_pAllocator;
16593 countingStream->putBe64(cgen_var_1279);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016594 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016595 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016596 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016597 }
16598 }
16599 uint32_t packetSize_vkDestroyObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16600 countingStream->rewind();
16601 uint32_t opcode_vkDestroyObjectTableNVX = OP_vkDestroyObjectTableNVX;
16602 stream->write(&opcode_vkDestroyObjectTableNVX, sizeof(uint32_t));
16603 stream->write(&packetSize_vkDestroyObjectTableNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016604 uint64_t cgen_var_1280;
16605 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1280, 1);
16606 stream->write((uint64_t*)&cgen_var_1280, 1 * 8);
16607 uint64_t cgen_var_1281;
16608 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1281, 1);
16609 stream->write((uint64_t*)&cgen_var_1281, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016610 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016611 uint64_t cgen_var_1282 = (uint64_t)(uintptr_t)local_pAllocator;
16612 stream->putBe64(cgen_var_1282);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016613 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016614 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016615 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016616 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016617 resources->destroyMapping()->mapHandles_VkObjectTableNVX((VkObjectTableNVX*)&objectTable);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016618}
16619
16620VkResult VkEncoder::vkRegisterObjectsNVX(
16621 VkDevice device,
16622 VkObjectTableNVX objectTable,
16623 uint32_t objectCount,
16624 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
16625 const uint32_t* pObjectIndices)
16626{
16627 auto stream = mImpl->stream();
16628 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016629 auto resources = mImpl->resources();
16630 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016631 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016632 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016633 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016634 uint32_t local_objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016635 VkObjectTableEntryNVX** local_ppObjectTableEntries;
16636 uint32_t* local_pObjectIndices;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016637 local_device = device;
16638 local_objectTable = objectTable;
16639 local_objectCount = objectCount;
16640 (void)ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016641 local_pObjectIndices = nullptr;
16642 if (pObjectIndices)
16643 {
16644 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
16645 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016646 countingStream->rewind();
16647 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016648 uint64_t cgen_var_1283;
16649 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1283, 1);
16650 countingStream->write((uint64_t*)&cgen_var_1283, 1 * 8);
16651 uint64_t cgen_var_1284;
16652 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1284, 1);
16653 countingStream->write((uint64_t*)&cgen_var_1284, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016654 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080016655 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016656 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016657 }
16658 uint32_t packetSize_vkRegisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16659 countingStream->rewind();
16660 uint32_t opcode_vkRegisterObjectsNVX = OP_vkRegisterObjectsNVX;
16661 stream->write(&opcode_vkRegisterObjectsNVX, sizeof(uint32_t));
16662 stream->write(&packetSize_vkRegisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016663 uint64_t cgen_var_1285;
16664 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1285, 1);
16665 stream->write((uint64_t*)&cgen_var_1285, 1 * 8);
16666 uint64_t cgen_var_1286;
16667 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1286, 1);
16668 stream->write((uint64_t*)&cgen_var_1286, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016669 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080016670 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016671 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016672 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
16673 stream->read(&vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016674 countingStream->clearPool();
16675 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016676 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016677 return vkRegisterObjectsNVX_VkResult_return;
16678}
16679
16680VkResult VkEncoder::vkUnregisterObjectsNVX(
16681 VkDevice device,
16682 VkObjectTableNVX objectTable,
16683 uint32_t objectCount,
16684 const VkObjectEntryTypeNVX* pObjectEntryTypes,
16685 const uint32_t* pObjectIndices)
16686{
16687 auto stream = mImpl->stream();
16688 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016689 auto resources = mImpl->resources();
16690 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016691 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016692 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016693 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016694 uint32_t local_objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016695 VkObjectEntryTypeNVX* local_pObjectEntryTypes;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016696 uint32_t* local_pObjectIndices;
16697 local_device = device;
16698 local_objectTable = objectTable;
16699 local_objectCount = objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016700 local_pObjectEntryTypes = nullptr;
16701 if (pObjectEntryTypes)
16702 {
16703 local_pObjectEntryTypes = (VkObjectEntryTypeNVX*)pool->dupArray(pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
16704 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016705 local_pObjectIndices = nullptr;
16706 if (pObjectIndices)
16707 {
16708 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
16709 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016710 countingStream->rewind();
16711 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016712 uint64_t cgen_var_1287;
16713 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1287, 1);
16714 countingStream->write((uint64_t*)&cgen_var_1287, 1 * 8);
16715 uint64_t cgen_var_1288;
16716 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1288, 1);
16717 countingStream->write((uint64_t*)&cgen_var_1288, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016718 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
16719 countingStream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
16720 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016721 }
16722 uint32_t packetSize_vkUnregisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16723 countingStream->rewind();
16724 uint32_t opcode_vkUnregisterObjectsNVX = OP_vkUnregisterObjectsNVX;
16725 stream->write(&opcode_vkUnregisterObjectsNVX, sizeof(uint32_t));
16726 stream->write(&packetSize_vkUnregisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016727 uint64_t cgen_var_1289;
16728 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1289, 1);
16729 stream->write((uint64_t*)&cgen_var_1289, 1 * 8);
16730 uint64_t cgen_var_1290;
16731 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1290, 1);
16732 stream->write((uint64_t*)&cgen_var_1290, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016733 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
16734 stream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
16735 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016736 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
16737 stream->read(&vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016738 countingStream->clearPool();
16739 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016740 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016741 return vkUnregisterObjectsNVX_VkResult_return;
16742}
16743
16744void VkEncoder::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
16745 VkPhysicalDevice physicalDevice,
16746 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
16747 VkDeviceGeneratedCommandsLimitsNVX* pLimits)
16748{
16749 auto stream = mImpl->stream();
16750 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016751 auto resources = mImpl->resources();
16752 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016753 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016754 VkPhysicalDevice local_physicalDevice;
16755 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016756 countingStream->rewind();
16757 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016758 uint64_t cgen_var_1291;
16759 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1291, 1);
16760 countingStream->write((uint64_t*)&cgen_var_1291, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016761 marshal_VkDeviceGeneratedCommandsFeaturesNVX(countingStream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
16762 marshal_VkDeviceGeneratedCommandsLimitsNVX(countingStream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
16763 }
16764 uint32_t packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16765 countingStream->rewind();
16766 uint32_t opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = OP_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX;
16767 stream->write(&opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
16768 stream->write(&packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016769 uint64_t cgen_var_1292;
16770 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1292, 1);
16771 stream->write((uint64_t*)&cgen_var_1292, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016772 marshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
16773 marshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
16774 unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
16775 unmarshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
16776}
16777
16778#endif
16779#ifdef VK_NV_clip_space_w_scaling
16780void VkEncoder::vkCmdSetViewportWScalingNV(
16781 VkCommandBuffer commandBuffer,
16782 uint32_t firstViewport,
16783 uint32_t viewportCount,
16784 const VkViewportWScalingNV* pViewportWScalings)
16785{
16786 auto stream = mImpl->stream();
16787 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016788 auto resources = mImpl->resources();
16789 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016790 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016791 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016792 uint32_t local_firstViewport;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016793 uint32_t local_viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016794 VkViewportWScalingNV* local_pViewportWScalings;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016795 local_commandBuffer = commandBuffer;
16796 local_firstViewport = firstViewport;
16797 local_viewportCount = viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016798 local_pViewportWScalings = nullptr;
16799 if (pViewportWScalings)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016800 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016801 local_pViewportWScalings = (VkViewportWScalingNV*)pool->alloc(((viewportCount)) * sizeof(const VkViewportWScalingNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016802 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
16803 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016804 deepcopy_VkViewportWScalingNV(pool, pViewportWScalings + i, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
16805 }
16806 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016807 countingStream->rewind();
16808 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016809 uint64_t cgen_var_1293;
16810 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1293, 1);
16811 countingStream->write((uint64_t*)&cgen_var_1293, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016812 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
16813 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
16814 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
16815 {
16816 marshal_VkViewportWScalingNV(countingStream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016817 }
16818 }
16819 uint32_t packetSize_vkCmdSetViewportWScalingNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16820 countingStream->rewind();
16821 uint32_t opcode_vkCmdSetViewportWScalingNV = OP_vkCmdSetViewportWScalingNV;
16822 stream->write(&opcode_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
16823 stream->write(&packetSize_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016824 uint64_t cgen_var_1294;
16825 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1294, 1);
16826 stream->write((uint64_t*)&cgen_var_1294, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016827 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
16828 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016829 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
16830 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016831 marshal_VkViewportWScalingNV(stream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016832 }
16833}
16834
16835#endif
16836#ifdef VK_EXT_direct_mode_display
16837VkResult VkEncoder::vkReleaseDisplayEXT(
16838 VkPhysicalDevice physicalDevice,
16839 VkDisplayKHR display)
16840{
16841 auto stream = mImpl->stream();
16842 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016843 auto resources = mImpl->resources();
16844 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016845 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016846 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016847 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016848 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016849 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016850 countingStream->rewind();
16851 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016852 uint64_t cgen_var_1295;
16853 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1295, 1);
16854 countingStream->write((uint64_t*)&cgen_var_1295, 1 * 8);
16855 uint64_t cgen_var_1296;
16856 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1296, 1);
16857 countingStream->write((uint64_t*)&cgen_var_1296, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016858 }
16859 uint32_t packetSize_vkReleaseDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16860 countingStream->rewind();
16861 uint32_t opcode_vkReleaseDisplayEXT = OP_vkReleaseDisplayEXT;
16862 stream->write(&opcode_vkReleaseDisplayEXT, sizeof(uint32_t));
16863 stream->write(&packetSize_vkReleaseDisplayEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016864 uint64_t cgen_var_1297;
16865 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1297, 1);
16866 stream->write((uint64_t*)&cgen_var_1297, 1 * 8);
16867 uint64_t cgen_var_1298;
16868 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1298, 1);
16869 stream->write((uint64_t*)&cgen_var_1298, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016870 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
16871 stream->read(&vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016872 countingStream->clearPool();
16873 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016874 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016875 return vkReleaseDisplayEXT_VkResult_return;
16876}
16877
16878#endif
16879#ifdef VK_EXT_acquire_xlib_display
16880VkResult VkEncoder::vkAcquireXlibDisplayEXT(
16881 VkPhysicalDevice physicalDevice,
16882 Display* dpy,
16883 VkDisplayKHR display)
16884{
16885 auto stream = mImpl->stream();
16886 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016887 auto resources = mImpl->resources();
16888 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016889 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016890 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016891 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016892 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016893 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016894 countingStream->rewind();
16895 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016896 uint64_t cgen_var_1299;
16897 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1299, 1);
16898 countingStream->write((uint64_t*)&cgen_var_1299, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016899 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016900 uint64_t cgen_var_1300;
16901 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1300, 1);
16902 countingStream->write((uint64_t*)&cgen_var_1300, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016903 }
16904 uint32_t packetSize_vkAcquireXlibDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16905 countingStream->rewind();
16906 uint32_t opcode_vkAcquireXlibDisplayEXT = OP_vkAcquireXlibDisplayEXT;
16907 stream->write(&opcode_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
16908 stream->write(&packetSize_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016909 uint64_t cgen_var_1301;
16910 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1301, 1);
16911 stream->write((uint64_t*)&cgen_var_1301, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016912 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016913 uint64_t cgen_var_1302;
16914 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1302, 1);
16915 stream->write((uint64_t*)&cgen_var_1302, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016916 stream->read((Display*)dpy, sizeof(Display));
16917 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
16918 stream->read(&vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016919 countingStream->clearPool();
16920 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016921 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016922 return vkAcquireXlibDisplayEXT_VkResult_return;
16923}
16924
16925VkResult VkEncoder::vkGetRandROutputDisplayEXT(
16926 VkPhysicalDevice physicalDevice,
16927 Display* dpy,
16928 RROutput rrOutput,
16929 VkDisplayKHR* pDisplay)
16930{
16931 auto stream = mImpl->stream();
16932 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016933 auto resources = mImpl->resources();
16934 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016935 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016936 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016937 RROutput local_rrOutput;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016938 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016939 local_rrOutput = rrOutput;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016940 countingStream->rewind();
16941 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016942 uint64_t cgen_var_1303;
16943 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1303, 1);
16944 countingStream->write((uint64_t*)&cgen_var_1303, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016945 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016946 countingStream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016947 uint64_t cgen_var_1304;
16948 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1304, 1);
16949 countingStream->write((uint64_t*)&cgen_var_1304, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016950 }
16951 uint32_t packetSize_vkGetRandROutputDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16952 countingStream->rewind();
16953 uint32_t opcode_vkGetRandROutputDisplayEXT = OP_vkGetRandROutputDisplayEXT;
16954 stream->write(&opcode_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
16955 stream->write(&packetSize_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016956 uint64_t cgen_var_1305;
16957 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1305, 1);
16958 stream->write((uint64_t*)&cgen_var_1305, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016959 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016960 stream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yange4008a02018-11-18 12:22:48 -080016961 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016962 uint64_t cgen_var_1306;
16963 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1306, 1);
16964 stream->write((uint64_t*)&cgen_var_1306, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016965 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016966 stream->read((Display*)dpy, sizeof(Display));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016967 uint64_t cgen_var_1307;
16968 stream->read((uint64_t*)&cgen_var_1307, 8);
16969 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(&cgen_var_1307, (VkDisplayKHR*)pDisplay, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016970 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
16971 stream->read(&vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016972 countingStream->clearPool();
16973 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016974 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016975 return vkGetRandROutputDisplayEXT_VkResult_return;
16976}
16977
16978#endif
16979#ifdef VK_EXT_display_surface_counter
16980VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2EXT(
16981 VkPhysicalDevice physicalDevice,
16982 VkSurfaceKHR surface,
16983 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
16984{
16985 auto stream = mImpl->stream();
16986 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016987 auto resources = mImpl->resources();
16988 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016989 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016990 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016991 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016992 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016993 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016994 countingStream->rewind();
16995 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016996 uint64_t cgen_var_1308;
16997 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1308, 1);
16998 countingStream->write((uint64_t*)&cgen_var_1308, 1 * 8);
16999 uint64_t cgen_var_1309;
17000 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1309, 1);
17001 countingStream->write((uint64_t*)&cgen_var_1309, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017002 marshal_VkSurfaceCapabilities2EXT(countingStream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
17003 }
17004 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17005 countingStream->rewind();
17006 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT = OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT;
17007 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
17008 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017009 uint64_t cgen_var_1310;
17010 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1310, 1);
17011 stream->write((uint64_t*)&cgen_var_1310, 1 * 8);
17012 uint64_t cgen_var_1311;
17013 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1311, 1);
17014 stream->write((uint64_t*)&cgen_var_1311, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017015 marshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
17016 unmarshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
17017 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
17018 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017019 countingStream->clearPool();
17020 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017021 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017022 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
17023}
17024
17025#endif
17026#ifdef VK_EXT_display_control
17027VkResult VkEncoder::vkDisplayPowerControlEXT(
17028 VkDevice device,
17029 VkDisplayKHR display,
17030 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
17031{
17032 auto stream = mImpl->stream();
17033 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017034 auto resources = mImpl->resources();
17035 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017036 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017037 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017038 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017039 VkDisplayPowerInfoEXT* local_pDisplayPowerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017040 local_device = device;
17041 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017042 local_pDisplayPowerInfo = nullptr;
17043 if (pDisplayPowerInfo)
17044 {
17045 local_pDisplayPowerInfo = (VkDisplayPowerInfoEXT*)pool->alloc(sizeof(const VkDisplayPowerInfoEXT));
17046 deepcopy_VkDisplayPowerInfoEXT(pool, pDisplayPowerInfo, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
17047 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017048 countingStream->rewind();
17049 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017050 uint64_t cgen_var_1312;
17051 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1312, 1);
17052 countingStream->write((uint64_t*)&cgen_var_1312, 1 * 8);
17053 uint64_t cgen_var_1313;
17054 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1313, 1);
17055 countingStream->write((uint64_t*)&cgen_var_1313, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017056 marshal_VkDisplayPowerInfoEXT(countingStream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017057 }
17058 uint32_t packetSize_vkDisplayPowerControlEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17059 countingStream->rewind();
17060 uint32_t opcode_vkDisplayPowerControlEXT = OP_vkDisplayPowerControlEXT;
17061 stream->write(&opcode_vkDisplayPowerControlEXT, sizeof(uint32_t));
17062 stream->write(&packetSize_vkDisplayPowerControlEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017063 uint64_t cgen_var_1314;
17064 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1314, 1);
17065 stream->write((uint64_t*)&cgen_var_1314, 1 * 8);
17066 uint64_t cgen_var_1315;
17067 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1315, 1);
17068 stream->write((uint64_t*)&cgen_var_1315, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017069 marshal_VkDisplayPowerInfoEXT(stream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017070 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
17071 stream->read(&vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017072 countingStream->clearPool();
17073 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017074 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017075 return vkDisplayPowerControlEXT_VkResult_return;
17076}
17077
17078VkResult VkEncoder::vkRegisterDeviceEventEXT(
17079 VkDevice device,
17080 const VkDeviceEventInfoEXT* pDeviceEventInfo,
17081 const VkAllocationCallbacks* pAllocator,
17082 VkFence* pFence)
17083{
17084 auto stream = mImpl->stream();
17085 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017086 auto resources = mImpl->resources();
17087 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017088 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017089 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017090 VkDeviceEventInfoEXT* local_pDeviceEventInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017091 VkAllocationCallbacks* local_pAllocator;
17092 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017093 local_pDeviceEventInfo = nullptr;
17094 if (pDeviceEventInfo)
17095 {
17096 local_pDeviceEventInfo = (VkDeviceEventInfoEXT*)pool->alloc(sizeof(const VkDeviceEventInfoEXT));
17097 deepcopy_VkDeviceEventInfoEXT(pool, pDeviceEventInfo, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
17098 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017099 local_pAllocator = nullptr;
17100 if (pAllocator)
17101 {
17102 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17103 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17104 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017105 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017106 countingStream->rewind();
17107 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017108 uint64_t cgen_var_1316;
17109 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1316, 1);
17110 countingStream->write((uint64_t*)&cgen_var_1316, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017111 marshal_VkDeviceEventInfoEXT(countingStream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017112 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017113 uint64_t cgen_var_1317 = (uint64_t)(uintptr_t)local_pAllocator;
17114 countingStream->putBe64(cgen_var_1317);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017115 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017116 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017117 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017118 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017119 uint64_t cgen_var_1318;
17120 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1318, 1);
17121 countingStream->write((uint64_t*)&cgen_var_1318, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017122 }
17123 uint32_t packetSize_vkRegisterDeviceEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17124 countingStream->rewind();
17125 uint32_t opcode_vkRegisterDeviceEventEXT = OP_vkRegisterDeviceEventEXT;
17126 stream->write(&opcode_vkRegisterDeviceEventEXT, sizeof(uint32_t));
17127 stream->write(&packetSize_vkRegisterDeviceEventEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017128 uint64_t cgen_var_1319;
17129 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1319, 1);
17130 stream->write((uint64_t*)&cgen_var_1319, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017131 marshal_VkDeviceEventInfoEXT(stream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017132 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017133 uint64_t cgen_var_1320 = (uint64_t)(uintptr_t)local_pAllocator;
17134 stream->putBe64(cgen_var_1320);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017135 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017136 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017137 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017138 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017139 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017140 uint64_t cgen_var_1321;
17141 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1321, 1);
17142 stream->write((uint64_t*)&cgen_var_1321, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017143 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080017144 uint64_t cgen_var_1322;
17145 stream->read((uint64_t*)&cgen_var_1322, 8);
17146 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1322, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017147 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
17148 stream->read(&vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017149 countingStream->clearPool();
17150 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017151 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017152 return vkRegisterDeviceEventEXT_VkResult_return;
17153}
17154
17155VkResult VkEncoder::vkRegisterDisplayEventEXT(
17156 VkDevice device,
17157 VkDisplayKHR display,
17158 const VkDisplayEventInfoEXT* pDisplayEventInfo,
17159 const VkAllocationCallbacks* pAllocator,
17160 VkFence* pFence)
17161{
17162 auto stream = mImpl->stream();
17163 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017164 auto resources = mImpl->resources();
17165 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017166 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017167 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017168 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017169 VkDisplayEventInfoEXT* local_pDisplayEventInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017170 VkAllocationCallbacks* local_pAllocator;
17171 local_device = device;
17172 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017173 local_pDisplayEventInfo = nullptr;
17174 if (pDisplayEventInfo)
17175 {
17176 local_pDisplayEventInfo = (VkDisplayEventInfoEXT*)pool->alloc(sizeof(const VkDisplayEventInfoEXT));
17177 deepcopy_VkDisplayEventInfoEXT(pool, pDisplayEventInfo, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
17178 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017179 local_pAllocator = nullptr;
17180 if (pAllocator)
17181 {
17182 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17183 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17184 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017185 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017186 countingStream->rewind();
17187 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017188 uint64_t cgen_var_1323;
17189 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1323, 1);
17190 countingStream->write((uint64_t*)&cgen_var_1323, 1 * 8);
17191 uint64_t cgen_var_1324;
17192 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1324, 1);
17193 countingStream->write((uint64_t*)&cgen_var_1324, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017194 marshal_VkDisplayEventInfoEXT(countingStream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017195 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017196 uint64_t cgen_var_1325 = (uint64_t)(uintptr_t)local_pAllocator;
17197 countingStream->putBe64(cgen_var_1325);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017198 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017199 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017200 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017201 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017202 uint64_t cgen_var_1326;
17203 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1326, 1);
17204 countingStream->write((uint64_t*)&cgen_var_1326, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017205 }
17206 uint32_t packetSize_vkRegisterDisplayEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17207 countingStream->rewind();
17208 uint32_t opcode_vkRegisterDisplayEventEXT = OP_vkRegisterDisplayEventEXT;
17209 stream->write(&opcode_vkRegisterDisplayEventEXT, sizeof(uint32_t));
17210 stream->write(&packetSize_vkRegisterDisplayEventEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017211 uint64_t cgen_var_1327;
17212 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1327, 1);
17213 stream->write((uint64_t*)&cgen_var_1327, 1 * 8);
17214 uint64_t cgen_var_1328;
17215 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1328, 1);
17216 stream->write((uint64_t*)&cgen_var_1328, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017217 marshal_VkDisplayEventInfoEXT(stream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017218 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017219 uint64_t cgen_var_1329 = (uint64_t)(uintptr_t)local_pAllocator;
17220 stream->putBe64(cgen_var_1329);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017221 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017222 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017223 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017224 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017225 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017226 uint64_t cgen_var_1330;
17227 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1330, 1);
17228 stream->write((uint64_t*)&cgen_var_1330, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017229 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080017230 uint64_t cgen_var_1331;
17231 stream->read((uint64_t*)&cgen_var_1331, 8);
17232 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1331, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017233 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
17234 stream->read(&vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017235 countingStream->clearPool();
17236 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017237 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017238 return vkRegisterDisplayEventEXT_VkResult_return;
17239}
17240
17241VkResult VkEncoder::vkGetSwapchainCounterEXT(
17242 VkDevice device,
17243 VkSwapchainKHR swapchain,
17244 VkSurfaceCounterFlagBitsEXT counter,
17245 uint64_t* pCounterValue)
17246{
17247 auto stream = mImpl->stream();
17248 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017249 auto resources = mImpl->resources();
17250 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017251 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017252 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017253 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017254 VkSurfaceCounterFlagBitsEXT local_counter;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017255 local_device = device;
17256 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017257 local_counter = counter;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017258 countingStream->rewind();
17259 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017260 uint64_t cgen_var_1332;
17261 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1332, 1);
17262 countingStream->write((uint64_t*)&cgen_var_1332, 1 * 8);
17263 uint64_t cgen_var_1333;
17264 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1333, 1);
17265 countingStream->write((uint64_t*)&cgen_var_1333, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017266 countingStream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017267 countingStream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
17268 }
17269 uint32_t packetSize_vkGetSwapchainCounterEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17270 countingStream->rewind();
17271 uint32_t opcode_vkGetSwapchainCounterEXT = OP_vkGetSwapchainCounterEXT;
17272 stream->write(&opcode_vkGetSwapchainCounterEXT, sizeof(uint32_t));
17273 stream->write(&packetSize_vkGetSwapchainCounterEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017274 uint64_t cgen_var_1334;
17275 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1334, 1);
17276 stream->write((uint64_t*)&cgen_var_1334, 1 * 8);
17277 uint64_t cgen_var_1335;
17278 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1335, 1);
17279 stream->write((uint64_t*)&cgen_var_1335, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017280 stream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017281 stream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
17282 stream->read((uint64_t*)pCounterValue, sizeof(uint64_t));
17283 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
17284 stream->read(&vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017285 countingStream->clearPool();
17286 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017287 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017288 return vkGetSwapchainCounterEXT_VkResult_return;
17289}
17290
17291#endif
17292#ifdef VK_GOOGLE_display_timing
17293VkResult VkEncoder::vkGetRefreshCycleDurationGOOGLE(
17294 VkDevice device,
17295 VkSwapchainKHR swapchain,
17296 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
17297{
17298 auto stream = mImpl->stream();
17299 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017300 auto resources = mImpl->resources();
17301 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017302 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017303 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017304 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017305 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017306 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017307 countingStream->rewind();
17308 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017309 uint64_t cgen_var_1336;
17310 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1336, 1);
17311 countingStream->write((uint64_t*)&cgen_var_1336, 1 * 8);
17312 uint64_t cgen_var_1337;
17313 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1337, 1);
17314 countingStream->write((uint64_t*)&cgen_var_1337, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017315 marshal_VkRefreshCycleDurationGOOGLE(countingStream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
17316 }
17317 uint32_t packetSize_vkGetRefreshCycleDurationGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17318 countingStream->rewind();
17319 uint32_t opcode_vkGetRefreshCycleDurationGOOGLE = OP_vkGetRefreshCycleDurationGOOGLE;
17320 stream->write(&opcode_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
17321 stream->write(&packetSize_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017322 uint64_t cgen_var_1338;
17323 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1338, 1);
17324 stream->write((uint64_t*)&cgen_var_1338, 1 * 8);
17325 uint64_t cgen_var_1339;
17326 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1339, 1);
17327 stream->write((uint64_t*)&cgen_var_1339, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017328 marshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
17329 unmarshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
17330 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
17331 stream->read(&vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017332 countingStream->clearPool();
17333 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017334 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017335 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
17336}
17337
17338VkResult VkEncoder::vkGetPastPresentationTimingGOOGLE(
17339 VkDevice device,
17340 VkSwapchainKHR swapchain,
17341 uint32_t* pPresentationTimingCount,
17342 VkPastPresentationTimingGOOGLE* pPresentationTimings)
17343{
17344 auto stream = mImpl->stream();
17345 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017346 auto resources = mImpl->resources();
17347 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017348 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017349 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017350 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017351 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017352 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017353 countingStream->rewind();
17354 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017355 uint64_t cgen_var_1340;
17356 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1340, 1);
17357 countingStream->write((uint64_t*)&cgen_var_1340, 1 * 8);
17358 uint64_t cgen_var_1341;
17359 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1341, 1);
17360 countingStream->write((uint64_t*)&cgen_var_1341, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017361 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017362 uint64_t cgen_var_1342 = (uint64_t)(uintptr_t)pPresentationTimingCount;
17363 countingStream->putBe64(cgen_var_1342);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017364 if (pPresentationTimingCount)
17365 {
17366 countingStream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
17367 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017368 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017369 uint64_t cgen_var_1343 = (uint64_t)(uintptr_t)pPresentationTimings;
17370 countingStream->putBe64(cgen_var_1343);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017371 if (pPresentationTimings)
17372 {
17373 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
17374 {
17375 marshal_VkPastPresentationTimingGOOGLE(countingStream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
17376 }
17377 }
17378 }
17379 uint32_t packetSize_vkGetPastPresentationTimingGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17380 countingStream->rewind();
17381 uint32_t opcode_vkGetPastPresentationTimingGOOGLE = OP_vkGetPastPresentationTimingGOOGLE;
17382 stream->write(&opcode_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
17383 stream->write(&packetSize_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017384 uint64_t cgen_var_1344;
17385 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1344, 1);
17386 stream->write((uint64_t*)&cgen_var_1344, 1 * 8);
17387 uint64_t cgen_var_1345;
17388 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1345, 1);
17389 stream->write((uint64_t*)&cgen_var_1345, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017390 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017391 uint64_t cgen_var_1346 = (uint64_t)(uintptr_t)pPresentationTimingCount;
17392 stream->putBe64(cgen_var_1346);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017393 if (pPresentationTimingCount)
17394 {
17395 stream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
17396 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017397 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017398 uint64_t cgen_var_1347 = (uint64_t)(uintptr_t)pPresentationTimings;
17399 stream->putBe64(cgen_var_1347);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017400 if (pPresentationTimings)
17401 {
17402 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
17403 {
17404 marshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
17405 }
17406 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017407 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017408 uint32_t* check_pPresentationTimingCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017409 check_pPresentationTimingCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017410 if (pPresentationTimingCount)
17411 {
17412 if (!(check_pPresentationTimingCount))
17413 {
17414 fprintf(stderr, "fatal: pPresentationTimingCount inconsistent between guest and host\n");
17415 }
17416 stream->read((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
17417 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017418 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017419 VkPastPresentationTimingGOOGLE* check_pPresentationTimings;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017420 check_pPresentationTimings = (VkPastPresentationTimingGOOGLE*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017421 if (pPresentationTimings)
17422 {
17423 if (!(check_pPresentationTimings))
17424 {
17425 fprintf(stderr, "fatal: pPresentationTimings inconsistent between guest and host\n");
17426 }
17427 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
17428 {
17429 unmarshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
17430 }
17431 }
17432 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
17433 stream->read(&vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017434 countingStream->clearPool();
17435 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017436 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017437 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
17438}
17439
17440#endif
17441#ifdef VK_NV_sample_mask_override_coverage
17442#endif
17443#ifdef VK_NV_geometry_shader_passthrough
17444#endif
17445#ifdef VK_NV_viewport_array2
17446#endif
17447#ifdef VK_NVX_multiview_per_view_attributes
17448#endif
17449#ifdef VK_NV_viewport_swizzle
17450#endif
17451#ifdef VK_EXT_discard_rectangles
17452void VkEncoder::vkCmdSetDiscardRectangleEXT(
17453 VkCommandBuffer commandBuffer,
17454 uint32_t firstDiscardRectangle,
17455 uint32_t discardRectangleCount,
17456 const VkRect2D* pDiscardRectangles)
17457{
17458 auto stream = mImpl->stream();
17459 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017460 auto resources = mImpl->resources();
17461 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017462 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017463 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017464 uint32_t local_firstDiscardRectangle;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017465 uint32_t local_discardRectangleCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017466 VkRect2D* local_pDiscardRectangles;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017467 local_commandBuffer = commandBuffer;
17468 local_firstDiscardRectangle = firstDiscardRectangle;
17469 local_discardRectangleCount = discardRectangleCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017470 local_pDiscardRectangles = nullptr;
17471 if (pDiscardRectangles)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017472 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017473 local_pDiscardRectangles = (VkRect2D*)pool->alloc(((discardRectangleCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017474 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
17475 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017476 deepcopy_VkRect2D(pool, pDiscardRectangles + i, (VkRect2D*)(local_pDiscardRectangles + i));
17477 }
17478 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017479 countingStream->rewind();
17480 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017481 uint64_t cgen_var_1350;
17482 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1350, 1);
17483 countingStream->write((uint64_t*)&cgen_var_1350, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017484 countingStream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
17485 countingStream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
17486 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
17487 {
17488 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017489 }
17490 }
17491 uint32_t packetSize_vkCmdSetDiscardRectangleEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17492 countingStream->rewind();
17493 uint32_t opcode_vkCmdSetDiscardRectangleEXT = OP_vkCmdSetDiscardRectangleEXT;
17494 stream->write(&opcode_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
17495 stream->write(&packetSize_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017496 uint64_t cgen_var_1351;
17497 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1351, 1);
17498 stream->write((uint64_t*)&cgen_var_1351, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017499 stream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
17500 stream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017501 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
17502 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017503 marshal_VkRect2D(stream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017504 }
17505}
17506
17507#endif
17508#ifdef VK_EXT_conservative_rasterization
17509#endif
17510#ifdef VK_EXT_swapchain_colorspace
17511#endif
17512#ifdef VK_EXT_hdr_metadata
17513void VkEncoder::vkSetHdrMetadataEXT(
17514 VkDevice device,
17515 uint32_t swapchainCount,
17516 const VkSwapchainKHR* pSwapchains,
17517 const VkHdrMetadataEXT* pMetadata)
17518{
17519 auto stream = mImpl->stream();
17520 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017521 auto resources = mImpl->resources();
17522 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017523 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017524 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017525 uint32_t local_swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017526 VkSwapchainKHR* local_pSwapchains;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017527 VkHdrMetadataEXT* local_pMetadata;
17528 local_device = device;
17529 local_swapchainCount = swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017530 local_pSwapchains = nullptr;
17531 if (pSwapchains)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017532 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017533 local_pSwapchains = (VkSwapchainKHR*)pool->dupArray(pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
17534 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017535 local_pMetadata = nullptr;
17536 if (pMetadata)
17537 {
17538 local_pMetadata = (VkHdrMetadataEXT*)pool->alloc(((swapchainCount)) * sizeof(const VkHdrMetadataEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017539 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
17540 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017541 deepcopy_VkHdrMetadataEXT(pool, pMetadata + i, (VkHdrMetadataEXT*)(local_pMetadata + i));
17542 }
17543 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017544 countingStream->rewind();
17545 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017546 uint64_t cgen_var_1352;
17547 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1352, 1);
17548 countingStream->write((uint64_t*)&cgen_var_1352, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017549 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017550 if (((swapchainCount)))
17551 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017552 uint64_t* cgen_var_1353;
17553 countingStream->alloc((void**)&cgen_var_1353, ((swapchainCount)) * 8);
17554 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1353, ((swapchainCount)));
17555 countingStream->write((uint64_t*)cgen_var_1353, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080017556 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017557 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
17558 {
17559 marshal_VkHdrMetadataEXT(countingStream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017560 }
17561 }
17562 uint32_t packetSize_vkSetHdrMetadataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17563 countingStream->rewind();
17564 uint32_t opcode_vkSetHdrMetadataEXT = OP_vkSetHdrMetadataEXT;
17565 stream->write(&opcode_vkSetHdrMetadataEXT, sizeof(uint32_t));
17566 stream->write(&packetSize_vkSetHdrMetadataEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017567 uint64_t cgen_var_1354;
17568 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1354, 1);
17569 stream->write((uint64_t*)&cgen_var_1354, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017570 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017571 if (((swapchainCount)))
17572 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017573 uint64_t* cgen_var_1355;
17574 stream->alloc((void**)&cgen_var_1355, ((swapchainCount)) * 8);
17575 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1355, ((swapchainCount)));
17576 stream->write((uint64_t*)cgen_var_1355, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080017577 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017578 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
17579 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017580 marshal_VkHdrMetadataEXT(stream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017581 }
17582}
17583
17584#endif
17585#ifdef VK_MVK_ios_surface
17586VkResult VkEncoder::vkCreateIOSSurfaceMVK(
17587 VkInstance instance,
17588 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
17589 const VkAllocationCallbacks* pAllocator,
17590 VkSurfaceKHR* pSurface)
17591{
17592 auto stream = mImpl->stream();
17593 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017594 auto resources = mImpl->resources();
17595 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017596 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017597 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017598 VkIOSSurfaceCreateInfoMVK* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017599 VkAllocationCallbacks* local_pAllocator;
17600 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017601 local_pCreateInfo = nullptr;
17602 if (pCreateInfo)
17603 {
17604 local_pCreateInfo = (VkIOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkIOSSurfaceCreateInfoMVK));
17605 deepcopy_VkIOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
17606 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017607 local_pAllocator = nullptr;
17608 if (pAllocator)
17609 {
17610 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17611 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17612 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017613 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017614 countingStream->rewind();
17615 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017616 uint64_t cgen_var_1356;
17617 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1356, 1);
17618 countingStream->write((uint64_t*)&cgen_var_1356, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017619 marshal_VkIOSSurfaceCreateInfoMVK(countingStream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017620 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017621 uint64_t cgen_var_1357 = (uint64_t)(uintptr_t)local_pAllocator;
17622 countingStream->putBe64(cgen_var_1357);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017623 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017624 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017625 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017626 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017627 uint64_t cgen_var_1358;
17628 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1358, 1);
17629 countingStream->write((uint64_t*)&cgen_var_1358, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017630 }
17631 uint32_t packetSize_vkCreateIOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17632 countingStream->rewind();
17633 uint32_t opcode_vkCreateIOSSurfaceMVK = OP_vkCreateIOSSurfaceMVK;
17634 stream->write(&opcode_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
17635 stream->write(&packetSize_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017636 uint64_t cgen_var_1359;
17637 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1359, 1);
17638 stream->write((uint64_t*)&cgen_var_1359, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017639 marshal_VkIOSSurfaceCreateInfoMVK(stream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017640 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017641 uint64_t cgen_var_1360 = (uint64_t)(uintptr_t)local_pAllocator;
17642 stream->putBe64(cgen_var_1360);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017643 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017644 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017645 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017646 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017647 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017648 uint64_t cgen_var_1361;
17649 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1361, 1);
17650 stream->write((uint64_t*)&cgen_var_1361, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017651 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080017652 uint64_t cgen_var_1362;
17653 stream->read((uint64_t*)&cgen_var_1362, 8);
17654 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1362, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017655 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
17656 stream->read(&vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017657 countingStream->clearPool();
17658 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017659 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017660 return vkCreateIOSSurfaceMVK_VkResult_return;
17661}
17662
17663#endif
17664#ifdef VK_MVK_macos_surface
17665VkResult VkEncoder::vkCreateMacOSSurfaceMVK(
17666 VkInstance instance,
17667 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
17668 const VkAllocationCallbacks* pAllocator,
17669 VkSurfaceKHR* pSurface)
17670{
17671 auto stream = mImpl->stream();
17672 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017673 auto resources = mImpl->resources();
17674 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017675 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017676 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017677 VkMacOSSurfaceCreateInfoMVK* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017678 VkAllocationCallbacks* local_pAllocator;
17679 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017680 local_pCreateInfo = nullptr;
17681 if (pCreateInfo)
17682 {
17683 local_pCreateInfo = (VkMacOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkMacOSSurfaceCreateInfoMVK));
17684 deepcopy_VkMacOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
17685 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017686 local_pAllocator = nullptr;
17687 if (pAllocator)
17688 {
17689 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17690 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17691 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017692 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017693 countingStream->rewind();
17694 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017695 uint64_t cgen_var_1363;
17696 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1363, 1);
17697 countingStream->write((uint64_t*)&cgen_var_1363, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017698 marshal_VkMacOSSurfaceCreateInfoMVK(countingStream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017699 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017700 uint64_t cgen_var_1364 = (uint64_t)(uintptr_t)local_pAllocator;
17701 countingStream->putBe64(cgen_var_1364);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017702 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017703 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017704 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017705 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017706 uint64_t cgen_var_1365;
17707 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1365, 1);
17708 countingStream->write((uint64_t*)&cgen_var_1365, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017709 }
17710 uint32_t packetSize_vkCreateMacOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17711 countingStream->rewind();
17712 uint32_t opcode_vkCreateMacOSSurfaceMVK = OP_vkCreateMacOSSurfaceMVK;
17713 stream->write(&opcode_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
17714 stream->write(&packetSize_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017715 uint64_t cgen_var_1366;
17716 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1366, 1);
17717 stream->write((uint64_t*)&cgen_var_1366, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017718 marshal_VkMacOSSurfaceCreateInfoMVK(stream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017719 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017720 uint64_t cgen_var_1367 = (uint64_t)(uintptr_t)local_pAllocator;
17721 stream->putBe64(cgen_var_1367);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017722 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017723 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017724 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017725 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017726 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017727 uint64_t cgen_var_1368;
17728 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1368, 1);
17729 stream->write((uint64_t*)&cgen_var_1368, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017730 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080017731 uint64_t cgen_var_1369;
17732 stream->read((uint64_t*)&cgen_var_1369, 8);
17733 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1369, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017734 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
17735 stream->read(&vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017736 countingStream->clearPool();
17737 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017738 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017739 return vkCreateMacOSSurfaceMVK_VkResult_return;
17740}
17741
17742#endif
17743#ifdef VK_EXT_external_memory_dma_buf
17744#endif
17745#ifdef VK_EXT_queue_family_foreign
17746#endif
17747#ifdef VK_EXT_debug_utils
17748VkResult VkEncoder::vkSetDebugUtilsObjectNameEXT(
17749 VkDevice device,
17750 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
17751{
17752 auto stream = mImpl->stream();
17753 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017754 auto resources = mImpl->resources();
17755 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017756 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017757 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017758 VkDebugUtilsObjectNameInfoEXT* local_pNameInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017759 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017760 local_pNameInfo = nullptr;
17761 if (pNameInfo)
17762 {
17763 local_pNameInfo = (VkDebugUtilsObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectNameInfoEXT));
17764 deepcopy_VkDebugUtilsObjectNameInfoEXT(pool, pNameInfo, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
17765 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017766 countingStream->rewind();
17767 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017768 uint64_t cgen_var_1370;
17769 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1370, 1);
17770 countingStream->write((uint64_t*)&cgen_var_1370, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017771 marshal_VkDebugUtilsObjectNameInfoEXT(countingStream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017772 }
17773 uint32_t packetSize_vkSetDebugUtilsObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17774 countingStream->rewind();
17775 uint32_t opcode_vkSetDebugUtilsObjectNameEXT = OP_vkSetDebugUtilsObjectNameEXT;
17776 stream->write(&opcode_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
17777 stream->write(&packetSize_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017778 uint64_t cgen_var_1371;
17779 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1371, 1);
17780 stream->write((uint64_t*)&cgen_var_1371, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017781 marshal_VkDebugUtilsObjectNameInfoEXT(stream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017782 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
17783 stream->read(&vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017784 countingStream->clearPool();
17785 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017786 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017787 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
17788}
17789
17790VkResult VkEncoder::vkSetDebugUtilsObjectTagEXT(
17791 VkDevice device,
17792 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
17793{
17794 auto stream = mImpl->stream();
17795 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017796 auto resources = mImpl->resources();
17797 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017798 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017799 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017800 VkDebugUtilsObjectTagInfoEXT* local_pTagInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017801 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017802 local_pTagInfo = nullptr;
17803 if (pTagInfo)
17804 {
17805 local_pTagInfo = (VkDebugUtilsObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectTagInfoEXT));
17806 deepcopy_VkDebugUtilsObjectTagInfoEXT(pool, pTagInfo, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
17807 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017808 countingStream->rewind();
17809 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017810 uint64_t cgen_var_1372;
17811 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1372, 1);
17812 countingStream->write((uint64_t*)&cgen_var_1372, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017813 marshal_VkDebugUtilsObjectTagInfoEXT(countingStream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017814 }
17815 uint32_t packetSize_vkSetDebugUtilsObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17816 countingStream->rewind();
17817 uint32_t opcode_vkSetDebugUtilsObjectTagEXT = OP_vkSetDebugUtilsObjectTagEXT;
17818 stream->write(&opcode_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
17819 stream->write(&packetSize_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017820 uint64_t cgen_var_1373;
17821 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1373, 1);
17822 stream->write((uint64_t*)&cgen_var_1373, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017823 marshal_VkDebugUtilsObjectTagInfoEXT(stream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017824 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
17825 stream->read(&vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017826 countingStream->clearPool();
17827 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017828 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017829 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
17830}
17831
17832void VkEncoder::vkQueueBeginDebugUtilsLabelEXT(
17833 VkQueue queue,
17834 const VkDebugUtilsLabelEXT* pLabelInfo)
17835{
17836 auto stream = mImpl->stream();
17837 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017838 auto resources = mImpl->resources();
17839 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017840 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017841 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017842 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017843 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017844 local_pLabelInfo = nullptr;
17845 if (pLabelInfo)
17846 {
17847 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
17848 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17849 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017850 countingStream->rewind();
17851 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017852 uint64_t cgen_var_1374;
17853 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1374, 1);
17854 countingStream->write((uint64_t*)&cgen_var_1374, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017855 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017856 }
17857 uint32_t packetSize_vkQueueBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17858 countingStream->rewind();
17859 uint32_t opcode_vkQueueBeginDebugUtilsLabelEXT = OP_vkQueueBeginDebugUtilsLabelEXT;
17860 stream->write(&opcode_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
17861 stream->write(&packetSize_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017862 uint64_t cgen_var_1375;
17863 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1375, 1);
17864 stream->write((uint64_t*)&cgen_var_1375, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017865 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017866}
17867
17868void VkEncoder::vkQueueEndDebugUtilsLabelEXT(
17869 VkQueue queue)
17870{
17871 auto stream = mImpl->stream();
17872 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017873 auto resources = mImpl->resources();
17874 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017875 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017876 VkQueue local_queue;
17877 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017878 countingStream->rewind();
17879 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017880 uint64_t cgen_var_1376;
17881 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1376, 1);
17882 countingStream->write((uint64_t*)&cgen_var_1376, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017883 }
17884 uint32_t packetSize_vkQueueEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17885 countingStream->rewind();
17886 uint32_t opcode_vkQueueEndDebugUtilsLabelEXT = OP_vkQueueEndDebugUtilsLabelEXT;
17887 stream->write(&opcode_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
17888 stream->write(&packetSize_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017889 uint64_t cgen_var_1377;
17890 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1377, 1);
17891 stream->write((uint64_t*)&cgen_var_1377, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017892}
17893
17894void VkEncoder::vkQueueInsertDebugUtilsLabelEXT(
17895 VkQueue queue,
17896 const VkDebugUtilsLabelEXT* pLabelInfo)
17897{
17898 auto stream = mImpl->stream();
17899 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017900 auto resources = mImpl->resources();
17901 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017902 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017903 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017904 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017905 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017906 local_pLabelInfo = nullptr;
17907 if (pLabelInfo)
17908 {
17909 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
17910 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17911 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017912 countingStream->rewind();
17913 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017914 uint64_t cgen_var_1378;
17915 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1378, 1);
17916 countingStream->write((uint64_t*)&cgen_var_1378, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017917 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017918 }
17919 uint32_t packetSize_vkQueueInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17920 countingStream->rewind();
17921 uint32_t opcode_vkQueueInsertDebugUtilsLabelEXT = OP_vkQueueInsertDebugUtilsLabelEXT;
17922 stream->write(&opcode_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
17923 stream->write(&packetSize_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017924 uint64_t cgen_var_1379;
17925 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1379, 1);
17926 stream->write((uint64_t*)&cgen_var_1379, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017927 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017928}
17929
17930void VkEncoder::vkCmdBeginDebugUtilsLabelEXT(
17931 VkCommandBuffer commandBuffer,
17932 const VkDebugUtilsLabelEXT* pLabelInfo)
17933{
17934 auto stream = mImpl->stream();
17935 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017936 auto resources = mImpl->resources();
17937 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017938 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017939 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017940 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017941 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017942 local_pLabelInfo = nullptr;
17943 if (pLabelInfo)
17944 {
17945 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
17946 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17947 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017948 countingStream->rewind();
17949 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017950 uint64_t cgen_var_1380;
17951 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1380, 1);
17952 countingStream->write((uint64_t*)&cgen_var_1380, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017953 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017954 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017955 uint32_t packetSize_vkCmdBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17956 countingStream->rewind();
17957 uint32_t opcode_vkCmdBeginDebugUtilsLabelEXT = OP_vkCmdBeginDebugUtilsLabelEXT;
17958 stream->write(&opcode_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
17959 stream->write(&packetSize_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017960 uint64_t cgen_var_1381;
17961 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1381, 1);
17962 stream->write((uint64_t*)&cgen_var_1381, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017963 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17964}
17965
17966void VkEncoder::vkCmdEndDebugUtilsLabelEXT(
17967 VkCommandBuffer commandBuffer)
17968{
17969 auto stream = mImpl->stream();
17970 auto countingStream = mImpl->countingStream();
17971 auto resources = mImpl->resources();
17972 auto pool = mImpl->pool();
17973 stream->setHandleMapping(resources->unwrapMapping());
17974 VkCommandBuffer local_commandBuffer;
17975 local_commandBuffer = commandBuffer;
17976 countingStream->rewind();
17977 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017978 uint64_t cgen_var_1382;
17979 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1382, 1);
17980 countingStream->write((uint64_t*)&cgen_var_1382, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017981 }
17982 uint32_t packetSize_vkCmdEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17983 countingStream->rewind();
17984 uint32_t opcode_vkCmdEndDebugUtilsLabelEXT = OP_vkCmdEndDebugUtilsLabelEXT;
17985 stream->write(&opcode_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
17986 stream->write(&packetSize_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017987 uint64_t cgen_var_1383;
17988 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1383, 1);
17989 stream->write((uint64_t*)&cgen_var_1383, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017990}
17991
17992void VkEncoder::vkCmdInsertDebugUtilsLabelEXT(
17993 VkCommandBuffer commandBuffer,
17994 const VkDebugUtilsLabelEXT* pLabelInfo)
17995{
17996 auto stream = mImpl->stream();
17997 auto countingStream = mImpl->countingStream();
17998 auto resources = mImpl->resources();
17999 auto pool = mImpl->pool();
18000 stream->setHandleMapping(resources->unwrapMapping());
18001 VkCommandBuffer local_commandBuffer;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018002 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018003 local_commandBuffer = commandBuffer;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018004 local_pLabelInfo = nullptr;
18005 if (pLabelInfo)
18006 {
18007 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
18008 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
18009 }
18010 countingStream->rewind();
18011 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018012 uint64_t cgen_var_1384;
18013 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1384, 1);
18014 countingStream->write((uint64_t*)&cgen_var_1384, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018015 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
18016 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018017 uint32_t packetSize_vkCmdInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18018 countingStream->rewind();
18019 uint32_t opcode_vkCmdInsertDebugUtilsLabelEXT = OP_vkCmdInsertDebugUtilsLabelEXT;
18020 stream->write(&opcode_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
18021 stream->write(&packetSize_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018022 uint64_t cgen_var_1385;
18023 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1385, 1);
18024 stream->write((uint64_t*)&cgen_var_1385, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018025 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018026}
18027
18028VkResult VkEncoder::vkCreateDebugUtilsMessengerEXT(
18029 VkInstance instance,
18030 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
18031 const VkAllocationCallbacks* pAllocator,
18032 VkDebugUtilsMessengerEXT* pMessenger)
18033{
18034 auto stream = mImpl->stream();
18035 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018036 auto resources = mImpl->resources();
18037 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018038 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018039 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018040 VkDebugUtilsMessengerCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018041 VkAllocationCallbacks* local_pAllocator;
18042 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018043 local_pCreateInfo = nullptr;
18044 if (pCreateInfo)
18045 {
18046 local_pCreateInfo = (VkDebugUtilsMessengerCreateInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCreateInfoEXT));
18047 deepcopy_VkDebugUtilsMessengerCreateInfoEXT(pool, pCreateInfo, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
18048 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018049 local_pAllocator = nullptr;
18050 if (pAllocator)
18051 {
18052 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18053 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18054 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018055 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018056 countingStream->rewind();
18057 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018058 uint64_t cgen_var_1386;
18059 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1386, 1);
18060 countingStream->write((uint64_t*)&cgen_var_1386, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018061 marshal_VkDebugUtilsMessengerCreateInfoEXT(countingStream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018062 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018063 uint64_t cgen_var_1387 = (uint64_t)(uintptr_t)local_pAllocator;
18064 countingStream->putBe64(cgen_var_1387);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018065 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018066 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018067 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018068 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080018069 uint64_t cgen_var_1388;
18070 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1388, 1);
18071 countingStream->write((uint64_t*)&cgen_var_1388, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018072 }
18073 uint32_t packetSize_vkCreateDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18074 countingStream->rewind();
18075 uint32_t opcode_vkCreateDebugUtilsMessengerEXT = OP_vkCreateDebugUtilsMessengerEXT;
18076 stream->write(&opcode_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
18077 stream->write(&packetSize_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018078 uint64_t cgen_var_1389;
18079 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1389, 1);
18080 stream->write((uint64_t*)&cgen_var_1389, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018081 marshal_VkDebugUtilsMessengerCreateInfoEXT(stream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018082 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018083 uint64_t cgen_var_1390 = (uint64_t)(uintptr_t)local_pAllocator;
18084 stream->putBe64(cgen_var_1390);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018085 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018086 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018087 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018088 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018089 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080018090 uint64_t cgen_var_1391;
18091 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1391, 1);
18092 stream->write((uint64_t*)&cgen_var_1391, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018093 stream->setHandleMapping(resources->unwrapMapping());
18094 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080018095 uint64_t cgen_var_1392;
18096 stream->read((uint64_t*)&cgen_var_1392, 8);
18097 stream->handleMapping()->mapHandles_u64_VkDebugUtilsMessengerEXT(&cgen_var_1392, (VkDebugUtilsMessengerEXT*)pMessenger, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018098 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018099 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
18100 stream->read(&vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018101 countingStream->clearPool();
18102 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018103 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018104 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
18105}
18106
18107void VkEncoder::vkDestroyDebugUtilsMessengerEXT(
18108 VkInstance instance,
18109 VkDebugUtilsMessengerEXT messenger,
18110 const VkAllocationCallbacks* pAllocator)
18111{
18112 auto stream = mImpl->stream();
18113 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018114 auto resources = mImpl->resources();
18115 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018116 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018117 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018118 VkDebugUtilsMessengerEXT local_messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018119 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018120 local_instance = instance;
18121 local_messenger = messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018122 local_pAllocator = nullptr;
18123 if (pAllocator)
18124 {
18125 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18126 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18127 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018128 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018129 countingStream->rewind();
18130 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018131 uint64_t cgen_var_1393;
18132 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1393, 1);
18133 countingStream->write((uint64_t*)&cgen_var_1393, 1 * 8);
18134 uint64_t cgen_var_1394;
18135 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1394, 1);
18136 countingStream->write((uint64_t*)&cgen_var_1394, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018137 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018138 uint64_t cgen_var_1395 = (uint64_t)(uintptr_t)local_pAllocator;
18139 countingStream->putBe64(cgen_var_1395);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018140 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018141 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018142 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018143 }
18144 }
18145 uint32_t packetSize_vkDestroyDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18146 countingStream->rewind();
18147 uint32_t opcode_vkDestroyDebugUtilsMessengerEXT = OP_vkDestroyDebugUtilsMessengerEXT;
18148 stream->write(&opcode_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
18149 stream->write(&packetSize_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018150 uint64_t cgen_var_1396;
18151 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1396, 1);
18152 stream->write((uint64_t*)&cgen_var_1396, 1 * 8);
18153 uint64_t cgen_var_1397;
18154 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1397, 1);
18155 stream->write((uint64_t*)&cgen_var_1397, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018156 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018157 uint64_t cgen_var_1398 = (uint64_t)(uintptr_t)local_pAllocator;
18158 stream->putBe64(cgen_var_1398);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018159 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018160 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018161 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018162 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018163 resources->destroyMapping()->mapHandles_VkDebugUtilsMessengerEXT((VkDebugUtilsMessengerEXT*)&messenger);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018164}
18165
18166void VkEncoder::vkSubmitDebugUtilsMessageEXT(
18167 VkInstance instance,
18168 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
18169 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
18170 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
18171{
18172 auto stream = mImpl->stream();
18173 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018174 auto resources = mImpl->resources();
18175 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018176 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018177 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018178 VkDebugUtilsMessageSeverityFlagBitsEXT local_messageSeverity;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018179 VkDebugUtilsMessageTypeFlagsEXT local_messageTypes;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018180 VkDebugUtilsMessengerCallbackDataEXT* local_pCallbackData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018181 local_instance = instance;
18182 local_messageSeverity = messageSeverity;
18183 local_messageTypes = messageTypes;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018184 local_pCallbackData = nullptr;
18185 if (pCallbackData)
18186 {
18187 local_pCallbackData = (VkDebugUtilsMessengerCallbackDataEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCallbackDataEXT));
18188 deepcopy_VkDebugUtilsMessengerCallbackDataEXT(pool, pCallbackData, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
18189 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018190 countingStream->rewind();
18191 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018192 uint64_t cgen_var_1399;
18193 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1399, 1);
18194 countingStream->write((uint64_t*)&cgen_var_1399, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018195 countingStream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
18196 countingStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
18197 marshal_VkDebugUtilsMessengerCallbackDataEXT(countingStream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018198 }
18199 uint32_t packetSize_vkSubmitDebugUtilsMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18200 countingStream->rewind();
18201 uint32_t opcode_vkSubmitDebugUtilsMessageEXT = OP_vkSubmitDebugUtilsMessageEXT;
18202 stream->write(&opcode_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
18203 stream->write(&packetSize_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018204 uint64_t cgen_var_1400;
18205 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1400, 1);
18206 stream->write((uint64_t*)&cgen_var_1400, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018207 stream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
18208 stream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
18209 marshal_VkDebugUtilsMessengerCallbackDataEXT(stream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018210}
18211
18212#endif
18213#ifdef VK_ANDROID_external_memory_android_hardware_buffer
18214VkResult VkEncoder::vkGetAndroidHardwareBufferPropertiesANDROID(
18215 VkDevice device,
18216 const AHardwareBuffer* buffer,
18217 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
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;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018225 AHardwareBuffer* local_buffer;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018226 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018227 local_buffer = nullptr;
18228 if (buffer)
18229 {
18230 local_buffer = (AHardwareBuffer*)pool->dupArray(buffer, sizeof(const AHardwareBuffer));
18231 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018232 countingStream->rewind();
18233 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018234 uint64_t cgen_var_1401;
18235 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1401, 1);
18236 countingStream->write((uint64_t*)&cgen_var_1401, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018237 countingStream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018238 marshal_VkAndroidHardwareBufferPropertiesANDROID(countingStream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
18239 }
18240 uint32_t packetSize_vkGetAndroidHardwareBufferPropertiesANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18241 countingStream->rewind();
18242 uint32_t opcode_vkGetAndroidHardwareBufferPropertiesANDROID = OP_vkGetAndroidHardwareBufferPropertiesANDROID;
18243 stream->write(&opcode_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
18244 stream->write(&packetSize_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018245 uint64_t cgen_var_1402;
18246 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1402, 1);
18247 stream->write((uint64_t*)&cgen_var_1402, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018248 stream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018249 marshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
18250 unmarshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
18251 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
18252 stream->read(&vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018253 countingStream->clearPool();
18254 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018255 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018256 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
18257}
18258
18259VkResult VkEncoder::vkGetMemoryAndroidHardwareBufferANDROID(
18260 VkDevice device,
18261 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
18262 AHardwareBuffer** pBuffer)
18263{
18264 auto stream = mImpl->stream();
18265 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018266 auto resources = mImpl->resources();
18267 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018268 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018269 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018270 VkMemoryGetAndroidHardwareBufferInfoANDROID* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018271 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018272 local_pInfo = nullptr;
18273 if (pInfo)
18274 {
18275 local_pInfo = (VkMemoryGetAndroidHardwareBufferInfoANDROID*)pool->alloc(sizeof(const VkMemoryGetAndroidHardwareBufferInfoANDROID));
18276 deepcopy_VkMemoryGetAndroidHardwareBufferInfoANDROID(pool, pInfo, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
18277 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018278 countingStream->rewind();
18279 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018280 uint64_t cgen_var_1403;
18281 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1403, 1);
18282 countingStream->write((uint64_t*)&cgen_var_1403, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018283 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(countingStream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018284 countingStream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
18285 }
18286 uint32_t packetSize_vkGetMemoryAndroidHardwareBufferANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18287 countingStream->rewind();
18288 uint32_t opcode_vkGetMemoryAndroidHardwareBufferANDROID = OP_vkGetMemoryAndroidHardwareBufferANDROID;
18289 stream->write(&opcode_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
18290 stream->write(&packetSize_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018291 uint64_t cgen_var_1404;
18292 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1404, 1);
18293 stream->write((uint64_t*)&cgen_var_1404, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018294 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(stream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018295 stream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
18296 stream->read((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
18297 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
18298 stream->read(&vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018299 countingStream->clearPool();
18300 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018301 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018302 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
18303}
18304
18305#endif
18306#ifdef VK_EXT_sampler_filter_minmax
18307#endif
18308#ifdef VK_AMD_gpu_shader_int16
18309#endif
18310#ifdef VK_AMD_mixed_attachment_samples
18311#endif
18312#ifdef VK_AMD_shader_fragment_mask
18313#endif
18314#ifdef VK_EXT_shader_stencil_export
18315#endif
18316#ifdef VK_EXT_sample_locations
18317void VkEncoder::vkCmdSetSampleLocationsEXT(
18318 VkCommandBuffer commandBuffer,
18319 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
18320{
18321 auto stream = mImpl->stream();
18322 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018323 auto resources = mImpl->resources();
18324 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018325 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018326 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018327 VkSampleLocationsInfoEXT* local_pSampleLocationsInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018328 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018329 local_pSampleLocationsInfo = nullptr;
18330 if (pSampleLocationsInfo)
18331 {
18332 local_pSampleLocationsInfo = (VkSampleLocationsInfoEXT*)pool->alloc(sizeof(const VkSampleLocationsInfoEXT));
18333 deepcopy_VkSampleLocationsInfoEXT(pool, pSampleLocationsInfo, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
18334 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018335 countingStream->rewind();
18336 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018337 uint64_t cgen_var_1405;
18338 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1405, 1);
18339 countingStream->write((uint64_t*)&cgen_var_1405, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018340 marshal_VkSampleLocationsInfoEXT(countingStream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018341 }
18342 uint32_t packetSize_vkCmdSetSampleLocationsEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18343 countingStream->rewind();
18344 uint32_t opcode_vkCmdSetSampleLocationsEXT = OP_vkCmdSetSampleLocationsEXT;
18345 stream->write(&opcode_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
18346 stream->write(&packetSize_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018347 uint64_t cgen_var_1406;
18348 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1406, 1);
18349 stream->write((uint64_t*)&cgen_var_1406, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018350 marshal_VkSampleLocationsInfoEXT(stream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018351}
18352
18353void VkEncoder::vkGetPhysicalDeviceMultisamplePropertiesEXT(
18354 VkPhysicalDevice physicalDevice,
18355 VkSampleCountFlagBits samples,
18356 VkMultisamplePropertiesEXT* pMultisampleProperties)
18357{
18358 auto stream = mImpl->stream();
18359 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018360 auto resources = mImpl->resources();
18361 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018362 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018363 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018364 VkSampleCountFlagBits local_samples;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018365 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018366 local_samples = samples;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018367 countingStream->rewind();
18368 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018369 uint64_t cgen_var_1407;
18370 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1407, 1);
18371 countingStream->write((uint64_t*)&cgen_var_1407, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018372 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018373 marshal_VkMultisamplePropertiesEXT(countingStream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
18374 }
18375 uint32_t packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18376 countingStream->rewind();
18377 uint32_t opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT = OP_vkGetPhysicalDeviceMultisamplePropertiesEXT;
18378 stream->write(&opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
18379 stream->write(&packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018380 uint64_t cgen_var_1408;
18381 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1408, 1);
18382 stream->write((uint64_t*)&cgen_var_1408, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018383 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018384 marshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
18385 unmarshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
18386}
18387
18388#endif
18389#ifdef VK_EXT_blend_operation_advanced
18390#endif
18391#ifdef VK_NV_fragment_coverage_to_color
18392#endif
18393#ifdef VK_NV_framebuffer_mixed_samples
18394#endif
18395#ifdef VK_NV_fill_rectangle
18396#endif
18397#ifdef VK_EXT_post_depth_coverage
18398#endif
18399#ifdef VK_EXT_validation_cache
18400VkResult VkEncoder::vkCreateValidationCacheEXT(
18401 VkDevice device,
18402 const VkValidationCacheCreateInfoEXT* pCreateInfo,
18403 const VkAllocationCallbacks* pAllocator,
18404 VkValidationCacheEXT* pValidationCache)
18405{
18406 auto stream = mImpl->stream();
18407 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018408 auto resources = mImpl->resources();
18409 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018410 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018411 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018412 VkValidationCacheCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018413 VkAllocationCallbacks* local_pAllocator;
18414 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018415 local_pCreateInfo = nullptr;
18416 if (pCreateInfo)
18417 {
18418 local_pCreateInfo = (VkValidationCacheCreateInfoEXT*)pool->alloc(sizeof(const VkValidationCacheCreateInfoEXT));
18419 deepcopy_VkValidationCacheCreateInfoEXT(pool, pCreateInfo, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
18420 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018421 local_pAllocator = nullptr;
18422 if (pAllocator)
18423 {
18424 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18425 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18426 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018427 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018428 countingStream->rewind();
18429 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018430 uint64_t cgen_var_1409;
18431 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1409, 1);
18432 countingStream->write((uint64_t*)&cgen_var_1409, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018433 marshal_VkValidationCacheCreateInfoEXT(countingStream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018434 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018435 uint64_t cgen_var_1410 = (uint64_t)(uintptr_t)local_pAllocator;
18436 countingStream->putBe64(cgen_var_1410);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018437 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018438 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018439 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018440 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080018441 uint64_t cgen_var_1411;
18442 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1411, 1);
18443 countingStream->write((uint64_t*)&cgen_var_1411, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018444 }
18445 uint32_t packetSize_vkCreateValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18446 countingStream->rewind();
18447 uint32_t opcode_vkCreateValidationCacheEXT = OP_vkCreateValidationCacheEXT;
18448 stream->write(&opcode_vkCreateValidationCacheEXT, sizeof(uint32_t));
18449 stream->write(&packetSize_vkCreateValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018450 uint64_t cgen_var_1412;
18451 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1412, 1);
18452 stream->write((uint64_t*)&cgen_var_1412, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018453 marshal_VkValidationCacheCreateInfoEXT(stream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018454 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018455 uint64_t cgen_var_1413 = (uint64_t)(uintptr_t)local_pAllocator;
18456 stream->putBe64(cgen_var_1413);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018457 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018458 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018459 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018460 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018461 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080018462 uint64_t cgen_var_1414;
18463 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1414, 1);
18464 stream->write((uint64_t*)&cgen_var_1414, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018465 stream->setHandleMapping(resources->unwrapMapping());
18466 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080018467 uint64_t cgen_var_1415;
18468 stream->read((uint64_t*)&cgen_var_1415, 8);
18469 stream->handleMapping()->mapHandles_u64_VkValidationCacheEXT(&cgen_var_1415, (VkValidationCacheEXT*)pValidationCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018470 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018471 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
18472 stream->read(&vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018473 countingStream->clearPool();
18474 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018475 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018476 return vkCreateValidationCacheEXT_VkResult_return;
18477}
18478
18479void VkEncoder::vkDestroyValidationCacheEXT(
18480 VkDevice device,
18481 VkValidationCacheEXT validationCache,
18482 const VkAllocationCallbacks* pAllocator)
18483{
18484 auto stream = mImpl->stream();
18485 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018486 auto resources = mImpl->resources();
18487 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018488 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018489 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018490 VkValidationCacheEXT local_validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018491 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018492 local_device = device;
18493 local_validationCache = validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018494 local_pAllocator = nullptr;
18495 if (pAllocator)
18496 {
18497 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18498 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18499 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018500 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018501 countingStream->rewind();
18502 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018503 uint64_t cgen_var_1416;
18504 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1416, 1);
18505 countingStream->write((uint64_t*)&cgen_var_1416, 1 * 8);
18506 uint64_t cgen_var_1417;
18507 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1417, 1);
18508 countingStream->write((uint64_t*)&cgen_var_1417, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018509 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018510 uint64_t cgen_var_1418 = (uint64_t)(uintptr_t)local_pAllocator;
18511 countingStream->putBe64(cgen_var_1418);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018512 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018513 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018514 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018515 }
18516 }
18517 uint32_t packetSize_vkDestroyValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18518 countingStream->rewind();
18519 uint32_t opcode_vkDestroyValidationCacheEXT = OP_vkDestroyValidationCacheEXT;
18520 stream->write(&opcode_vkDestroyValidationCacheEXT, sizeof(uint32_t));
18521 stream->write(&packetSize_vkDestroyValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018522 uint64_t cgen_var_1419;
18523 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1419, 1);
18524 stream->write((uint64_t*)&cgen_var_1419, 1 * 8);
18525 uint64_t cgen_var_1420;
18526 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1420, 1);
18527 stream->write((uint64_t*)&cgen_var_1420, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018528 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018529 uint64_t cgen_var_1421 = (uint64_t)(uintptr_t)local_pAllocator;
18530 stream->putBe64(cgen_var_1421);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018531 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018532 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018533 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018534 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018535 resources->destroyMapping()->mapHandles_VkValidationCacheEXT((VkValidationCacheEXT*)&validationCache);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018536}
18537
18538VkResult VkEncoder::vkMergeValidationCachesEXT(
18539 VkDevice device,
18540 VkValidationCacheEXT dstCache,
18541 uint32_t srcCacheCount,
18542 const VkValidationCacheEXT* pSrcCaches)
18543{
18544 auto stream = mImpl->stream();
18545 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018546 auto resources = mImpl->resources();
18547 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018548 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018549 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018550 VkValidationCacheEXT local_dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018551 uint32_t local_srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018552 VkValidationCacheEXT* local_pSrcCaches;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018553 local_device = device;
18554 local_dstCache = dstCache;
18555 local_srcCacheCount = srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018556 local_pSrcCaches = nullptr;
18557 if (pSrcCaches)
18558 {
18559 local_pSrcCaches = (VkValidationCacheEXT*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
18560 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018561 countingStream->rewind();
18562 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018563 uint64_t cgen_var_1422;
18564 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1422, 1);
18565 countingStream->write((uint64_t*)&cgen_var_1422, 1 * 8);
18566 uint64_t cgen_var_1423;
18567 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1423, 1);
18568 countingStream->write((uint64_t*)&cgen_var_1423, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018569 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018570 if (((srcCacheCount)))
18571 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018572 uint64_t* cgen_var_1424;
18573 countingStream->alloc((void**)&cgen_var_1424, ((srcCacheCount)) * 8);
18574 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1424, ((srcCacheCount)));
18575 countingStream->write((uint64_t*)cgen_var_1424, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080018576 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018577 }
18578 uint32_t packetSize_vkMergeValidationCachesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18579 countingStream->rewind();
18580 uint32_t opcode_vkMergeValidationCachesEXT = OP_vkMergeValidationCachesEXT;
18581 stream->write(&opcode_vkMergeValidationCachesEXT, sizeof(uint32_t));
18582 stream->write(&packetSize_vkMergeValidationCachesEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018583 uint64_t cgen_var_1425;
18584 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1425, 1);
18585 stream->write((uint64_t*)&cgen_var_1425, 1 * 8);
18586 uint64_t cgen_var_1426;
18587 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1426, 1);
18588 stream->write((uint64_t*)&cgen_var_1426, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018589 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018590 if (((srcCacheCount)))
18591 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018592 uint64_t* cgen_var_1427;
18593 stream->alloc((void**)&cgen_var_1427, ((srcCacheCount)) * 8);
18594 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1427, ((srcCacheCount)));
18595 stream->write((uint64_t*)cgen_var_1427, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080018596 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018597 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
18598 stream->read(&vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018599 countingStream->clearPool();
18600 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018601 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018602 return vkMergeValidationCachesEXT_VkResult_return;
18603}
18604
18605VkResult VkEncoder::vkGetValidationCacheDataEXT(
18606 VkDevice device,
18607 VkValidationCacheEXT validationCache,
18608 size_t* pDataSize,
18609 void* pData)
18610{
18611 auto stream = mImpl->stream();
18612 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018613 auto resources = mImpl->resources();
18614 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018615 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018616 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018617 VkValidationCacheEXT local_validationCache;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018618 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018619 local_validationCache = validationCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018620 countingStream->rewind();
18621 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018622 uint64_t cgen_var_1428;
18623 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1428, 1);
18624 countingStream->write((uint64_t*)&cgen_var_1428, 1 * 8);
18625 uint64_t cgen_var_1429;
18626 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1429, 1);
18627 countingStream->write((uint64_t*)&cgen_var_1429, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018628 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018629 uint64_t cgen_var_1430 = (uint64_t)(uintptr_t)pDataSize;
18630 countingStream->putBe64(cgen_var_1430);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018631 if (pDataSize)
18632 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018633 uint64_t cgen_var_1431 = (uint64_t)(*pDataSize);
18634 countingStream->putBe64(cgen_var_1431);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018635 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018636 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018637 uint64_t cgen_var_1432 = (uint64_t)(uintptr_t)pData;
18638 countingStream->putBe64(cgen_var_1432);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018639 if (pData)
18640 {
18641 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
18642 }
18643 }
18644 uint32_t packetSize_vkGetValidationCacheDataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18645 countingStream->rewind();
18646 uint32_t opcode_vkGetValidationCacheDataEXT = OP_vkGetValidationCacheDataEXT;
18647 stream->write(&opcode_vkGetValidationCacheDataEXT, sizeof(uint32_t));
18648 stream->write(&packetSize_vkGetValidationCacheDataEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018649 uint64_t cgen_var_1433;
18650 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1433, 1);
18651 stream->write((uint64_t*)&cgen_var_1433, 1 * 8);
18652 uint64_t cgen_var_1434;
18653 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1434, 1);
18654 stream->write((uint64_t*)&cgen_var_1434, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018655 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018656 uint64_t cgen_var_1435 = (uint64_t)(uintptr_t)pDataSize;
18657 stream->putBe64(cgen_var_1435);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018658 if (pDataSize)
18659 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018660 uint64_t cgen_var_1436 = (uint64_t)(*pDataSize);
18661 stream->putBe64(cgen_var_1436);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018662 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018663 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018664 uint64_t cgen_var_1437 = (uint64_t)(uintptr_t)pData;
18665 stream->putBe64(cgen_var_1437);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018666 if (pData)
18667 {
18668 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
18669 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018670 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018671 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018672 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018673 if (pDataSize)
18674 {
18675 if (!(check_pDataSize))
18676 {
18677 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
18678 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018679 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018680 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018681 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018682 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018683 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018684 if (pData)
18685 {
18686 if (!(check_pData))
18687 {
18688 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
18689 }
18690 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
18691 }
18692 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
18693 stream->read(&vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018694 countingStream->clearPool();
18695 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018696 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018697 return vkGetValidationCacheDataEXT_VkResult_return;
18698}
18699
18700#endif
18701#ifdef VK_EXT_descriptor_indexing
18702#endif
18703#ifdef VK_EXT_shader_viewport_index_layer
18704#endif
18705#ifdef VK_EXT_global_priority
18706#endif
18707#ifdef VK_EXT_external_memory_host
18708VkResult VkEncoder::vkGetMemoryHostPointerPropertiesEXT(
18709 VkDevice device,
18710 VkExternalMemoryHandleTypeFlagBits handleType,
18711 const void* pHostPointer,
18712 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
18713{
18714 auto stream = mImpl->stream();
18715 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018716 auto resources = mImpl->resources();
18717 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018718 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018719 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018720 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018721 void* local_pHostPointer;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018722 local_device = device;
18723 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018724 local_pHostPointer = nullptr;
18725 if (pHostPointer)
18726 {
18727 local_pHostPointer = (void*)pool->dupArray(pHostPointer, sizeof(const uint8_t));
18728 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018729 countingStream->rewind();
18730 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018731 uint64_t cgen_var_1441;
18732 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1441, 1);
18733 countingStream->write((uint64_t*)&cgen_var_1441, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018734 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018735 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018736 uint64_t cgen_var_1442 = (uint64_t)(uintptr_t)local_pHostPointer;
18737 countingStream->putBe64(cgen_var_1442);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018738 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018739 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018740 countingStream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018741 }
18742 marshal_VkMemoryHostPointerPropertiesEXT(countingStream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
18743 }
18744 uint32_t packetSize_vkGetMemoryHostPointerPropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18745 countingStream->rewind();
18746 uint32_t opcode_vkGetMemoryHostPointerPropertiesEXT = OP_vkGetMemoryHostPointerPropertiesEXT;
18747 stream->write(&opcode_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
18748 stream->write(&packetSize_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018749 uint64_t cgen_var_1443;
18750 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1443, 1);
18751 stream->write((uint64_t*)&cgen_var_1443, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018752 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018753 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018754 uint64_t cgen_var_1444 = (uint64_t)(uintptr_t)local_pHostPointer;
18755 stream->putBe64(cgen_var_1444);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018756 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018757 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018758 stream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018759 }
18760 marshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
18761 unmarshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
18762 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
18763 stream->read(&vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018764 countingStream->clearPool();
18765 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018766 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018767 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
18768}
18769
18770#endif
18771#ifdef VK_AMD_buffer_marker
18772void VkEncoder::vkCmdWriteBufferMarkerAMD(
18773 VkCommandBuffer commandBuffer,
18774 VkPipelineStageFlagBits pipelineStage,
18775 VkBuffer dstBuffer,
18776 VkDeviceSize dstOffset,
18777 uint32_t marker)
18778{
18779 auto stream = mImpl->stream();
18780 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018781 auto resources = mImpl->resources();
18782 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018783 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018784 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018785 VkPipelineStageFlagBits local_pipelineStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018786 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018787 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018788 uint32_t local_marker;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018789 local_commandBuffer = commandBuffer;
18790 local_pipelineStage = pipelineStage;
18791 local_dstBuffer = dstBuffer;
18792 local_dstOffset = dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018793 local_marker = marker;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018794 countingStream->rewind();
18795 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018796 uint64_t cgen_var_1445;
18797 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1445, 1);
18798 countingStream->write((uint64_t*)&cgen_var_1445, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018799 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018800 uint64_t cgen_var_1446;
18801 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1446, 1);
18802 countingStream->write((uint64_t*)&cgen_var_1446, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018803 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
18804 countingStream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018805 }
18806 uint32_t packetSize_vkCmdWriteBufferMarkerAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18807 countingStream->rewind();
18808 uint32_t opcode_vkCmdWriteBufferMarkerAMD = OP_vkCmdWriteBufferMarkerAMD;
18809 stream->write(&opcode_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
18810 stream->write(&packetSize_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018811 uint64_t cgen_var_1447;
18812 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1447, 1);
18813 stream->write((uint64_t*)&cgen_var_1447, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018814 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018815 uint64_t cgen_var_1448;
18816 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1448, 1);
18817 stream->write((uint64_t*)&cgen_var_1448, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018818 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
18819 stream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018820}
18821
18822#endif
18823#ifdef VK_AMD_shader_core_properties
18824#endif
18825#ifdef VK_EXT_vertex_attribute_divisor
18826#endif
18827#ifdef VK_NV_shader_subgroup_partitioned
18828#endif
18829#ifdef VK_NV_device_diagnostic_checkpoints
18830void VkEncoder::vkCmdSetCheckpointNV(
18831 VkCommandBuffer commandBuffer,
18832 const void* pCheckpointMarker)
18833{
18834 auto stream = mImpl->stream();
18835 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018836 auto resources = mImpl->resources();
18837 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018838 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018839 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018840 void* local_pCheckpointMarker;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018841 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018842 local_pCheckpointMarker = nullptr;
18843 if (pCheckpointMarker)
18844 {
18845 local_pCheckpointMarker = (void*)pool->dupArray(pCheckpointMarker, sizeof(const uint8_t));
18846 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018847 countingStream->rewind();
18848 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018849 uint64_t cgen_var_1449;
18850 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1449, 1);
18851 countingStream->write((uint64_t*)&cgen_var_1449, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018852 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018853 uint64_t cgen_var_1450 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
18854 countingStream->putBe64(cgen_var_1450);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018855 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018856 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018857 countingStream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018858 }
18859 }
18860 uint32_t packetSize_vkCmdSetCheckpointNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18861 countingStream->rewind();
18862 uint32_t opcode_vkCmdSetCheckpointNV = OP_vkCmdSetCheckpointNV;
18863 stream->write(&opcode_vkCmdSetCheckpointNV, sizeof(uint32_t));
18864 stream->write(&packetSize_vkCmdSetCheckpointNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018865 uint64_t cgen_var_1451;
18866 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1451, 1);
18867 stream->write((uint64_t*)&cgen_var_1451, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018868 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018869 uint64_t cgen_var_1452 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
18870 stream->putBe64(cgen_var_1452);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018871 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018872 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018873 stream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018874 }
18875}
18876
18877void VkEncoder::vkGetQueueCheckpointDataNV(
18878 VkQueue queue,
18879 uint32_t* pCheckpointDataCount,
18880 VkCheckpointDataNV* pCheckpointData)
18881{
18882 auto stream = mImpl->stream();
18883 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018884 auto resources = mImpl->resources();
18885 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018886 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018887 VkQueue local_queue;
18888 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018889 countingStream->rewind();
18890 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018891 uint64_t cgen_var_1453;
18892 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1453, 1);
18893 countingStream->write((uint64_t*)&cgen_var_1453, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018894 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018895 uint64_t cgen_var_1454 = (uint64_t)(uintptr_t)pCheckpointDataCount;
18896 countingStream->putBe64(cgen_var_1454);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018897 if (pCheckpointDataCount)
18898 {
18899 countingStream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
18900 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018901 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018902 uint64_t cgen_var_1455 = (uint64_t)(uintptr_t)pCheckpointData;
18903 countingStream->putBe64(cgen_var_1455);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018904 if (pCheckpointData)
18905 {
18906 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
18907 {
18908 marshal_VkCheckpointDataNV(countingStream, (VkCheckpointDataNV*)(pCheckpointData + i));
18909 }
18910 }
18911 }
18912 uint32_t packetSize_vkGetQueueCheckpointDataNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18913 countingStream->rewind();
18914 uint32_t opcode_vkGetQueueCheckpointDataNV = OP_vkGetQueueCheckpointDataNV;
18915 stream->write(&opcode_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
18916 stream->write(&packetSize_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018917 uint64_t cgen_var_1456;
18918 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1456, 1);
18919 stream->write((uint64_t*)&cgen_var_1456, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018920 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018921 uint64_t cgen_var_1457 = (uint64_t)(uintptr_t)pCheckpointDataCount;
18922 stream->putBe64(cgen_var_1457);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018923 if (pCheckpointDataCount)
18924 {
18925 stream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
18926 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018927 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018928 uint64_t cgen_var_1458 = (uint64_t)(uintptr_t)pCheckpointData;
18929 stream->putBe64(cgen_var_1458);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018930 if (pCheckpointData)
18931 {
18932 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
18933 {
18934 marshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
18935 }
18936 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018937 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018938 uint32_t* check_pCheckpointDataCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018939 check_pCheckpointDataCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018940 if (pCheckpointDataCount)
18941 {
18942 if (!(check_pCheckpointDataCount))
18943 {
18944 fprintf(stderr, "fatal: pCheckpointDataCount inconsistent between guest and host\n");
18945 }
18946 stream->read((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
18947 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018948 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018949 VkCheckpointDataNV* check_pCheckpointData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018950 check_pCheckpointData = (VkCheckpointDataNV*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018951 if (pCheckpointData)
18952 {
18953 if (!(check_pCheckpointData))
18954 {
18955 fprintf(stderr, "fatal: pCheckpointData inconsistent between guest and host\n");
18956 }
18957 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
18958 {
18959 unmarshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
18960 }
18961 }
18962}
18963
18964#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080018965#ifdef VK_GOOGLE_address_space
18966VkResult VkEncoder::vkMapMemoryIntoAddressSpaceGOOGLE(
18967 VkDevice device,
18968 VkDeviceMemory memory,
18969 uint64_t* pAddress)
18970{
18971 mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE_pre(this, VK_SUCCESS, device, memory, pAddress);
18972 auto stream = mImpl->stream();
18973 auto countingStream = mImpl->countingStream();
18974 auto resources = mImpl->resources();
18975 auto pool = mImpl->pool();
18976 stream->setHandleMapping(resources->unwrapMapping());
18977 VkDevice local_device;
18978 VkDeviceMemory local_memory;
18979 local_device = device;
18980 local_memory = memory;
18981 countingStream->rewind();
18982 {
18983 uint64_t cgen_var_1461;
18984 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1461, 1);
18985 countingStream->write((uint64_t*)&cgen_var_1461, 1 * 8);
18986 uint64_t cgen_var_1462;
18987 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1462, 1);
18988 countingStream->write((uint64_t*)&cgen_var_1462, 1 * 8);
18989 // WARNING PTR CHECK
18990 uint64_t cgen_var_1463 = (uint64_t)(uintptr_t)pAddress;
18991 countingStream->putBe64(cgen_var_1463);
18992 if (pAddress)
18993 {
18994 countingStream->write((uint64_t*)pAddress, sizeof(uint64_t));
18995 }
18996 }
18997 uint32_t packetSize_vkMapMemoryIntoAddressSpaceGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18998 countingStream->rewind();
18999 uint32_t opcode_vkMapMemoryIntoAddressSpaceGOOGLE = OP_vkMapMemoryIntoAddressSpaceGOOGLE;
19000 stream->write(&opcode_vkMapMemoryIntoAddressSpaceGOOGLE, sizeof(uint32_t));
19001 stream->write(&packetSize_vkMapMemoryIntoAddressSpaceGOOGLE, sizeof(uint32_t));
19002 uint64_t cgen_var_1464;
19003 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1464, 1);
19004 stream->write((uint64_t*)&cgen_var_1464, 1 * 8);
19005 uint64_t cgen_var_1465;
19006 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1465, 1);
19007 stream->write((uint64_t*)&cgen_var_1465, 1 * 8);
19008 // WARNING PTR CHECK
19009 uint64_t cgen_var_1466 = (uint64_t)(uintptr_t)pAddress;
19010 stream->putBe64(cgen_var_1466);
19011 if (pAddress)
19012 {
19013 stream->write((uint64_t*)pAddress, sizeof(uint64_t));
19014 }
19015 // WARNING PTR CHECK
19016 uint64_t* check_pAddress;
19017 check_pAddress = (uint64_t*)(uintptr_t)stream->getBe64();
19018 if (pAddress)
19019 {
19020 if (!(check_pAddress))
19021 {
19022 fprintf(stderr, "fatal: pAddress inconsistent between guest and host\n");
19023 }
19024 stream->read((uint64_t*)pAddress, sizeof(uint64_t));
19025 }
19026 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
19027 stream->read(&vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, sizeof(VkResult));
19028 countingStream->clearPool();
19029 stream->clearPool();
19030 pool->freeAll();
19031 mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE(this, vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, device, memory, pAddress);
19032 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
19033}
19034
19035#endif
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019036
Lingfeng Yangb1d90102018-11-29 16:10:36 -080019037} // namespace goldfish_vk