blob: 736924f8e0d02ca99fba309a88040a8967ac564a [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 Yang62b23322018-12-24 12:45:47 -080041#include "goldfish_vk_transform.h"
Lingfeng Yange71c6422018-11-01 19:29:49 -070042
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070043
Lingfeng Yangb1d90102018-11-29 16:10:36 -080044namespace goldfish_vk {
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070045
46
47
Lingfeng Yang71b596b2018-11-07 18:03:25 -080048using namespace goldfish_vk;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070049
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080050using android::aligned_buf_alloc;
51using android::aligned_buf_free;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080052using android::base::Pool;
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080053
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070054class VkEncoder::Impl {
55public:
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070056 Impl(IOStream* stream) : m_stream(stream) { }
57 VulkanCountingStream* countingStream() { return &m_countingStream; }
58 VulkanStream* stream() { return &m_stream; }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080059 Pool* pool() { return &m_pool; }
60 ResourceTracker* resources() { return ResourceTracker::get(); }
Lingfeng Yang29c99d92018-11-30 11:15:29 -080061 Validation* validation() { return &m_validation; }
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070062private:
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070063 VulkanCountingStream m_countingStream;
64 VulkanStream m_stream;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080065 Pool m_pool { 8, 4096, 64 };
Lingfeng Yang29c99d92018-11-30 11:15:29 -080066
67 Validation m_validation;
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070068};
69
70VkEncoder::VkEncoder(IOStream *stream) :
71 mImpl(new VkEncoder::Impl(stream)) { }
Lingfeng Yang60b411d2018-11-29 00:26:45 -080072
73#define VALIDATE_RET(retType, success, validate) \
74 retType goldfish_vk_validateResult = validate; \
75 if (goldfish_vk_validateResult != success) return goldfish_vk_validateResult; \
76
77#define VALIDATE_VOID(validate) \
78 VkResult goldfish_vk_validateResult = validate; \
79 if (goldfish_vk_validateResult != VK_SUCCESS) return; \
80
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070081#ifdef VK_VERSION_1_0
82VkResult VkEncoder::vkCreateInstance(
83 const VkInstanceCreateInfo* pCreateInfo,
84 const VkAllocationCallbacks* pAllocator,
85 VkInstance* pInstance)
86{
87 auto stream = mImpl->stream();
88 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080089 auto resources = mImpl->resources();
90 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080091 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080092 VkInstanceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080093 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080094 local_pCreateInfo = nullptr;
95 if (pCreateInfo)
96 {
97 local_pCreateInfo = (VkInstanceCreateInfo*)pool->alloc(sizeof(const VkInstanceCreateInfo));
98 deepcopy_VkInstanceCreateInfo(pool, pCreateInfo, (VkInstanceCreateInfo*)(local_pCreateInfo));
99 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800100 local_pAllocator = nullptr;
101 if (pAllocator)
102 {
103 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
104 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
105 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800106 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -0800107 if (local_pCreateInfo)
108 {
109 transform_VkInstanceCreateInfo(mImpl->resources(), (VkInstanceCreateInfo*)(local_pCreateInfo));
110 }
111 if (local_pAllocator)
112 {
113 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
114 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700115 countingStream->rewind();
116 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800117 marshal_VkInstanceCreateInfo(countingStream, (VkInstanceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800118 // WARNING PTR CHECK
119 uint64_t cgen_var_0 = (uint64_t)(uintptr_t)local_pAllocator;
120 countingStream->putBe64(cgen_var_0);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800121 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700122 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800123 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700124 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800125 uint64_t cgen_var_1;
126 countingStream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_1, 1);
127 countingStream->write((uint64_t*)&cgen_var_1, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700128 }
129 uint32_t packetSize_vkCreateInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
130 countingStream->rewind();
131 uint32_t opcode_vkCreateInstance = OP_vkCreateInstance;
132 stream->write(&opcode_vkCreateInstance, sizeof(uint32_t));
133 stream->write(&packetSize_vkCreateInstance, sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800134 marshal_VkInstanceCreateInfo(stream, (VkInstanceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800135 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800136 uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator;
137 stream->putBe64(cgen_var_2);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800138 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700139 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800140 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700141 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800142 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -0800143 uint64_t cgen_var_3;
144 stream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_3, 1);
145 stream->write((uint64_t*)&cgen_var_3, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800146 stream->setHandleMapping(resources->unwrapMapping());
147 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -0800148 uint64_t cgen_var_4;
149 stream->read((uint64_t*)&cgen_var_4, 8);
150 stream->handleMapping()->mapHandles_u64_VkInstance(&cgen_var_4, (VkInstance*)pInstance, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800151 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700152 VkResult vkCreateInstance_VkResult_return = (VkResult)0;
153 stream->read(&vkCreateInstance_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800154 countingStream->clearPool();
155 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800156 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700157 return vkCreateInstance_VkResult_return;
158}
159
160void VkEncoder::vkDestroyInstance(
161 VkInstance instance,
162 const VkAllocationCallbacks* pAllocator)
163{
164 auto stream = mImpl->stream();
165 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800166 auto resources = mImpl->resources();
167 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800168 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800169 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800170 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800171 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800172 local_pAllocator = nullptr;
173 if (pAllocator)
174 {
175 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
176 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
177 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800178 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -0800179 if (local_pAllocator)
180 {
181 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
182 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700183 countingStream->rewind();
184 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800185 uint64_t cgen_var_5;
186 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_5, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800187 countingStream->write((uint64_t*)&cgen_var_5, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800188 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800189 uint64_t cgen_var_6 = (uint64_t)(uintptr_t)local_pAllocator;
190 countingStream->putBe64(cgen_var_6);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800191 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700192 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800193 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700194 }
195 }
196 uint32_t packetSize_vkDestroyInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
197 countingStream->rewind();
198 uint32_t opcode_vkDestroyInstance = OP_vkDestroyInstance;
199 stream->write(&opcode_vkDestroyInstance, sizeof(uint32_t));
200 stream->write(&packetSize_vkDestroyInstance, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800201 uint64_t cgen_var_7;
202 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_7, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800203 stream->write((uint64_t*)&cgen_var_7, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800204 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800205 uint64_t cgen_var_8 = (uint64_t)(uintptr_t)local_pAllocator;
206 stream->putBe64(cgen_var_8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800207 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700208 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800209 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700210 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800211 resources->destroyMapping()->mapHandles_VkInstance((VkInstance*)&instance);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700212}
213
214VkResult VkEncoder::vkEnumeratePhysicalDevices(
215 VkInstance instance,
216 uint32_t* pPhysicalDeviceCount,
217 VkPhysicalDevice* pPhysicalDevices)
218{
219 auto stream = mImpl->stream();
220 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800221 auto resources = mImpl->resources();
222 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800223 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800224 VkInstance local_instance;
225 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700226 countingStream->rewind();
227 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800228 uint64_t cgen_var_9;
229 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_9, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800230 countingStream->write((uint64_t*)&cgen_var_9, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800231 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800232 uint64_t cgen_var_10 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
233 countingStream->putBe64(cgen_var_10);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700234 if (pPhysicalDeviceCount)
235 {
236 countingStream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
237 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800238 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800239 uint64_t cgen_var_11 = (uint64_t)(uintptr_t)pPhysicalDevices;
240 countingStream->putBe64(cgen_var_11);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700241 if (pPhysicalDevices)
242 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800243 if ((*(pPhysicalDeviceCount)))
244 {
245 uint64_t* cgen_var_12;
246 countingStream->alloc((void**)&cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
247 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_12, (*(pPhysicalDeviceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -0800248 countingStream->write((uint64_t*)cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800249 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700250 }
251 }
252 uint32_t packetSize_vkEnumeratePhysicalDevices = 4 + 4 + (uint32_t)countingStream->bytesWritten();
253 countingStream->rewind();
254 uint32_t opcode_vkEnumeratePhysicalDevices = OP_vkEnumeratePhysicalDevices;
255 stream->write(&opcode_vkEnumeratePhysicalDevices, sizeof(uint32_t));
256 stream->write(&packetSize_vkEnumeratePhysicalDevices, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800257 uint64_t cgen_var_13;
258 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_13, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800259 stream->write((uint64_t*)&cgen_var_13, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800260 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800261 uint64_t cgen_var_14 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
262 stream->putBe64(cgen_var_14);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700263 if (pPhysicalDeviceCount)
264 {
265 stream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
266 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800267 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800268 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800269 uint64_t cgen_var_15 = (uint64_t)(uintptr_t)pPhysicalDevices;
270 stream->putBe64(cgen_var_15);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700271 if (pPhysicalDevices)
272 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800273 if ((*(pPhysicalDeviceCount)))
274 {
275 uint64_t* cgen_var_16;
276 stream->alloc((void**)&cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
277 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_16, (*(pPhysicalDeviceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -0800278 stream->write((uint64_t*)cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800279 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700280 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800281 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800282 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700283 uint32_t* check_pPhysicalDeviceCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800284 check_pPhysicalDeviceCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700285 if (pPhysicalDeviceCount)
286 {
287 if (!(check_pPhysicalDeviceCount))
288 {
289 fprintf(stderr, "fatal: pPhysicalDeviceCount inconsistent between guest and host\n");
290 }
291 stream->read((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
292 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800293 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800294 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700295 VkPhysicalDevice* check_pPhysicalDevices;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800296 check_pPhysicalDevices = (VkPhysicalDevice*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700297 if (pPhysicalDevices)
298 {
299 if (!(check_pPhysicalDevices))
300 {
301 fprintf(stderr, "fatal: pPhysicalDevices inconsistent between guest and host\n");
302 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800303 if ((*(pPhysicalDeviceCount)))
304 {
305 uint64_t* cgen_var_19;
306 stream->alloc((void**)&cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800307 stream->read((uint64_t*)cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800308 stream->handleMapping()->mapHandles_u64_VkPhysicalDevice(cgen_var_19, (VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount)));
309 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700310 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800311 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700312 VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
313 stream->read(&vkEnumeratePhysicalDevices_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800314 countingStream->clearPool();
315 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800316 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700317 return vkEnumeratePhysicalDevices_VkResult_return;
318}
319
320void VkEncoder::vkGetPhysicalDeviceFeatures(
321 VkPhysicalDevice physicalDevice,
322 VkPhysicalDeviceFeatures* pFeatures)
323{
324 auto stream = mImpl->stream();
325 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800326 auto resources = mImpl->resources();
327 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800328 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800329 VkPhysicalDevice local_physicalDevice;
330 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700331 countingStream->rewind();
332 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800333 uint64_t cgen_var_20;
334 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_20, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800335 countingStream->write((uint64_t*)&cgen_var_20, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700336 marshal_VkPhysicalDeviceFeatures(countingStream, (VkPhysicalDeviceFeatures*)(pFeatures));
337 }
338 uint32_t packetSize_vkGetPhysicalDeviceFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
339 countingStream->rewind();
340 uint32_t opcode_vkGetPhysicalDeviceFeatures = OP_vkGetPhysicalDeviceFeatures;
341 stream->write(&opcode_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
342 stream->write(&packetSize_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800343 uint64_t cgen_var_21;
344 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_21, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800345 stream->write((uint64_t*)&cgen_var_21, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700346 marshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
347 unmarshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
348}
349
350void VkEncoder::vkGetPhysicalDeviceFormatProperties(
351 VkPhysicalDevice physicalDevice,
352 VkFormat format,
353 VkFormatProperties* pFormatProperties)
354{
355 auto stream = mImpl->stream();
356 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800357 auto resources = mImpl->resources();
358 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800359 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800360 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800361 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800362 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800363 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700364 countingStream->rewind();
365 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800366 uint64_t cgen_var_22;
367 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_22, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800368 countingStream->write((uint64_t*)&cgen_var_22, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800369 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700370 marshal_VkFormatProperties(countingStream, (VkFormatProperties*)(pFormatProperties));
371 }
372 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
373 countingStream->rewind();
374 uint32_t opcode_vkGetPhysicalDeviceFormatProperties = OP_vkGetPhysicalDeviceFormatProperties;
375 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
376 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800377 uint64_t cgen_var_23;
378 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_23, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800379 stream->write((uint64_t*)&cgen_var_23, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800380 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700381 marshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
382 unmarshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
383}
384
385VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties(
386 VkPhysicalDevice physicalDevice,
387 VkFormat format,
388 VkImageType type,
389 VkImageTiling tiling,
390 VkImageUsageFlags usage,
391 VkImageCreateFlags flags,
392 VkImageFormatProperties* pImageFormatProperties)
393{
394 auto stream = mImpl->stream();
395 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800396 auto resources = mImpl->resources();
397 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800398 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800399 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800400 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800401 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800402 VkImageTiling local_tiling;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800403 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800404 VkImageCreateFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800405 local_physicalDevice = physicalDevice;
406 local_format = format;
407 local_type = type;
408 local_tiling = tiling;
409 local_usage = usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800410 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700411 countingStream->rewind();
412 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800413 uint64_t cgen_var_24;
414 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_24, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800415 countingStream->write((uint64_t*)&cgen_var_24, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800416 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
417 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
418 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
419 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
420 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700421 marshal_VkImageFormatProperties(countingStream, (VkImageFormatProperties*)(pImageFormatProperties));
422 }
423 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
424 countingStream->rewind();
425 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties = OP_vkGetPhysicalDeviceImageFormatProperties;
426 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
427 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800428 uint64_t cgen_var_25;
429 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_25, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800430 stream->write((uint64_t*)&cgen_var_25, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800431 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
432 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
433 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
434 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
435 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700436 marshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
437 unmarshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
438 VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
439 stream->read(&vkGetPhysicalDeviceImageFormatProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800440 countingStream->clearPool();
441 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800442 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700443 return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
444}
445
446void VkEncoder::vkGetPhysicalDeviceProperties(
447 VkPhysicalDevice physicalDevice,
448 VkPhysicalDeviceProperties* pProperties)
449{
450 auto stream = mImpl->stream();
451 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800452 auto resources = mImpl->resources();
453 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800454 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800455 VkPhysicalDevice local_physicalDevice;
456 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700457 countingStream->rewind();
458 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800459 uint64_t cgen_var_26;
460 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_26, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800461 countingStream->write((uint64_t*)&cgen_var_26, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700462 marshal_VkPhysicalDeviceProperties(countingStream, (VkPhysicalDeviceProperties*)(pProperties));
463 }
464 uint32_t packetSize_vkGetPhysicalDeviceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
465 countingStream->rewind();
466 uint32_t opcode_vkGetPhysicalDeviceProperties = OP_vkGetPhysicalDeviceProperties;
467 stream->write(&opcode_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
468 stream->write(&packetSize_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800469 uint64_t cgen_var_27;
470 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_27, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800471 stream->write((uint64_t*)&cgen_var_27, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700472 marshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
473 unmarshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
474}
475
476void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties(
477 VkPhysicalDevice physicalDevice,
478 uint32_t* pQueueFamilyPropertyCount,
479 VkQueueFamilyProperties* pQueueFamilyProperties)
480{
481 auto stream = mImpl->stream();
482 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800483 auto resources = mImpl->resources();
484 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800485 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800486 VkPhysicalDevice local_physicalDevice;
487 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700488 countingStream->rewind();
489 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800490 uint64_t cgen_var_28;
491 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_28, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800492 countingStream->write((uint64_t*)&cgen_var_28, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800493 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800494 uint64_t cgen_var_29 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
495 countingStream->putBe64(cgen_var_29);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700496 if (pQueueFamilyPropertyCount)
497 {
498 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
499 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800500 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800501 uint64_t cgen_var_30 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
502 countingStream->putBe64(cgen_var_30);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700503 if (pQueueFamilyProperties)
504 {
505 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
506 {
507 marshal_VkQueueFamilyProperties(countingStream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
508 }
509 }
510 }
511 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
512 countingStream->rewind();
513 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties = OP_vkGetPhysicalDeviceQueueFamilyProperties;
514 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
515 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800516 uint64_t cgen_var_31;
517 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_31, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800518 stream->write((uint64_t*)&cgen_var_31, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800519 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800520 uint64_t cgen_var_32 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
521 stream->putBe64(cgen_var_32);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700522 if (pQueueFamilyPropertyCount)
523 {
524 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
525 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800526 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800527 uint64_t cgen_var_33 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
528 stream->putBe64(cgen_var_33);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700529 if (pQueueFamilyProperties)
530 {
531 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
532 {
533 marshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
534 }
535 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800536 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700537 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800538 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700539 if (pQueueFamilyPropertyCount)
540 {
541 if (!(check_pQueueFamilyPropertyCount))
542 {
543 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
544 }
545 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
546 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800547 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700548 VkQueueFamilyProperties* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800549 check_pQueueFamilyProperties = (VkQueueFamilyProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700550 if (pQueueFamilyProperties)
551 {
552 if (!(check_pQueueFamilyProperties))
553 {
554 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
555 }
556 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
557 {
558 unmarshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
559 }
560 }
561}
562
563void VkEncoder::vkGetPhysicalDeviceMemoryProperties(
564 VkPhysicalDevice physicalDevice,
565 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
566{
567 auto stream = mImpl->stream();
568 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800569 auto resources = mImpl->resources();
570 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800571 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800572 VkPhysicalDevice local_physicalDevice;
573 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700574 countingStream->rewind();
575 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800576 uint64_t cgen_var_36;
577 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_36, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800578 countingStream->write((uint64_t*)&cgen_var_36, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700579 marshal_VkPhysicalDeviceMemoryProperties(countingStream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
580 }
581 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
582 countingStream->rewind();
583 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties = OP_vkGetPhysicalDeviceMemoryProperties;
584 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
585 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800586 uint64_t cgen_var_37;
587 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_37, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800588 stream->write((uint64_t*)&cgen_var_37, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700589 marshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
590 unmarshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
591}
592
593PFN_vkVoidFunction VkEncoder::vkGetInstanceProcAddr(
594 VkInstance instance,
595 const char* pName)
596{
597 auto stream = mImpl->stream();
598 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800599 auto resources = mImpl->resources();
600 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800601 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800602 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800603 char* local_pName;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800604 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800605 local_pName = nullptr;
606 if (pName)
607 {
608 local_pName = pool->strDup(pName);
609 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700610 countingStream->rewind();
611 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800612 uint64_t cgen_var_38;
613 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_38, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800614 countingStream->write((uint64_t*)&cgen_var_38, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800615 countingStream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700616 }
617 uint32_t packetSize_vkGetInstanceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
618 countingStream->rewind();
619 uint32_t opcode_vkGetInstanceProcAddr = OP_vkGetInstanceProcAddr;
620 stream->write(&opcode_vkGetInstanceProcAddr, sizeof(uint32_t));
621 stream->write(&packetSize_vkGetInstanceProcAddr, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800622 uint64_t cgen_var_39;
623 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_39, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800624 stream->write((uint64_t*)&cgen_var_39, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800625 stream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700626 PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
627 stream->read(&vkGetInstanceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800628 countingStream->clearPool();
629 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800630 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700631 return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
632}
633
634PFN_vkVoidFunction VkEncoder::vkGetDeviceProcAddr(
635 VkDevice device,
636 const char* pName)
637{
638 auto stream = mImpl->stream();
639 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800640 auto resources = mImpl->resources();
641 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800642 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800643 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800644 char* local_pName;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800645 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800646 local_pName = nullptr;
647 if (pName)
648 {
649 local_pName = pool->strDup(pName);
650 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700651 countingStream->rewind();
652 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800653 uint64_t cgen_var_40;
654 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_40, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800655 countingStream->write((uint64_t*)&cgen_var_40, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800656 countingStream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700657 }
658 uint32_t packetSize_vkGetDeviceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
659 countingStream->rewind();
660 uint32_t opcode_vkGetDeviceProcAddr = OP_vkGetDeviceProcAddr;
661 stream->write(&opcode_vkGetDeviceProcAddr, sizeof(uint32_t));
662 stream->write(&packetSize_vkGetDeviceProcAddr, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800663 uint64_t cgen_var_41;
664 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_41, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800665 stream->write((uint64_t*)&cgen_var_41, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800666 stream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700667 PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
668 stream->read(&vkGetDeviceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800669 countingStream->clearPool();
670 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800671 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700672 return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
673}
674
675VkResult VkEncoder::vkCreateDevice(
676 VkPhysicalDevice physicalDevice,
677 const VkDeviceCreateInfo* pCreateInfo,
678 const VkAllocationCallbacks* pAllocator,
679 VkDevice* pDevice)
680{
681 auto stream = mImpl->stream();
682 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800683 auto resources = mImpl->resources();
684 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800685 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800686 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800687 VkDeviceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800688 VkAllocationCallbacks* local_pAllocator;
689 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800690 local_pCreateInfo = nullptr;
691 if (pCreateInfo)
692 {
693 local_pCreateInfo = (VkDeviceCreateInfo*)pool->alloc(sizeof(const VkDeviceCreateInfo));
694 deepcopy_VkDeviceCreateInfo(pool, pCreateInfo, (VkDeviceCreateInfo*)(local_pCreateInfo));
695 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800696 local_pAllocator = nullptr;
697 if (pAllocator)
698 {
699 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
700 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
701 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800702 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -0800703 if (local_pCreateInfo)
704 {
705 transform_VkDeviceCreateInfo(mImpl->resources(), (VkDeviceCreateInfo*)(local_pCreateInfo));
706 }
707 if (local_pAllocator)
708 {
709 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
710 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700711 countingStream->rewind();
712 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800713 uint64_t cgen_var_42;
714 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_42, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800715 countingStream->write((uint64_t*)&cgen_var_42, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800716 marshal_VkDeviceCreateInfo(countingStream, (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800717 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800718 uint64_t cgen_var_43 = (uint64_t)(uintptr_t)local_pAllocator;
719 countingStream->putBe64(cgen_var_43);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800720 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700721 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800722 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700723 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800724 uint64_t cgen_var_44;
725 countingStream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_44, 1);
726 countingStream->write((uint64_t*)&cgen_var_44, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700727 }
728 uint32_t packetSize_vkCreateDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
729 countingStream->rewind();
730 uint32_t opcode_vkCreateDevice = OP_vkCreateDevice;
731 stream->write(&opcode_vkCreateDevice, sizeof(uint32_t));
732 stream->write(&packetSize_vkCreateDevice, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800733 uint64_t cgen_var_45;
734 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_45, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800735 stream->write((uint64_t*)&cgen_var_45, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800736 marshal_VkDeviceCreateInfo(stream, (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800737 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800738 uint64_t cgen_var_46 = (uint64_t)(uintptr_t)local_pAllocator;
739 stream->putBe64(cgen_var_46);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800740 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700741 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800742 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700743 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800744 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -0800745 uint64_t cgen_var_47;
746 stream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_47, 1);
747 stream->write((uint64_t*)&cgen_var_47, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800748 stream->setHandleMapping(resources->unwrapMapping());
749 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -0800750 uint64_t cgen_var_48;
751 stream->read((uint64_t*)&cgen_var_48, 8);
752 stream->handleMapping()->mapHandles_u64_VkDevice(&cgen_var_48, (VkDevice*)pDevice, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800753 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700754 VkResult vkCreateDevice_VkResult_return = (VkResult)0;
755 stream->read(&vkCreateDevice_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800756 countingStream->clearPool();
757 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800758 pool->freeAll();
Lingfeng Yang131d5a42018-11-30 12:00:33 -0800759 mImpl->resources()->on_vkCreateDevice(this, vkCreateDevice_VkResult_return, physicalDevice, pCreateInfo, pAllocator, pDevice);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700760 return vkCreateDevice_VkResult_return;
761}
762
763void VkEncoder::vkDestroyDevice(
764 VkDevice device,
765 const VkAllocationCallbacks* pAllocator)
766{
767 auto stream = mImpl->stream();
768 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800769 auto resources = mImpl->resources();
770 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800771 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800772 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800773 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800774 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800775 local_pAllocator = nullptr;
776 if (pAllocator)
777 {
778 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
779 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
780 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800781 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -0800782 if (local_pAllocator)
783 {
784 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
785 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700786 countingStream->rewind();
787 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800788 uint64_t cgen_var_49;
789 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_49, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800790 countingStream->write((uint64_t*)&cgen_var_49, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800791 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800792 uint64_t cgen_var_50 = (uint64_t)(uintptr_t)local_pAllocator;
793 countingStream->putBe64(cgen_var_50);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800794 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700795 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800796 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700797 }
798 }
799 uint32_t packetSize_vkDestroyDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
800 countingStream->rewind();
801 uint32_t opcode_vkDestroyDevice = OP_vkDestroyDevice;
802 stream->write(&opcode_vkDestroyDevice, sizeof(uint32_t));
803 stream->write(&packetSize_vkDestroyDevice, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800804 uint64_t cgen_var_51;
805 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_51, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800806 stream->write((uint64_t*)&cgen_var_51, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800807 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800808 uint64_t cgen_var_52 = (uint64_t)(uintptr_t)local_pAllocator;
809 stream->putBe64(cgen_var_52);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800810 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700811 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800812 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700813 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800814 resources->destroyMapping()->mapHandles_VkDevice((VkDevice*)&device);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700815}
816
817VkResult VkEncoder::vkEnumerateInstanceExtensionProperties(
818 const char* pLayerName,
819 uint32_t* pPropertyCount,
820 VkExtensionProperties* pProperties)
821{
822 auto stream = mImpl->stream();
823 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800824 auto resources = mImpl->resources();
825 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800826 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800827 char* local_pLayerName;
828 local_pLayerName = nullptr;
829 if (pLayerName)
830 {
831 local_pLayerName = pool->strDup(pLayerName);
832 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700833 countingStream->rewind();
834 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800835 countingStream->putString(local_pLayerName);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800836 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800837 uint64_t cgen_var_53 = (uint64_t)(uintptr_t)pPropertyCount;
838 countingStream->putBe64(cgen_var_53);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700839 if (pPropertyCount)
840 {
841 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
842 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800843 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800844 uint64_t cgen_var_54 = (uint64_t)(uintptr_t)pProperties;
845 countingStream->putBe64(cgen_var_54);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700846 if (pProperties)
847 {
848 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
849 {
850 marshal_VkExtensionProperties(countingStream, (VkExtensionProperties*)(pProperties + i));
851 }
852 }
853 }
854 uint32_t packetSize_vkEnumerateInstanceExtensionProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
855 countingStream->rewind();
856 uint32_t opcode_vkEnumerateInstanceExtensionProperties = OP_vkEnumerateInstanceExtensionProperties;
857 stream->write(&opcode_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
858 stream->write(&packetSize_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800859 stream->putString(local_pLayerName);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800860 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800861 uint64_t cgen_var_55 = (uint64_t)(uintptr_t)pPropertyCount;
862 stream->putBe64(cgen_var_55);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700863 if (pPropertyCount)
864 {
865 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
866 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800867 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800868 uint64_t cgen_var_56 = (uint64_t)(uintptr_t)pProperties;
869 stream->putBe64(cgen_var_56);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700870 if (pProperties)
871 {
872 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
873 {
874 marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
875 }
876 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800877 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700878 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800879 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700880 if (pPropertyCount)
881 {
882 if (!(check_pPropertyCount))
883 {
884 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
885 }
886 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
887 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800888 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700889 VkExtensionProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800890 check_pProperties = (VkExtensionProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700891 if (pProperties)
892 {
893 if (!(check_pProperties))
894 {
895 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
896 }
897 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
898 {
899 unmarshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
900 }
901 }
902 VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
903 stream->read(&vkEnumerateInstanceExtensionProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800904 countingStream->clearPool();
905 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800906 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700907 return vkEnumerateInstanceExtensionProperties_VkResult_return;
908}
909
910VkResult VkEncoder::vkEnumerateDeviceExtensionProperties(
911 VkPhysicalDevice physicalDevice,
912 const char* pLayerName,
913 uint32_t* pPropertyCount,
914 VkExtensionProperties* pProperties)
915{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700916 VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -0800917 vkEnumerateDeviceExtensionProperties_VkResult_return = mImpl->resources()->on_vkEnumerateDeviceExtensionProperties(this, VK_SUCCESS, physicalDevice, pLayerName, pPropertyCount, pProperties);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700918 return vkEnumerateDeviceExtensionProperties_VkResult_return;
919}
920
921VkResult VkEncoder::vkEnumerateInstanceLayerProperties(
922 uint32_t* pPropertyCount,
923 VkLayerProperties* pProperties)
924{
925 auto stream = mImpl->stream();
926 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800927 auto resources = mImpl->resources();
928 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800929 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700930 countingStream->rewind();
931 {
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800932 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800933 uint64_t cgen_var_59 = (uint64_t)(uintptr_t)pPropertyCount;
934 countingStream->putBe64(cgen_var_59);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700935 if (pPropertyCount)
936 {
937 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
938 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800939 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800940 uint64_t cgen_var_60 = (uint64_t)(uintptr_t)pProperties;
941 countingStream->putBe64(cgen_var_60);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700942 if (pProperties)
943 {
944 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
945 {
946 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
947 }
948 }
949 }
950 uint32_t packetSize_vkEnumerateInstanceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
951 countingStream->rewind();
952 uint32_t opcode_vkEnumerateInstanceLayerProperties = OP_vkEnumerateInstanceLayerProperties;
953 stream->write(&opcode_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
954 stream->write(&packetSize_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800955 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800956 uint64_t cgen_var_61 = (uint64_t)(uintptr_t)pPropertyCount;
957 stream->putBe64(cgen_var_61);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700958 if (pPropertyCount)
959 {
960 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
961 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800962 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800963 uint64_t cgen_var_62 = (uint64_t)(uintptr_t)pProperties;
964 stream->putBe64(cgen_var_62);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700965 if (pProperties)
966 {
967 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
968 {
969 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
970 }
971 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800972 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700973 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800974 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700975 if (pPropertyCount)
976 {
977 if (!(check_pPropertyCount))
978 {
979 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
980 }
981 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
982 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800983 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700984 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800985 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700986 if (pProperties)
987 {
988 if (!(check_pProperties))
989 {
990 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
991 }
992 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
993 {
994 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
995 }
996 }
997 VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
998 stream->read(&vkEnumerateInstanceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800999 countingStream->clearPool();
1000 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001001 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001002 return vkEnumerateInstanceLayerProperties_VkResult_return;
1003}
1004
1005VkResult VkEncoder::vkEnumerateDeviceLayerProperties(
1006 VkPhysicalDevice physicalDevice,
1007 uint32_t* pPropertyCount,
1008 VkLayerProperties* pProperties)
1009{
1010 auto stream = mImpl->stream();
1011 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001012 auto resources = mImpl->resources();
1013 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001014 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001015 VkPhysicalDevice local_physicalDevice;
1016 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001017 countingStream->rewind();
1018 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001019 uint64_t cgen_var_65;
1020 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_65, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001021 countingStream->write((uint64_t*)&cgen_var_65, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001022 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001023 uint64_t cgen_var_66 = (uint64_t)(uintptr_t)pPropertyCount;
1024 countingStream->putBe64(cgen_var_66);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001025 if (pPropertyCount)
1026 {
1027 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1028 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001029 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001030 uint64_t cgen_var_67 = (uint64_t)(uintptr_t)pProperties;
1031 countingStream->putBe64(cgen_var_67);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001032 if (pProperties)
1033 {
1034 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1035 {
1036 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
1037 }
1038 }
1039 }
1040 uint32_t packetSize_vkEnumerateDeviceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1041 countingStream->rewind();
1042 uint32_t opcode_vkEnumerateDeviceLayerProperties = OP_vkEnumerateDeviceLayerProperties;
1043 stream->write(&opcode_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
1044 stream->write(&packetSize_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001045 uint64_t cgen_var_68;
1046 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_68, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001047 stream->write((uint64_t*)&cgen_var_68, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001048 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001049 uint64_t cgen_var_69 = (uint64_t)(uintptr_t)pPropertyCount;
1050 stream->putBe64(cgen_var_69);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001051 if (pPropertyCount)
1052 {
1053 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1054 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001055 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001056 uint64_t cgen_var_70 = (uint64_t)(uintptr_t)pProperties;
1057 stream->putBe64(cgen_var_70);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001058 if (pProperties)
1059 {
1060 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1061 {
1062 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1063 }
1064 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001065 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001066 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001067 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001068 if (pPropertyCount)
1069 {
1070 if (!(check_pPropertyCount))
1071 {
1072 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1073 }
1074 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1075 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001076 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001077 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001078 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001079 if (pProperties)
1080 {
1081 if (!(check_pProperties))
1082 {
1083 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1084 }
1085 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1086 {
1087 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1088 }
1089 }
1090 VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
1091 stream->read(&vkEnumerateDeviceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001092 countingStream->clearPool();
1093 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001094 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001095 return vkEnumerateDeviceLayerProperties_VkResult_return;
1096}
1097
1098void VkEncoder::vkGetDeviceQueue(
1099 VkDevice device,
1100 uint32_t queueFamilyIndex,
1101 uint32_t queueIndex,
1102 VkQueue* pQueue)
1103{
1104 auto stream = mImpl->stream();
1105 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001106 auto resources = mImpl->resources();
1107 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001108 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001109 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001110 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001111 uint32_t local_queueIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001112 local_device = device;
1113 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001114 local_queueIndex = queueIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001115 countingStream->rewind();
1116 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001117 uint64_t cgen_var_73;
1118 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_73, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001119 countingStream->write((uint64_t*)&cgen_var_73, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001120 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1121 countingStream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001122 uint64_t cgen_var_74;
1123 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_74, 1);
1124 countingStream->write((uint64_t*)&cgen_var_74, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001125 }
1126 uint32_t packetSize_vkGetDeviceQueue = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1127 countingStream->rewind();
1128 uint32_t opcode_vkGetDeviceQueue = OP_vkGetDeviceQueue;
1129 stream->write(&opcode_vkGetDeviceQueue, sizeof(uint32_t));
1130 stream->write(&packetSize_vkGetDeviceQueue, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001131 uint64_t cgen_var_75;
1132 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_75, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001133 stream->write((uint64_t*)&cgen_var_75, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001134 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1135 stream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yange4008a02018-11-18 12:22:48 -08001136 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08001137 uint64_t cgen_var_76;
1138 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_76, 1);
1139 stream->write((uint64_t*)&cgen_var_76, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001140 stream->setHandleMapping(resources->unwrapMapping());
1141 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08001142 uint64_t cgen_var_77;
1143 stream->read((uint64_t*)&cgen_var_77, 8);
1144 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_77, (VkQueue*)pQueue, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001145 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001146}
1147
1148VkResult VkEncoder::vkQueueSubmit(
1149 VkQueue queue,
1150 uint32_t submitCount,
1151 const VkSubmitInfo* pSubmits,
1152 VkFence fence)
1153{
1154 auto stream = mImpl->stream();
1155 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001156 auto resources = mImpl->resources();
1157 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001158 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001159 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001160 uint32_t local_submitCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001161 VkSubmitInfo* local_pSubmits;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001162 VkFence local_fence;
1163 local_queue = queue;
1164 local_submitCount = submitCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001165 local_pSubmits = nullptr;
1166 if (pSubmits)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001167 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001168 local_pSubmits = (VkSubmitInfo*)pool->alloc(((submitCount)) * sizeof(const VkSubmitInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001169 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1170 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001171 deepcopy_VkSubmitInfo(pool, pSubmits + i, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001172 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001173 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001174 local_fence = fence;
Lingfeng Yang62b23322018-12-24 12:45:47 -08001175 if (local_pSubmits)
1176 {
1177 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1178 {
1179 transform_VkSubmitInfo(mImpl->resources(), (VkSubmitInfo*)(local_pSubmits + i));
1180 }
1181 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001182 countingStream->rewind();
1183 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001184 uint64_t cgen_var_78;
1185 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_78, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001186 countingStream->write((uint64_t*)&cgen_var_78, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001187 countingStream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
1188 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1189 {
1190 marshal_VkSubmitInfo(countingStream, (VkSubmitInfo*)(local_pSubmits + i));
1191 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001192 uint64_t cgen_var_79;
1193 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_79, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001194 countingStream->write((uint64_t*)&cgen_var_79, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001195 }
1196 uint32_t packetSize_vkQueueSubmit = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1197 countingStream->rewind();
1198 uint32_t opcode_vkQueueSubmit = OP_vkQueueSubmit;
1199 stream->write(&opcode_vkQueueSubmit, sizeof(uint32_t));
1200 stream->write(&packetSize_vkQueueSubmit, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001201 uint64_t cgen_var_80;
1202 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_80, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001203 stream->write((uint64_t*)&cgen_var_80, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001204 stream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001205 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1206 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001207 marshal_VkSubmitInfo(stream, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001208 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001209 uint64_t cgen_var_81;
1210 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_81, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001211 stream->write((uint64_t*)&cgen_var_81, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001212 VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
1213 stream->read(&vkQueueSubmit_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 vkQueueSubmit_VkResult_return;
1218}
1219
1220VkResult VkEncoder::vkQueueWaitIdle(
1221 VkQueue queue)
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 VkQueue local_queue;
1229 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001230 countingStream->rewind();
1231 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001232 uint64_t cgen_var_82;
1233 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_82, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001234 countingStream->write((uint64_t*)&cgen_var_82, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001235 }
1236 uint32_t packetSize_vkQueueWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1237 countingStream->rewind();
1238 uint32_t opcode_vkQueueWaitIdle = OP_vkQueueWaitIdle;
1239 stream->write(&opcode_vkQueueWaitIdle, sizeof(uint32_t));
1240 stream->write(&packetSize_vkQueueWaitIdle, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001241 uint64_t cgen_var_83;
1242 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_83, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001243 stream->write((uint64_t*)&cgen_var_83, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001244 VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
1245 stream->read(&vkQueueWaitIdle_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 vkQueueWaitIdle_VkResult_return;
1250}
1251
1252VkResult VkEncoder::vkDeviceWaitIdle(
1253 VkDevice device)
1254{
1255 auto stream = mImpl->stream();
1256 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001257 auto resources = mImpl->resources();
1258 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001259 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001260 VkDevice local_device;
1261 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001262 countingStream->rewind();
1263 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001264 uint64_t cgen_var_84;
1265 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_84, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001266 countingStream->write((uint64_t*)&cgen_var_84, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001267 }
1268 uint32_t packetSize_vkDeviceWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1269 countingStream->rewind();
1270 uint32_t opcode_vkDeviceWaitIdle = OP_vkDeviceWaitIdle;
1271 stream->write(&opcode_vkDeviceWaitIdle, sizeof(uint32_t));
1272 stream->write(&packetSize_vkDeviceWaitIdle, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001273 uint64_t cgen_var_85;
1274 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_85, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001275 stream->write((uint64_t*)&cgen_var_85, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001276 VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
1277 stream->read(&vkDeviceWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001278 countingStream->clearPool();
1279 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001280 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001281 return vkDeviceWaitIdle_VkResult_return;
1282}
1283
1284VkResult VkEncoder::vkAllocateMemory(
1285 VkDevice device,
1286 const VkMemoryAllocateInfo* pAllocateInfo,
1287 const VkAllocationCallbacks* pAllocator,
1288 VkDeviceMemory* pMemory)
1289{
1290 auto stream = mImpl->stream();
1291 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001292 auto resources = mImpl->resources();
1293 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001294 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001295 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001296 VkMemoryAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001297 VkAllocationCallbacks* local_pAllocator;
1298 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001299 local_pAllocateInfo = nullptr;
1300 if (pAllocateInfo)
1301 {
1302 local_pAllocateInfo = (VkMemoryAllocateInfo*)pool->alloc(sizeof(const VkMemoryAllocateInfo));
1303 deepcopy_VkMemoryAllocateInfo(pool, pAllocateInfo, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
1304 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001305 local_pAllocator = nullptr;
1306 if (pAllocator)
1307 {
1308 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1309 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1310 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001311 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08001312 if (local_pAllocateInfo)
1313 {
1314 transform_VkMemoryAllocateInfo(mImpl->resources(), (VkMemoryAllocateInfo*)(local_pAllocateInfo));
1315 }
1316 if (local_pAllocator)
1317 {
1318 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
1319 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001320 countingStream->rewind();
1321 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001322 uint64_t cgen_var_86;
1323 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_86, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001324 countingStream->write((uint64_t*)&cgen_var_86, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001325 marshal_VkMemoryAllocateInfo(countingStream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001326 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001327 uint64_t cgen_var_87 = (uint64_t)(uintptr_t)local_pAllocator;
1328 countingStream->putBe64(cgen_var_87);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001329 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001330 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001331 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001332 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001333 uint64_t cgen_var_88;
1334 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_88, 1);
1335 countingStream->write((uint64_t*)&cgen_var_88, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001336 }
1337 uint32_t packetSize_vkAllocateMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1338 countingStream->rewind();
1339 uint32_t opcode_vkAllocateMemory = OP_vkAllocateMemory;
1340 stream->write(&opcode_vkAllocateMemory, sizeof(uint32_t));
1341 stream->write(&packetSize_vkAllocateMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001342 uint64_t cgen_var_89;
1343 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_89, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001344 stream->write((uint64_t*)&cgen_var_89, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001345 marshal_VkMemoryAllocateInfo(stream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001346 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001347 uint64_t cgen_var_90 = (uint64_t)(uintptr_t)local_pAllocator;
1348 stream->putBe64(cgen_var_90);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001349 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001350 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001351 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001352 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08001353 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08001354 uint64_t cgen_var_91;
1355 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_91, 1);
1356 stream->write((uint64_t*)&cgen_var_91, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001357 stream->setHandleMapping(resources->unwrapMapping());
1358 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08001359 uint64_t cgen_var_92;
1360 stream->read((uint64_t*)&cgen_var_92, 8);
1361 stream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_92, (VkDeviceMemory*)pMemory, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001362 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001363 VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
1364 stream->read(&vkAllocateMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001365 countingStream->clearPool();
1366 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001367 pool->freeAll();
Lingfeng Yang131d5a42018-11-30 12:00:33 -08001368 mImpl->resources()->on_vkAllocateMemory(this, vkAllocateMemory_VkResult_return, device, pAllocateInfo, pAllocator, pMemory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001369 return vkAllocateMemory_VkResult_return;
1370}
1371
1372void VkEncoder::vkFreeMemory(
1373 VkDevice device,
1374 VkDeviceMemory memory,
1375 const VkAllocationCallbacks* pAllocator)
1376{
1377 auto stream = mImpl->stream();
1378 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001379 auto resources = mImpl->resources();
1380 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001381 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001382 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001383 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001384 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001385 local_device = device;
1386 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001387 local_pAllocator = nullptr;
1388 if (pAllocator)
1389 {
1390 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1391 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1392 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001393 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08001394 mImpl->resources()->deviceMemoryTransform(&local_memory, 1, nullptr, 1, nullptr, 1, nullptr, 1, nullptr, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001395 countingStream->rewind();
1396 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001397 uint64_t cgen_var_93;
1398 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_93, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001399 countingStream->write((uint64_t*)&cgen_var_93, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001400 uint64_t cgen_var_94;
1401 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_94, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001402 countingStream->write((uint64_t*)&cgen_var_94, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001403 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001404 uint64_t cgen_var_95 = (uint64_t)(uintptr_t)local_pAllocator;
1405 countingStream->putBe64(cgen_var_95);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001406 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001407 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001408 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001409 }
1410 }
1411 uint32_t packetSize_vkFreeMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1412 countingStream->rewind();
1413 uint32_t opcode_vkFreeMemory = OP_vkFreeMemory;
1414 stream->write(&opcode_vkFreeMemory, sizeof(uint32_t));
1415 stream->write(&packetSize_vkFreeMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001416 uint64_t cgen_var_96;
1417 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_96, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001418 stream->write((uint64_t*)&cgen_var_96, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001419 uint64_t cgen_var_97;
1420 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_97, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001421 stream->write((uint64_t*)&cgen_var_97, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001422 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001423 uint64_t cgen_var_98 = (uint64_t)(uintptr_t)local_pAllocator;
1424 stream->putBe64(cgen_var_98);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001425 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001426 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001427 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001428 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001429 resources->destroyMapping()->mapHandles_VkDeviceMemory((VkDeviceMemory*)&memory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001430}
1431
1432VkResult VkEncoder::vkMapMemory(
1433 VkDevice device,
1434 VkDeviceMemory memory,
1435 VkDeviceSize offset,
1436 VkDeviceSize size,
1437 VkMemoryMapFlags flags,
1438 void** ppData)
1439{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001440 VkResult vkMapMemory_VkResult_return = (VkResult)0;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08001441 vkMapMemory_VkResult_return = mImpl->resources()->on_vkMapMemory(this, VK_SUCCESS, device, memory, offset, size, flags, ppData);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001442 return vkMapMemory_VkResult_return;
1443}
1444
1445void VkEncoder::vkUnmapMemory(
1446 VkDevice device,
1447 VkDeviceMemory memory)
1448{
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08001449 mImpl->resources()->on_vkUnmapMemory(this, device, memory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001450}
1451
1452VkResult VkEncoder::vkFlushMappedMemoryRanges(
1453 VkDevice device,
1454 uint32_t memoryRangeCount,
1455 const VkMappedMemoryRange* pMemoryRanges)
1456{
Lingfeng Yang29c99d92018-11-30 11:15:29 -08001457 VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkFlushMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001458 auto stream = mImpl->stream();
1459 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001460 auto resources = mImpl->resources();
1461 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001462 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001463 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001464 uint32_t local_memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001465 VkMappedMemoryRange* local_pMemoryRanges;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001466 local_device = device;
1467 local_memoryRangeCount = memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001468 local_pMemoryRanges = nullptr;
1469 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001470 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001471 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001472 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1473 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001474 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1475 }
1476 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08001477 if (local_pMemoryRanges)
1478 {
1479 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1480 {
1481 transform_VkMappedMemoryRange(mImpl->resources(), (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1482 }
1483 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001484 countingStream->rewind();
1485 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001486 uint64_t cgen_var_99;
1487 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_99, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001488 countingStream->write((uint64_t*)&cgen_var_99, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001489 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1490 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1491 {
1492 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001493 }
1494 }
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001495 if (!resources->usingDirectMapping())
Lingfeng Yange30d3382018-11-09 08:24:37 -08001496 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001497 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1498 {
1499 auto range = pMemoryRanges[i];
1500 auto memory = pMemoryRanges[i].memory;
1501 auto size = pMemoryRanges[i].size;
1502 auto offset = pMemoryRanges[i].offset;
1503 uint64_t streamSize = 0;
1504 if (!memory) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
1505 auto hostPtr = resources->getMappedPointer(memory);
1506 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1507 if (!hostPtr) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
1508 streamSize = actualSize;
1509 countingStream->write(&streamSize, sizeof(uint64_t));
1510 uint8_t* targetRange = hostPtr + offset;
1511 countingStream->write(targetRange, actualSize);
1512 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001513 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001514 uint32_t packetSize_vkFlushMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1515 countingStream->rewind();
1516 uint32_t opcode_vkFlushMappedMemoryRanges = OP_vkFlushMappedMemoryRanges;
1517 stream->write(&opcode_vkFlushMappedMemoryRanges, sizeof(uint32_t));
1518 stream->write(&packetSize_vkFlushMappedMemoryRanges, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001519 uint64_t cgen_var_100;
1520 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_100, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001521 stream->write((uint64_t*)&cgen_var_100, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001522 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001523 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1524 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001525 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001526 }
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001527 if (!resources->usingDirectMapping())
Lingfeng Yange30d3382018-11-09 08:24:37 -08001528 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001529 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1530 {
1531 auto range = pMemoryRanges[i];
1532 auto memory = pMemoryRanges[i].memory;
1533 auto size = pMemoryRanges[i].size;
1534 auto offset = pMemoryRanges[i].offset;
1535 uint64_t streamSize = 0;
1536 if (!memory) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
1537 auto hostPtr = resources->getMappedPointer(memory);
1538 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1539 if (!hostPtr) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
1540 streamSize = actualSize;
1541 stream->write(&streamSize, sizeof(uint64_t));
1542 uint8_t* targetRange = hostPtr + offset;
1543 stream->write(targetRange, actualSize);
1544 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001545 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001546 VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
1547 stream->read(&vkFlushMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001548 countingStream->clearPool();
1549 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001550 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001551 return vkFlushMappedMemoryRanges_VkResult_return;
1552}
1553
1554VkResult VkEncoder::vkInvalidateMappedMemoryRanges(
1555 VkDevice device,
1556 uint32_t memoryRangeCount,
1557 const VkMappedMemoryRange* pMemoryRanges)
1558{
Lingfeng Yang29c99d92018-11-30 11:15:29 -08001559 VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkInvalidateMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001560 auto stream = mImpl->stream();
1561 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001562 auto resources = mImpl->resources();
1563 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001564 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001565 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001566 uint32_t local_memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001567 VkMappedMemoryRange* local_pMemoryRanges;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001568 local_device = device;
1569 local_memoryRangeCount = memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001570 local_pMemoryRanges = nullptr;
1571 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001572 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001573 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001574 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1575 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001576 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1577 }
1578 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08001579 if (local_pMemoryRanges)
1580 {
1581 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1582 {
1583 transform_VkMappedMemoryRange(mImpl->resources(), (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1584 }
1585 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001586 countingStream->rewind();
1587 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001588 uint64_t cgen_var_101;
1589 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_101, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001590 countingStream->write((uint64_t*)&cgen_var_101, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001591 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1592 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1593 {
1594 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001595 }
1596 }
1597 uint32_t packetSize_vkInvalidateMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1598 countingStream->rewind();
1599 uint32_t opcode_vkInvalidateMappedMemoryRanges = OP_vkInvalidateMappedMemoryRanges;
1600 stream->write(&opcode_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
1601 stream->write(&packetSize_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001602 uint64_t cgen_var_102;
1603 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_102, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001604 stream->write((uint64_t*)&cgen_var_102, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001605 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001606 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1607 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001608 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001609 }
1610 VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
1611 stream->read(&vkInvalidateMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001612 countingStream->clearPool();
1613 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001614 pool->freeAll();
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001615 if (!resources->usingDirectMapping())
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001616 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001617 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1618 {
1619 auto range = pMemoryRanges[i];
1620 auto memory = pMemoryRanges[i].memory;
1621 auto size = pMemoryRanges[i].size;
1622 auto offset = pMemoryRanges[i].offset;
1623 uint64_t streamSize = 0;
1624 if (!memory) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
1625 auto hostPtr = resources->getMappedPointer(memory);
1626 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1627 if (!hostPtr) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
1628 streamSize = actualSize;
1629 stream->read(&streamSize, sizeof(uint64_t));
1630 uint8_t* targetRange = hostPtr + offset;
1631 stream->read(targetRange, actualSize);
1632 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001633 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001634 return vkInvalidateMappedMemoryRanges_VkResult_return;
1635}
1636
1637void VkEncoder::vkGetDeviceMemoryCommitment(
1638 VkDevice device,
1639 VkDeviceMemory memory,
1640 VkDeviceSize* pCommittedMemoryInBytes)
1641{
1642 auto stream = mImpl->stream();
1643 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001644 auto resources = mImpl->resources();
1645 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001646 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001647 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001648 VkDeviceMemory local_memory;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001649 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001650 local_memory = memory;
Lingfeng Yang62b23322018-12-24 12:45:47 -08001651 mImpl->resources()->deviceMemoryTransform(&local_memory, 1, nullptr, 1, nullptr, 1, nullptr, 1, nullptr, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001652 countingStream->rewind();
1653 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001654 uint64_t cgen_var_103;
1655 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_103, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001656 countingStream->write((uint64_t*)&cgen_var_103, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001657 uint64_t cgen_var_104;
1658 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_104, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001659 countingStream->write((uint64_t*)&cgen_var_104, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001660 countingStream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1661 }
1662 uint32_t packetSize_vkGetDeviceMemoryCommitment = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1663 countingStream->rewind();
1664 uint32_t opcode_vkGetDeviceMemoryCommitment = OP_vkGetDeviceMemoryCommitment;
1665 stream->write(&opcode_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
1666 stream->write(&packetSize_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001667 uint64_t cgen_var_105;
1668 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_105, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001669 stream->write((uint64_t*)&cgen_var_105, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001670 uint64_t cgen_var_106;
1671 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_106, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001672 stream->write((uint64_t*)&cgen_var_106, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001673 stream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1674 stream->read((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1675}
1676
1677VkResult VkEncoder::vkBindBufferMemory(
1678 VkDevice device,
1679 VkBuffer buffer,
1680 VkDeviceMemory memory,
1681 VkDeviceSize memoryOffset)
1682{
1683 auto stream = mImpl->stream();
1684 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001685 auto resources = mImpl->resources();
1686 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001687 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001688 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001689 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001690 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001691 VkDeviceSize local_memoryOffset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001692 local_device = device;
1693 local_buffer = buffer;
1694 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001695 local_memoryOffset = memoryOffset;
Lingfeng Yang62b23322018-12-24 12:45:47 -08001696 mImpl->resources()->deviceMemoryTransform(&local_memory, 1, &local_memoryOffset, 1, nullptr, 1, nullptr, 1, nullptr, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001697 countingStream->rewind();
1698 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001699 uint64_t cgen_var_107;
1700 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_107, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001701 countingStream->write((uint64_t*)&cgen_var_107, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001702 uint64_t cgen_var_108;
1703 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_108, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001704 countingStream->write((uint64_t*)&cgen_var_108, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001705 uint64_t cgen_var_109;
1706 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_109, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001707 countingStream->write((uint64_t*)&cgen_var_109, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001708 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001709 }
1710 uint32_t packetSize_vkBindBufferMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1711 countingStream->rewind();
1712 uint32_t opcode_vkBindBufferMemory = OP_vkBindBufferMemory;
1713 stream->write(&opcode_vkBindBufferMemory, sizeof(uint32_t));
1714 stream->write(&packetSize_vkBindBufferMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001715 uint64_t cgen_var_110;
1716 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_110, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001717 stream->write((uint64_t*)&cgen_var_110, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001718 uint64_t cgen_var_111;
1719 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_111, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001720 stream->write((uint64_t*)&cgen_var_111, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001721 uint64_t cgen_var_112;
1722 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_112, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001723 stream->write((uint64_t*)&cgen_var_112, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001724 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001725 VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
1726 stream->read(&vkBindBufferMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001727 countingStream->clearPool();
1728 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001729 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001730 return vkBindBufferMemory_VkResult_return;
1731}
1732
1733VkResult VkEncoder::vkBindImageMemory(
1734 VkDevice device,
1735 VkImage image,
1736 VkDeviceMemory memory,
1737 VkDeviceSize memoryOffset)
1738{
1739 auto stream = mImpl->stream();
1740 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001741 auto resources = mImpl->resources();
1742 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001743 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001744 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001745 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001746 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001747 VkDeviceSize local_memoryOffset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001748 local_device = device;
1749 local_image = image;
1750 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001751 local_memoryOffset = memoryOffset;
Lingfeng Yang62b23322018-12-24 12:45:47 -08001752 mImpl->resources()->deviceMemoryTransform(&local_memory, 1, &local_memoryOffset, 1, nullptr, 1, nullptr, 1, nullptr, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001753 countingStream->rewind();
1754 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001755 uint64_t cgen_var_113;
1756 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_113, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001757 countingStream->write((uint64_t*)&cgen_var_113, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001758 uint64_t cgen_var_114;
1759 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_114, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001760 countingStream->write((uint64_t*)&cgen_var_114, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001761 uint64_t cgen_var_115;
1762 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_115, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001763 countingStream->write((uint64_t*)&cgen_var_115, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001764 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001765 }
1766 uint32_t packetSize_vkBindImageMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1767 countingStream->rewind();
1768 uint32_t opcode_vkBindImageMemory = OP_vkBindImageMemory;
1769 stream->write(&opcode_vkBindImageMemory, sizeof(uint32_t));
1770 stream->write(&packetSize_vkBindImageMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001771 uint64_t cgen_var_116;
1772 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_116, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001773 stream->write((uint64_t*)&cgen_var_116, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001774 uint64_t cgen_var_117;
1775 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_117, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001776 stream->write((uint64_t*)&cgen_var_117, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001777 uint64_t cgen_var_118;
1778 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_118, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001779 stream->write((uint64_t*)&cgen_var_118, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001780 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001781 VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
1782 stream->read(&vkBindImageMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001783 countingStream->clearPool();
1784 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001785 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001786 return vkBindImageMemory_VkResult_return;
1787}
1788
1789void VkEncoder::vkGetBufferMemoryRequirements(
1790 VkDevice device,
1791 VkBuffer buffer,
1792 VkMemoryRequirements* pMemoryRequirements)
1793{
1794 auto stream = mImpl->stream();
1795 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001796 auto resources = mImpl->resources();
1797 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001798 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001799 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001800 VkBuffer local_buffer;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001801 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001802 local_buffer = buffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001803 countingStream->rewind();
1804 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001805 uint64_t cgen_var_119;
1806 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_119, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001807 countingStream->write((uint64_t*)&cgen_var_119, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001808 uint64_t cgen_var_120;
1809 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_120, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001810 countingStream->write((uint64_t*)&cgen_var_120, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001811 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
1812 }
1813 uint32_t packetSize_vkGetBufferMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1814 countingStream->rewind();
1815 uint32_t opcode_vkGetBufferMemoryRequirements = OP_vkGetBufferMemoryRequirements;
1816 stream->write(&opcode_vkGetBufferMemoryRequirements, sizeof(uint32_t));
1817 stream->write(&packetSize_vkGetBufferMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001818 uint64_t cgen_var_121;
1819 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_121, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001820 stream->write((uint64_t*)&cgen_var_121, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001821 uint64_t cgen_var_122;
1822 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_122, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001823 stream->write((uint64_t*)&cgen_var_122, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001824 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1825 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1826}
1827
1828void VkEncoder::vkGetImageMemoryRequirements(
1829 VkDevice device,
1830 VkImage image,
1831 VkMemoryRequirements* pMemoryRequirements)
1832{
1833 auto stream = mImpl->stream();
1834 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001835 auto resources = mImpl->resources();
1836 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001837 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001838 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001839 VkImage local_image;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001840 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001841 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001842 countingStream->rewind();
1843 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001844 uint64_t cgen_var_123;
1845 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_123, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001846 countingStream->write((uint64_t*)&cgen_var_123, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001847 uint64_t cgen_var_124;
1848 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_124, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001849 countingStream->write((uint64_t*)&cgen_var_124, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001850 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
1851 }
1852 uint32_t packetSize_vkGetImageMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1853 countingStream->rewind();
1854 uint32_t opcode_vkGetImageMemoryRequirements = OP_vkGetImageMemoryRequirements;
1855 stream->write(&opcode_vkGetImageMemoryRequirements, sizeof(uint32_t));
1856 stream->write(&packetSize_vkGetImageMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001857 uint64_t cgen_var_125;
1858 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_125, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001859 stream->write((uint64_t*)&cgen_var_125, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001860 uint64_t cgen_var_126;
1861 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_126, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001862 stream->write((uint64_t*)&cgen_var_126, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001863 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1864 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1865}
1866
1867void VkEncoder::vkGetImageSparseMemoryRequirements(
1868 VkDevice device,
1869 VkImage image,
1870 uint32_t* pSparseMemoryRequirementCount,
1871 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
1872{
1873 auto stream = mImpl->stream();
1874 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001875 auto resources = mImpl->resources();
1876 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001877 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001878 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001879 VkImage local_image;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001880 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001881 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001882 countingStream->rewind();
1883 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001884 uint64_t cgen_var_127;
1885 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_127, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001886 countingStream->write((uint64_t*)&cgen_var_127, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001887 uint64_t cgen_var_128;
1888 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_128, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001889 countingStream->write((uint64_t*)&cgen_var_128, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001890 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001891 uint64_t cgen_var_129 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
1892 countingStream->putBe64(cgen_var_129);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001893 if (pSparseMemoryRequirementCount)
1894 {
1895 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
1896 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001897 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001898 uint64_t cgen_var_130 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
1899 countingStream->putBe64(cgen_var_130);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001900 if (pSparseMemoryRequirements)
1901 {
1902 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
1903 {
1904 marshal_VkSparseImageMemoryRequirements(countingStream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
1905 }
1906 }
1907 }
1908 uint32_t packetSize_vkGetImageSparseMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1909 countingStream->rewind();
1910 uint32_t opcode_vkGetImageSparseMemoryRequirements = OP_vkGetImageSparseMemoryRequirements;
1911 stream->write(&opcode_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
1912 stream->write(&packetSize_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001913 uint64_t cgen_var_131;
1914 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_131, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001915 stream->write((uint64_t*)&cgen_var_131, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001916 uint64_t cgen_var_132;
1917 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_132, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001918 stream->write((uint64_t*)&cgen_var_132, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001919 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001920 uint64_t cgen_var_133 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
1921 stream->putBe64(cgen_var_133);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001922 if (pSparseMemoryRequirementCount)
1923 {
1924 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
1925 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001926 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001927 uint64_t cgen_var_134 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
1928 stream->putBe64(cgen_var_134);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001929 if (pSparseMemoryRequirements)
1930 {
1931 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
1932 {
1933 marshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
1934 }
1935 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001936 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001937 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001938 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001939 if (pSparseMemoryRequirementCount)
1940 {
1941 if (!(check_pSparseMemoryRequirementCount))
1942 {
1943 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
1944 }
1945 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
1946 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001947 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001948 VkSparseImageMemoryRequirements* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001949 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001950 if (pSparseMemoryRequirements)
1951 {
1952 if (!(check_pSparseMemoryRequirements))
1953 {
1954 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
1955 }
1956 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
1957 {
1958 unmarshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
1959 }
1960 }
1961}
1962
1963void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties(
1964 VkPhysicalDevice physicalDevice,
1965 VkFormat format,
1966 VkImageType type,
1967 VkSampleCountFlagBits samples,
1968 VkImageUsageFlags usage,
1969 VkImageTiling tiling,
1970 uint32_t* pPropertyCount,
1971 VkSparseImageFormatProperties* pProperties)
1972{
1973 auto stream = mImpl->stream();
1974 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001975 auto resources = mImpl->resources();
1976 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001977 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001978 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001979 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001980 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001981 VkSampleCountFlagBits local_samples;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001982 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001983 VkImageTiling local_tiling;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001984 local_physicalDevice = physicalDevice;
1985 local_format = format;
1986 local_type = type;
1987 local_samples = samples;
1988 local_usage = usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001989 local_tiling = tiling;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001990 countingStream->rewind();
1991 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001992 uint64_t cgen_var_137;
1993 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_137, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001994 countingStream->write((uint64_t*)&cgen_var_137, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001995 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
1996 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
1997 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
1998 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
1999 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002000 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002001 uint64_t cgen_var_138 = (uint64_t)(uintptr_t)pPropertyCount;
2002 countingStream->putBe64(cgen_var_138);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002003 if (pPropertyCount)
2004 {
2005 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
2006 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002007 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002008 uint64_t cgen_var_139 = (uint64_t)(uintptr_t)pProperties;
2009 countingStream->putBe64(cgen_var_139);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002010 if (pProperties)
2011 {
2012 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2013 {
2014 marshal_VkSparseImageFormatProperties(countingStream, (VkSparseImageFormatProperties*)(pProperties + i));
2015 }
2016 }
2017 }
2018 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2019 countingStream->rewind();
2020 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties = OP_vkGetPhysicalDeviceSparseImageFormatProperties;
2021 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
2022 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002023 uint64_t cgen_var_140;
2024 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_140, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002025 stream->write((uint64_t*)&cgen_var_140, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002026 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
2027 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
2028 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
2029 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
2030 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002031 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002032 uint64_t cgen_var_141 = (uint64_t)(uintptr_t)pPropertyCount;
2033 stream->putBe64(cgen_var_141);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002034 if (pPropertyCount)
2035 {
2036 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
2037 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002038 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002039 uint64_t cgen_var_142 = (uint64_t)(uintptr_t)pProperties;
2040 stream->putBe64(cgen_var_142);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002041 if (pProperties)
2042 {
2043 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2044 {
2045 marshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
2046 }
2047 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002048 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002049 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002050 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002051 if (pPropertyCount)
2052 {
2053 if (!(check_pPropertyCount))
2054 {
2055 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
2056 }
2057 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
2058 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002059 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002060 VkSparseImageFormatProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002061 check_pProperties = (VkSparseImageFormatProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002062 if (pProperties)
2063 {
2064 if (!(check_pProperties))
2065 {
2066 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
2067 }
2068 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2069 {
2070 unmarshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
2071 }
2072 }
2073}
2074
2075VkResult VkEncoder::vkQueueBindSparse(
2076 VkQueue queue,
2077 uint32_t bindInfoCount,
2078 const VkBindSparseInfo* pBindInfo,
2079 VkFence fence)
2080{
2081 auto stream = mImpl->stream();
2082 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002083 auto resources = mImpl->resources();
2084 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002085 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002086 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002087 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002088 VkBindSparseInfo* local_pBindInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002089 VkFence local_fence;
2090 local_queue = queue;
2091 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002092 local_pBindInfo = nullptr;
2093 if (pBindInfo)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002094 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002095 local_pBindInfo = (VkBindSparseInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindSparseInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002096 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2097 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002098 deepcopy_VkBindSparseInfo(pool, pBindInfo + i, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002099 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002100 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002101 local_fence = fence;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002102 if (local_pBindInfo)
2103 {
2104 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2105 {
2106 transform_VkBindSparseInfo(mImpl->resources(), (VkBindSparseInfo*)(local_pBindInfo + i));
2107 }
2108 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002109 countingStream->rewind();
2110 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002111 uint64_t cgen_var_145;
2112 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_145, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002113 countingStream->write((uint64_t*)&cgen_var_145, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002114 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
2115 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2116 {
2117 marshal_VkBindSparseInfo(countingStream, (VkBindSparseInfo*)(local_pBindInfo + i));
2118 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002119 uint64_t cgen_var_146;
2120 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_146, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002121 countingStream->write((uint64_t*)&cgen_var_146, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002122 }
2123 uint32_t packetSize_vkQueueBindSparse = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2124 countingStream->rewind();
2125 uint32_t opcode_vkQueueBindSparse = OP_vkQueueBindSparse;
2126 stream->write(&opcode_vkQueueBindSparse, sizeof(uint32_t));
2127 stream->write(&packetSize_vkQueueBindSparse, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002128 uint64_t cgen_var_147;
2129 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_147, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002130 stream->write((uint64_t*)&cgen_var_147, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002131 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002132 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2133 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002134 marshal_VkBindSparseInfo(stream, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002135 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002136 uint64_t cgen_var_148;
2137 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_148, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002138 stream->write((uint64_t*)&cgen_var_148, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002139 VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
2140 stream->read(&vkQueueBindSparse_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002141 countingStream->clearPool();
2142 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002143 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002144 return vkQueueBindSparse_VkResult_return;
2145}
2146
2147VkResult VkEncoder::vkCreateFence(
2148 VkDevice device,
2149 const VkFenceCreateInfo* pCreateInfo,
2150 const VkAllocationCallbacks* pAllocator,
2151 VkFence* pFence)
2152{
2153 auto stream = mImpl->stream();
2154 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002155 auto resources = mImpl->resources();
2156 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002157 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002158 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002159 VkFenceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002160 VkAllocationCallbacks* local_pAllocator;
2161 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002162 local_pCreateInfo = nullptr;
2163 if (pCreateInfo)
2164 {
2165 local_pCreateInfo = (VkFenceCreateInfo*)pool->alloc(sizeof(const VkFenceCreateInfo));
2166 deepcopy_VkFenceCreateInfo(pool, pCreateInfo, (VkFenceCreateInfo*)(local_pCreateInfo));
2167 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002168 local_pAllocator = nullptr;
2169 if (pAllocator)
2170 {
2171 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2172 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2173 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002174 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002175 if (local_pCreateInfo)
2176 {
2177 transform_VkFenceCreateInfo(mImpl->resources(), (VkFenceCreateInfo*)(local_pCreateInfo));
2178 }
2179 if (local_pAllocator)
2180 {
2181 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
2182 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002183 countingStream->rewind();
2184 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002185 uint64_t cgen_var_149;
2186 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_149, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002187 countingStream->write((uint64_t*)&cgen_var_149, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002188 marshal_VkFenceCreateInfo(countingStream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002189 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002190 uint64_t cgen_var_150 = (uint64_t)(uintptr_t)local_pAllocator;
2191 countingStream->putBe64(cgen_var_150);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002192 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002193 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002194 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002195 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002196 uint64_t cgen_var_151;
2197 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_151, 1);
2198 countingStream->write((uint64_t*)&cgen_var_151, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002199 }
2200 uint32_t packetSize_vkCreateFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2201 countingStream->rewind();
2202 uint32_t opcode_vkCreateFence = OP_vkCreateFence;
2203 stream->write(&opcode_vkCreateFence, sizeof(uint32_t));
2204 stream->write(&packetSize_vkCreateFence, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002205 uint64_t cgen_var_152;
2206 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_152, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002207 stream->write((uint64_t*)&cgen_var_152, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002208 marshal_VkFenceCreateInfo(stream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002209 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002210 uint64_t cgen_var_153 = (uint64_t)(uintptr_t)local_pAllocator;
2211 stream->putBe64(cgen_var_153);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002212 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002213 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002214 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002215 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002216 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002217 uint64_t cgen_var_154;
2218 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_154, 1);
2219 stream->write((uint64_t*)&cgen_var_154, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002220 stream->setHandleMapping(resources->unwrapMapping());
2221 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002222 uint64_t cgen_var_155;
2223 stream->read((uint64_t*)&cgen_var_155, 8);
2224 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_155, (VkFence*)pFence, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002225 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002226 VkResult vkCreateFence_VkResult_return = (VkResult)0;
2227 stream->read(&vkCreateFence_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002228 countingStream->clearPool();
2229 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002230 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002231 return vkCreateFence_VkResult_return;
2232}
2233
2234void VkEncoder::vkDestroyFence(
2235 VkDevice device,
2236 VkFence fence,
2237 const VkAllocationCallbacks* pAllocator)
2238{
2239 auto stream = mImpl->stream();
2240 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002241 auto resources = mImpl->resources();
2242 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002243 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002244 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002245 VkFence local_fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002246 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002247 local_device = device;
2248 local_fence = fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002249 local_pAllocator = nullptr;
2250 if (pAllocator)
2251 {
2252 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2253 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2254 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002255 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002256 if (local_pAllocator)
2257 {
2258 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
2259 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002260 countingStream->rewind();
2261 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002262 uint64_t cgen_var_156;
2263 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_156, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002264 countingStream->write((uint64_t*)&cgen_var_156, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002265 uint64_t cgen_var_157;
2266 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_157, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002267 countingStream->write((uint64_t*)&cgen_var_157, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002268 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002269 uint64_t cgen_var_158 = (uint64_t)(uintptr_t)local_pAllocator;
2270 countingStream->putBe64(cgen_var_158);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002271 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002272 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002273 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002274 }
2275 }
2276 uint32_t packetSize_vkDestroyFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2277 countingStream->rewind();
2278 uint32_t opcode_vkDestroyFence = OP_vkDestroyFence;
2279 stream->write(&opcode_vkDestroyFence, sizeof(uint32_t));
2280 stream->write(&packetSize_vkDestroyFence, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002281 uint64_t cgen_var_159;
2282 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_159, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002283 stream->write((uint64_t*)&cgen_var_159, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002284 uint64_t cgen_var_160;
2285 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_160, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002286 stream->write((uint64_t*)&cgen_var_160, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002287 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002288 uint64_t cgen_var_161 = (uint64_t)(uintptr_t)local_pAllocator;
2289 stream->putBe64(cgen_var_161);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002290 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002291 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002292 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002293 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002294 resources->destroyMapping()->mapHandles_VkFence((VkFence*)&fence);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002295}
2296
2297VkResult VkEncoder::vkResetFences(
2298 VkDevice device,
2299 uint32_t fenceCount,
2300 const VkFence* pFences)
2301{
2302 auto stream = mImpl->stream();
2303 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002304 auto resources = mImpl->resources();
2305 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002306 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002307 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002308 uint32_t local_fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002309 VkFence* local_pFences;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002310 local_device = device;
2311 local_fenceCount = fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002312 local_pFences = nullptr;
2313 if (pFences)
2314 {
2315 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2316 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002317 countingStream->rewind();
2318 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002319 uint64_t cgen_var_162;
2320 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_162, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002321 countingStream->write((uint64_t*)&cgen_var_162, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002322 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002323 if (((fenceCount)))
2324 {
2325 uint64_t* cgen_var_163;
2326 countingStream->alloc((void**)&cgen_var_163, ((fenceCount)) * 8);
2327 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_163, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002328 countingStream->write((uint64_t*)cgen_var_163, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002329 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002330 }
2331 uint32_t packetSize_vkResetFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2332 countingStream->rewind();
2333 uint32_t opcode_vkResetFences = OP_vkResetFences;
2334 stream->write(&opcode_vkResetFences, sizeof(uint32_t));
2335 stream->write(&packetSize_vkResetFences, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002336 uint64_t cgen_var_164;
2337 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_164, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002338 stream->write((uint64_t*)&cgen_var_164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002339 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002340 if (((fenceCount)))
2341 {
2342 uint64_t* cgen_var_165;
2343 stream->alloc((void**)&cgen_var_165, ((fenceCount)) * 8);
2344 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_165, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002345 stream->write((uint64_t*)cgen_var_165, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002346 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002347 VkResult vkResetFences_VkResult_return = (VkResult)0;
2348 stream->read(&vkResetFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002349 countingStream->clearPool();
2350 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002351 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002352 return vkResetFences_VkResult_return;
2353}
2354
2355VkResult VkEncoder::vkGetFenceStatus(
2356 VkDevice device,
2357 VkFence fence)
2358{
2359 auto stream = mImpl->stream();
2360 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002361 auto resources = mImpl->resources();
2362 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002363 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002364 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002365 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002366 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002367 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002368 countingStream->rewind();
2369 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002370 uint64_t cgen_var_166;
2371 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_166, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002372 countingStream->write((uint64_t*)&cgen_var_166, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002373 uint64_t cgen_var_167;
2374 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_167, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002375 countingStream->write((uint64_t*)&cgen_var_167, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002376 }
2377 uint32_t packetSize_vkGetFenceStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2378 countingStream->rewind();
2379 uint32_t opcode_vkGetFenceStatus = OP_vkGetFenceStatus;
2380 stream->write(&opcode_vkGetFenceStatus, sizeof(uint32_t));
2381 stream->write(&packetSize_vkGetFenceStatus, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002382 uint64_t cgen_var_168;
2383 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_168, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002384 stream->write((uint64_t*)&cgen_var_168, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002385 uint64_t cgen_var_169;
2386 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_169, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002387 stream->write((uint64_t*)&cgen_var_169, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002388 VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
2389 stream->read(&vkGetFenceStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002390 countingStream->clearPool();
2391 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002392 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002393 return vkGetFenceStatus_VkResult_return;
2394}
2395
2396VkResult VkEncoder::vkWaitForFences(
2397 VkDevice device,
2398 uint32_t fenceCount,
2399 const VkFence* pFences,
2400 VkBool32 waitAll,
2401 uint64_t timeout)
2402{
2403 auto stream = mImpl->stream();
2404 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002405 auto resources = mImpl->resources();
2406 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002407 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002408 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002409 uint32_t local_fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002410 VkFence* local_pFences;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002411 VkBool32 local_waitAll;
2412 uint64_t local_timeout;
2413 local_device = device;
2414 local_fenceCount = fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002415 local_pFences = nullptr;
2416 if (pFences)
2417 {
2418 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2419 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002420 local_waitAll = waitAll;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002421 local_timeout = timeout;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002422 countingStream->rewind();
2423 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002424 uint64_t cgen_var_170;
2425 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_170, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002426 countingStream->write((uint64_t*)&cgen_var_170, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002427 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002428 if (((fenceCount)))
2429 {
2430 uint64_t* cgen_var_171;
2431 countingStream->alloc((void**)&cgen_var_171, ((fenceCount)) * 8);
2432 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_171, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002433 countingStream->write((uint64_t*)cgen_var_171, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002434 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002435 countingStream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2436 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002437 }
2438 uint32_t packetSize_vkWaitForFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2439 countingStream->rewind();
2440 uint32_t opcode_vkWaitForFences = OP_vkWaitForFences;
2441 stream->write(&opcode_vkWaitForFences, sizeof(uint32_t));
2442 stream->write(&packetSize_vkWaitForFences, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002443 uint64_t cgen_var_172;
2444 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_172, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002445 stream->write((uint64_t*)&cgen_var_172, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002446 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002447 if (((fenceCount)))
2448 {
2449 uint64_t* cgen_var_173;
2450 stream->alloc((void**)&cgen_var_173, ((fenceCount)) * 8);
2451 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_173, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002452 stream->write((uint64_t*)cgen_var_173, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002453 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002454 stream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2455 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002456 VkResult vkWaitForFences_VkResult_return = (VkResult)0;
2457 stream->read(&vkWaitForFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002458 countingStream->clearPool();
2459 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002460 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002461 return vkWaitForFences_VkResult_return;
2462}
2463
2464VkResult VkEncoder::vkCreateSemaphore(
2465 VkDevice device,
2466 const VkSemaphoreCreateInfo* pCreateInfo,
2467 const VkAllocationCallbacks* pAllocator,
2468 VkSemaphore* pSemaphore)
2469{
2470 auto stream = mImpl->stream();
2471 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002472 auto resources = mImpl->resources();
2473 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002474 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002475 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002476 VkSemaphoreCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002477 VkAllocationCallbacks* local_pAllocator;
2478 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002479 local_pCreateInfo = nullptr;
2480 if (pCreateInfo)
2481 {
2482 local_pCreateInfo = (VkSemaphoreCreateInfo*)pool->alloc(sizeof(const VkSemaphoreCreateInfo));
2483 deepcopy_VkSemaphoreCreateInfo(pool, pCreateInfo, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
2484 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002485 local_pAllocator = nullptr;
2486 if (pAllocator)
2487 {
2488 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2489 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2490 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002491 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002492 if (local_pCreateInfo)
2493 {
2494 transform_VkSemaphoreCreateInfo(mImpl->resources(), (VkSemaphoreCreateInfo*)(local_pCreateInfo));
2495 }
2496 if (local_pAllocator)
2497 {
2498 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
2499 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002500 countingStream->rewind();
2501 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002502 uint64_t cgen_var_174;
2503 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_174, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002504 countingStream->write((uint64_t*)&cgen_var_174, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002505 marshal_VkSemaphoreCreateInfo(countingStream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002506 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002507 uint64_t cgen_var_175 = (uint64_t)(uintptr_t)local_pAllocator;
2508 countingStream->putBe64(cgen_var_175);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002509 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002510 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002511 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002512 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002513 uint64_t cgen_var_176;
2514 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_176, 1);
2515 countingStream->write((uint64_t*)&cgen_var_176, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002516 }
2517 uint32_t packetSize_vkCreateSemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2518 countingStream->rewind();
2519 uint32_t opcode_vkCreateSemaphore = OP_vkCreateSemaphore;
2520 stream->write(&opcode_vkCreateSemaphore, sizeof(uint32_t));
2521 stream->write(&packetSize_vkCreateSemaphore, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002522 uint64_t cgen_var_177;
2523 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_177, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002524 stream->write((uint64_t*)&cgen_var_177, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002525 marshal_VkSemaphoreCreateInfo(stream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002526 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002527 uint64_t cgen_var_178 = (uint64_t)(uintptr_t)local_pAllocator;
2528 stream->putBe64(cgen_var_178);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002529 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002530 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002531 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002532 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002533 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002534 uint64_t cgen_var_179;
2535 stream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_179, 1);
2536 stream->write((uint64_t*)&cgen_var_179, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002537 stream->setHandleMapping(resources->unwrapMapping());
2538 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002539 uint64_t cgen_var_180;
2540 stream->read((uint64_t*)&cgen_var_180, 8);
2541 stream->handleMapping()->mapHandles_u64_VkSemaphore(&cgen_var_180, (VkSemaphore*)pSemaphore, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002542 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002543 VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
2544 stream->read(&vkCreateSemaphore_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002545 countingStream->clearPool();
2546 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002547 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002548 return vkCreateSemaphore_VkResult_return;
2549}
2550
2551void VkEncoder::vkDestroySemaphore(
2552 VkDevice device,
2553 VkSemaphore semaphore,
2554 const VkAllocationCallbacks* pAllocator)
2555{
2556 auto stream = mImpl->stream();
2557 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002558 auto resources = mImpl->resources();
2559 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002560 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002561 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002562 VkSemaphore local_semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002563 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002564 local_device = device;
2565 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002566 local_pAllocator = nullptr;
2567 if (pAllocator)
2568 {
2569 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2570 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2571 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002572 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002573 if (local_pAllocator)
2574 {
2575 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
2576 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002577 countingStream->rewind();
2578 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002579 uint64_t cgen_var_181;
2580 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_181, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002581 countingStream->write((uint64_t*)&cgen_var_181, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002582 uint64_t cgen_var_182;
2583 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_182, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002584 countingStream->write((uint64_t*)&cgen_var_182, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002585 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002586 uint64_t cgen_var_183 = (uint64_t)(uintptr_t)local_pAllocator;
2587 countingStream->putBe64(cgen_var_183);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002588 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002589 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002590 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002591 }
2592 }
2593 uint32_t packetSize_vkDestroySemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2594 countingStream->rewind();
2595 uint32_t opcode_vkDestroySemaphore = OP_vkDestroySemaphore;
2596 stream->write(&opcode_vkDestroySemaphore, sizeof(uint32_t));
2597 stream->write(&packetSize_vkDestroySemaphore, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002598 uint64_t cgen_var_184;
2599 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_184, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002600 stream->write((uint64_t*)&cgen_var_184, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002601 uint64_t cgen_var_185;
2602 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_185, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002603 stream->write((uint64_t*)&cgen_var_185, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002604 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002605 uint64_t cgen_var_186 = (uint64_t)(uintptr_t)local_pAllocator;
2606 stream->putBe64(cgen_var_186);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002607 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002608 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002609 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002610 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002611 resources->destroyMapping()->mapHandles_VkSemaphore((VkSemaphore*)&semaphore);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002612}
2613
2614VkResult VkEncoder::vkCreateEvent(
2615 VkDevice device,
2616 const VkEventCreateInfo* pCreateInfo,
2617 const VkAllocationCallbacks* pAllocator,
2618 VkEvent* pEvent)
2619{
2620 auto stream = mImpl->stream();
2621 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002622 auto resources = mImpl->resources();
2623 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002624 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002625 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002626 VkEventCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002627 VkAllocationCallbacks* local_pAllocator;
2628 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002629 local_pCreateInfo = nullptr;
2630 if (pCreateInfo)
2631 {
2632 local_pCreateInfo = (VkEventCreateInfo*)pool->alloc(sizeof(const VkEventCreateInfo));
2633 deepcopy_VkEventCreateInfo(pool, pCreateInfo, (VkEventCreateInfo*)(local_pCreateInfo));
2634 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002635 local_pAllocator = nullptr;
2636 if (pAllocator)
2637 {
2638 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2639 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2640 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002641 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002642 if (local_pCreateInfo)
2643 {
2644 transform_VkEventCreateInfo(mImpl->resources(), (VkEventCreateInfo*)(local_pCreateInfo));
2645 }
2646 if (local_pAllocator)
2647 {
2648 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
2649 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002650 countingStream->rewind();
2651 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002652 uint64_t cgen_var_187;
2653 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_187, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002654 countingStream->write((uint64_t*)&cgen_var_187, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002655 marshal_VkEventCreateInfo(countingStream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002656 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002657 uint64_t cgen_var_188 = (uint64_t)(uintptr_t)local_pAllocator;
2658 countingStream->putBe64(cgen_var_188);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002659 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002660 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002661 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002662 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002663 uint64_t cgen_var_189;
2664 countingStream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_189, 1);
2665 countingStream->write((uint64_t*)&cgen_var_189, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002666 }
2667 uint32_t packetSize_vkCreateEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2668 countingStream->rewind();
2669 uint32_t opcode_vkCreateEvent = OP_vkCreateEvent;
2670 stream->write(&opcode_vkCreateEvent, sizeof(uint32_t));
2671 stream->write(&packetSize_vkCreateEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002672 uint64_t cgen_var_190;
2673 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_190, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002674 stream->write((uint64_t*)&cgen_var_190, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002675 marshal_VkEventCreateInfo(stream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002676 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002677 uint64_t cgen_var_191 = (uint64_t)(uintptr_t)local_pAllocator;
2678 stream->putBe64(cgen_var_191);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002679 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002680 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002681 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002682 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002683 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002684 uint64_t cgen_var_192;
2685 stream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_192, 1);
2686 stream->write((uint64_t*)&cgen_var_192, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002687 stream->setHandleMapping(resources->unwrapMapping());
2688 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002689 uint64_t cgen_var_193;
2690 stream->read((uint64_t*)&cgen_var_193, 8);
2691 stream->handleMapping()->mapHandles_u64_VkEvent(&cgen_var_193, (VkEvent*)pEvent, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002692 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002693 VkResult vkCreateEvent_VkResult_return = (VkResult)0;
2694 stream->read(&vkCreateEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002695 countingStream->clearPool();
2696 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002697 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002698 return vkCreateEvent_VkResult_return;
2699}
2700
2701void VkEncoder::vkDestroyEvent(
2702 VkDevice device,
2703 VkEvent event,
2704 const VkAllocationCallbacks* pAllocator)
2705{
2706 auto stream = mImpl->stream();
2707 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002708 auto resources = mImpl->resources();
2709 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002710 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002711 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002712 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002713 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002714 local_device = device;
2715 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002716 local_pAllocator = nullptr;
2717 if (pAllocator)
2718 {
2719 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2720 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2721 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002722 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002723 if (local_pAllocator)
2724 {
2725 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
2726 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002727 countingStream->rewind();
2728 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002729 uint64_t cgen_var_194;
2730 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_194, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002731 countingStream->write((uint64_t*)&cgen_var_194, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002732 uint64_t cgen_var_195;
2733 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_195, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002734 countingStream->write((uint64_t*)&cgen_var_195, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002735 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002736 uint64_t cgen_var_196 = (uint64_t)(uintptr_t)local_pAllocator;
2737 countingStream->putBe64(cgen_var_196);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002738 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002739 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002740 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002741 }
2742 }
2743 uint32_t packetSize_vkDestroyEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2744 countingStream->rewind();
2745 uint32_t opcode_vkDestroyEvent = OP_vkDestroyEvent;
2746 stream->write(&opcode_vkDestroyEvent, sizeof(uint32_t));
2747 stream->write(&packetSize_vkDestroyEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002748 uint64_t cgen_var_197;
2749 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_197, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002750 stream->write((uint64_t*)&cgen_var_197, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002751 uint64_t cgen_var_198;
2752 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_198, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002753 stream->write((uint64_t*)&cgen_var_198, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002754 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002755 uint64_t cgen_var_199 = (uint64_t)(uintptr_t)local_pAllocator;
2756 stream->putBe64(cgen_var_199);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002757 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002758 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002759 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002760 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002761 resources->destroyMapping()->mapHandles_VkEvent((VkEvent*)&event);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002762}
2763
2764VkResult VkEncoder::vkGetEventStatus(
2765 VkDevice device,
2766 VkEvent event)
2767{
2768 auto stream = mImpl->stream();
2769 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002770 auto resources = mImpl->resources();
2771 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002772 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002773 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002774 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002775 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002776 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002777 countingStream->rewind();
2778 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002779 uint64_t cgen_var_200;
2780 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_200, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002781 countingStream->write((uint64_t*)&cgen_var_200, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002782 uint64_t cgen_var_201;
2783 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_201, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002784 countingStream->write((uint64_t*)&cgen_var_201, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002785 }
2786 uint32_t packetSize_vkGetEventStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2787 countingStream->rewind();
2788 uint32_t opcode_vkGetEventStatus = OP_vkGetEventStatus;
2789 stream->write(&opcode_vkGetEventStatus, sizeof(uint32_t));
2790 stream->write(&packetSize_vkGetEventStatus, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002791 uint64_t cgen_var_202;
2792 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_202, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002793 stream->write((uint64_t*)&cgen_var_202, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002794 uint64_t cgen_var_203;
2795 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_203, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002796 stream->write((uint64_t*)&cgen_var_203, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002797 VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
2798 stream->read(&vkGetEventStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002799 countingStream->clearPool();
2800 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002801 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002802 return vkGetEventStatus_VkResult_return;
2803}
2804
2805VkResult VkEncoder::vkSetEvent(
2806 VkDevice device,
2807 VkEvent event)
2808{
2809 auto stream = mImpl->stream();
2810 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002811 auto resources = mImpl->resources();
2812 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002813 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002814 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002815 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002816 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002817 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002818 countingStream->rewind();
2819 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002820 uint64_t cgen_var_204;
2821 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_204, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002822 countingStream->write((uint64_t*)&cgen_var_204, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002823 uint64_t cgen_var_205;
2824 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_205, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002825 countingStream->write((uint64_t*)&cgen_var_205, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002826 }
2827 uint32_t packetSize_vkSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2828 countingStream->rewind();
2829 uint32_t opcode_vkSetEvent = OP_vkSetEvent;
2830 stream->write(&opcode_vkSetEvent, sizeof(uint32_t));
2831 stream->write(&packetSize_vkSetEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002832 uint64_t cgen_var_206;
2833 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_206, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002834 stream->write((uint64_t*)&cgen_var_206, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002835 uint64_t cgen_var_207;
2836 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_207, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002837 stream->write((uint64_t*)&cgen_var_207, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002838 VkResult vkSetEvent_VkResult_return = (VkResult)0;
2839 stream->read(&vkSetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002840 countingStream->clearPool();
2841 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002842 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002843 return vkSetEvent_VkResult_return;
2844}
2845
2846VkResult VkEncoder::vkResetEvent(
2847 VkDevice device,
2848 VkEvent event)
2849{
2850 auto stream = mImpl->stream();
2851 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002852 auto resources = mImpl->resources();
2853 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002854 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002855 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002856 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002857 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002858 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002859 countingStream->rewind();
2860 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002861 uint64_t cgen_var_208;
2862 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_208, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002863 countingStream->write((uint64_t*)&cgen_var_208, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002864 uint64_t cgen_var_209;
2865 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_209, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002866 countingStream->write((uint64_t*)&cgen_var_209, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002867 }
2868 uint32_t packetSize_vkResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2869 countingStream->rewind();
2870 uint32_t opcode_vkResetEvent = OP_vkResetEvent;
2871 stream->write(&opcode_vkResetEvent, sizeof(uint32_t));
2872 stream->write(&packetSize_vkResetEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002873 uint64_t cgen_var_210;
2874 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_210, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002875 stream->write((uint64_t*)&cgen_var_210, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002876 uint64_t cgen_var_211;
2877 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_211, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002878 stream->write((uint64_t*)&cgen_var_211, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002879 VkResult vkResetEvent_VkResult_return = (VkResult)0;
2880 stream->read(&vkResetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002881 countingStream->clearPool();
2882 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002883 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002884 return vkResetEvent_VkResult_return;
2885}
2886
2887VkResult VkEncoder::vkCreateQueryPool(
2888 VkDevice device,
2889 const VkQueryPoolCreateInfo* pCreateInfo,
2890 const VkAllocationCallbacks* pAllocator,
2891 VkQueryPool* pQueryPool)
2892{
2893 auto stream = mImpl->stream();
2894 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002895 auto resources = mImpl->resources();
2896 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002897 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002898 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002899 VkQueryPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002900 VkAllocationCallbacks* local_pAllocator;
2901 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002902 local_pCreateInfo = nullptr;
2903 if (pCreateInfo)
2904 {
2905 local_pCreateInfo = (VkQueryPoolCreateInfo*)pool->alloc(sizeof(const VkQueryPoolCreateInfo));
2906 deepcopy_VkQueryPoolCreateInfo(pool, pCreateInfo, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
2907 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002908 local_pAllocator = nullptr;
2909 if (pAllocator)
2910 {
2911 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2912 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2913 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002914 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002915 if (local_pCreateInfo)
2916 {
2917 transform_VkQueryPoolCreateInfo(mImpl->resources(), (VkQueryPoolCreateInfo*)(local_pCreateInfo));
2918 }
2919 if (local_pAllocator)
2920 {
2921 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
2922 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002923 countingStream->rewind();
2924 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002925 uint64_t cgen_var_212;
2926 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_212, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002927 countingStream->write((uint64_t*)&cgen_var_212, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002928 marshal_VkQueryPoolCreateInfo(countingStream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002929 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002930 uint64_t cgen_var_213 = (uint64_t)(uintptr_t)local_pAllocator;
2931 countingStream->putBe64(cgen_var_213);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002932 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002933 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002934 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002935 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002936 uint64_t cgen_var_214;
2937 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_214, 1);
2938 countingStream->write((uint64_t*)&cgen_var_214, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002939 }
2940 uint32_t packetSize_vkCreateQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2941 countingStream->rewind();
2942 uint32_t opcode_vkCreateQueryPool = OP_vkCreateQueryPool;
2943 stream->write(&opcode_vkCreateQueryPool, sizeof(uint32_t));
2944 stream->write(&packetSize_vkCreateQueryPool, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002945 uint64_t cgen_var_215;
2946 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_215, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002947 stream->write((uint64_t*)&cgen_var_215, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002948 marshal_VkQueryPoolCreateInfo(stream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002949 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002950 uint64_t cgen_var_216 = (uint64_t)(uintptr_t)local_pAllocator;
2951 stream->putBe64(cgen_var_216);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002952 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002953 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002954 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002955 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002956 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002957 uint64_t cgen_var_217;
2958 stream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_217, 1);
2959 stream->write((uint64_t*)&cgen_var_217, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002960 stream->setHandleMapping(resources->unwrapMapping());
2961 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002962 uint64_t cgen_var_218;
2963 stream->read((uint64_t*)&cgen_var_218, 8);
2964 stream->handleMapping()->mapHandles_u64_VkQueryPool(&cgen_var_218, (VkQueryPool*)pQueryPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002965 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002966 VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
2967 stream->read(&vkCreateQueryPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002968 countingStream->clearPool();
2969 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002970 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002971 return vkCreateQueryPool_VkResult_return;
2972}
2973
2974void VkEncoder::vkDestroyQueryPool(
2975 VkDevice device,
2976 VkQueryPool queryPool,
2977 const VkAllocationCallbacks* pAllocator)
2978{
2979 auto stream = mImpl->stream();
2980 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002981 auto resources = mImpl->resources();
2982 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002983 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002984 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002985 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002986 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002987 local_device = device;
2988 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002989 local_pAllocator = nullptr;
2990 if (pAllocator)
2991 {
2992 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2993 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2994 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002995 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002996 if (local_pAllocator)
2997 {
2998 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
2999 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003000 countingStream->rewind();
3001 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08003002 uint64_t cgen_var_219;
3003 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_219, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003004 countingStream->write((uint64_t*)&cgen_var_219, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08003005 uint64_t cgen_var_220;
3006 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_220, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003007 countingStream->write((uint64_t*)&cgen_var_220, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003008 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08003009 uint64_t cgen_var_221 = (uint64_t)(uintptr_t)local_pAllocator;
3010 countingStream->putBe64(cgen_var_221);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003011 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003012 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003013 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003014 }
3015 }
3016 uint32_t packetSize_vkDestroyQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3017 countingStream->rewind();
3018 uint32_t opcode_vkDestroyQueryPool = OP_vkDestroyQueryPool;
3019 stream->write(&opcode_vkDestroyQueryPool, sizeof(uint32_t));
3020 stream->write(&packetSize_vkDestroyQueryPool, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003021 uint64_t cgen_var_222;
3022 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_222, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003023 stream->write((uint64_t*)&cgen_var_222, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08003024 uint64_t cgen_var_223;
3025 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_223, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003026 stream->write((uint64_t*)&cgen_var_223, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003027 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08003028 uint64_t cgen_var_224 = (uint64_t)(uintptr_t)local_pAllocator;
3029 stream->putBe64(cgen_var_224);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003030 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003031 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003032 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003033 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003034 resources->destroyMapping()->mapHandles_VkQueryPool((VkQueryPool*)&queryPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003035}
3036
3037VkResult VkEncoder::vkGetQueryPoolResults(
3038 VkDevice device,
3039 VkQueryPool queryPool,
3040 uint32_t firstQuery,
3041 uint32_t queryCount,
3042 size_t dataSize,
3043 void* pData,
3044 VkDeviceSize stride,
3045 VkQueryResultFlags flags)
3046{
3047 auto stream = mImpl->stream();
3048 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003049 auto resources = mImpl->resources();
3050 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003051 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003052 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003053 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003054 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003055 uint32_t local_queryCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003056 size_t local_dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003057 VkDeviceSize local_stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003058 VkQueryResultFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003059 local_device = device;
3060 local_queryPool = queryPool;
3061 local_firstQuery = firstQuery;
3062 local_queryCount = queryCount;
3063 local_dataSize = dataSize;
3064 local_stride = stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003065 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003066 countingStream->rewind();
3067 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08003068 uint64_t cgen_var_225;
3069 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_225, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003070 countingStream->write((uint64_t*)&cgen_var_225, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08003071 uint64_t cgen_var_226;
3072 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_226, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003073 countingStream->write((uint64_t*)&cgen_var_226, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003074 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
3075 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003076 uint64_t cgen_var_227 = (uint64_t)local_dataSize;
3077 countingStream->putBe64(cgen_var_227);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003078 countingStream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003079 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
3080 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003081 }
3082 uint32_t packetSize_vkGetQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3083 countingStream->rewind();
3084 uint32_t opcode_vkGetQueryPoolResults = OP_vkGetQueryPoolResults;
3085 stream->write(&opcode_vkGetQueryPoolResults, sizeof(uint32_t));
3086 stream->write(&packetSize_vkGetQueryPoolResults, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003087 uint64_t cgen_var_228;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003088 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_228, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003089 stream->write((uint64_t*)&cgen_var_228, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003090 uint64_t cgen_var_229;
3091 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_229, 1);
3092 stream->write((uint64_t*)&cgen_var_229, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003093 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
3094 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003095 uint64_t cgen_var_230 = (uint64_t)local_dataSize;
3096 stream->putBe64(cgen_var_230);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003097 stream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003098 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
3099 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003100 stream->read((void*)pData, ((dataSize)) * sizeof(uint8_t));
3101 VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
3102 stream->read(&vkGetQueryPoolResults_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003103 countingStream->clearPool();
3104 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003105 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003106 return vkGetQueryPoolResults_VkResult_return;
3107}
3108
3109VkResult VkEncoder::vkCreateBuffer(
3110 VkDevice device,
3111 const VkBufferCreateInfo* pCreateInfo,
3112 const VkAllocationCallbacks* pAllocator,
3113 VkBuffer* pBuffer)
3114{
3115 auto stream = mImpl->stream();
3116 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003117 auto resources = mImpl->resources();
3118 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003119 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003120 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003121 VkBufferCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003122 VkAllocationCallbacks* local_pAllocator;
3123 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003124 local_pCreateInfo = nullptr;
3125 if (pCreateInfo)
3126 {
3127 local_pCreateInfo = (VkBufferCreateInfo*)pool->alloc(sizeof(const VkBufferCreateInfo));
3128 deepcopy_VkBufferCreateInfo(pool, pCreateInfo, (VkBufferCreateInfo*)(local_pCreateInfo));
3129 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003130 local_pAllocator = nullptr;
3131 if (pAllocator)
3132 {
3133 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3134 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3135 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003136 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003137 if (local_pCreateInfo)
3138 {
3139 transform_VkBufferCreateInfo(mImpl->resources(), (VkBufferCreateInfo*)(local_pCreateInfo));
3140 }
3141 if (local_pAllocator)
3142 {
3143 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
3144 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003145 countingStream->rewind();
3146 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003147 uint64_t cgen_var_231;
3148 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_231, 1);
3149 countingStream->write((uint64_t*)&cgen_var_231, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003150 marshal_VkBufferCreateInfo(countingStream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003151 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003152 uint64_t cgen_var_232 = (uint64_t)(uintptr_t)local_pAllocator;
3153 countingStream->putBe64(cgen_var_232);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003154 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003155 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003156 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003157 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003158 uint64_t cgen_var_233;
3159 countingStream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_233, 1);
3160 countingStream->write((uint64_t*)&cgen_var_233, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003161 }
3162 uint32_t packetSize_vkCreateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3163 countingStream->rewind();
3164 uint32_t opcode_vkCreateBuffer = OP_vkCreateBuffer;
3165 stream->write(&opcode_vkCreateBuffer, sizeof(uint32_t));
3166 stream->write(&packetSize_vkCreateBuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003167 uint64_t cgen_var_234;
3168 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_234, 1);
3169 stream->write((uint64_t*)&cgen_var_234, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003170 marshal_VkBufferCreateInfo(stream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003171 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003172 uint64_t cgen_var_235 = (uint64_t)(uintptr_t)local_pAllocator;
3173 stream->putBe64(cgen_var_235);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003174 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003175 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003176 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003177 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003178 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003179 uint64_t cgen_var_236;
3180 stream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_236, 1);
3181 stream->write((uint64_t*)&cgen_var_236, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003182 stream->setHandleMapping(resources->unwrapMapping());
3183 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003184 uint64_t cgen_var_237;
3185 stream->read((uint64_t*)&cgen_var_237, 8);
3186 stream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_237, (VkBuffer*)pBuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003187 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003188 VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
3189 stream->read(&vkCreateBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003190 countingStream->clearPool();
3191 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003192 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003193 return vkCreateBuffer_VkResult_return;
3194}
3195
3196void VkEncoder::vkDestroyBuffer(
3197 VkDevice device,
3198 VkBuffer buffer,
3199 const VkAllocationCallbacks* pAllocator)
3200{
3201 auto stream = mImpl->stream();
3202 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003203 auto resources = mImpl->resources();
3204 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003205 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003206 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003207 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003208 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003209 local_device = device;
3210 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003211 local_pAllocator = nullptr;
3212 if (pAllocator)
3213 {
3214 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3215 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3216 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003217 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003218 if (local_pAllocator)
3219 {
3220 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
3221 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003222 countingStream->rewind();
3223 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003224 uint64_t cgen_var_238;
3225 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_238, 1);
3226 countingStream->write((uint64_t*)&cgen_var_238, 1 * 8);
3227 uint64_t cgen_var_239;
3228 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_239, 1);
3229 countingStream->write((uint64_t*)&cgen_var_239, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003230 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003231 uint64_t cgen_var_240 = (uint64_t)(uintptr_t)local_pAllocator;
3232 countingStream->putBe64(cgen_var_240);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003233 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003234 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003235 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003236 }
3237 }
3238 uint32_t packetSize_vkDestroyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3239 countingStream->rewind();
3240 uint32_t opcode_vkDestroyBuffer = OP_vkDestroyBuffer;
3241 stream->write(&opcode_vkDestroyBuffer, sizeof(uint32_t));
3242 stream->write(&packetSize_vkDestroyBuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003243 uint64_t cgen_var_241;
3244 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_241, 1);
3245 stream->write((uint64_t*)&cgen_var_241, 1 * 8);
3246 uint64_t cgen_var_242;
3247 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_242, 1);
3248 stream->write((uint64_t*)&cgen_var_242, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003249 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003250 uint64_t cgen_var_243 = (uint64_t)(uintptr_t)local_pAllocator;
3251 stream->putBe64(cgen_var_243);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003252 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003253 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003254 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003255 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003256 resources->destroyMapping()->mapHandles_VkBuffer((VkBuffer*)&buffer);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003257}
3258
3259VkResult VkEncoder::vkCreateBufferView(
3260 VkDevice device,
3261 const VkBufferViewCreateInfo* pCreateInfo,
3262 const VkAllocationCallbacks* pAllocator,
3263 VkBufferView* pView)
3264{
3265 auto stream = mImpl->stream();
3266 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003267 auto resources = mImpl->resources();
3268 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003269 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003270 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003271 VkBufferViewCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003272 VkAllocationCallbacks* local_pAllocator;
3273 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003274 local_pCreateInfo = nullptr;
3275 if (pCreateInfo)
3276 {
3277 local_pCreateInfo = (VkBufferViewCreateInfo*)pool->alloc(sizeof(const VkBufferViewCreateInfo));
3278 deepcopy_VkBufferViewCreateInfo(pool, pCreateInfo, (VkBufferViewCreateInfo*)(local_pCreateInfo));
3279 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003280 local_pAllocator = nullptr;
3281 if (pAllocator)
3282 {
3283 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3284 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3285 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003286 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003287 if (local_pCreateInfo)
3288 {
3289 transform_VkBufferViewCreateInfo(mImpl->resources(), (VkBufferViewCreateInfo*)(local_pCreateInfo));
3290 }
3291 if (local_pAllocator)
3292 {
3293 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
3294 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003295 countingStream->rewind();
3296 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003297 uint64_t cgen_var_244;
3298 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_244, 1);
3299 countingStream->write((uint64_t*)&cgen_var_244, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003300 marshal_VkBufferViewCreateInfo(countingStream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003301 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003302 uint64_t cgen_var_245 = (uint64_t)(uintptr_t)local_pAllocator;
3303 countingStream->putBe64(cgen_var_245);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003304 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003305 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003306 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003307 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003308 uint64_t cgen_var_246;
3309 countingStream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_246, 1);
3310 countingStream->write((uint64_t*)&cgen_var_246, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003311 }
3312 uint32_t packetSize_vkCreateBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3313 countingStream->rewind();
3314 uint32_t opcode_vkCreateBufferView = OP_vkCreateBufferView;
3315 stream->write(&opcode_vkCreateBufferView, sizeof(uint32_t));
3316 stream->write(&packetSize_vkCreateBufferView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003317 uint64_t cgen_var_247;
3318 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_247, 1);
3319 stream->write((uint64_t*)&cgen_var_247, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003320 marshal_VkBufferViewCreateInfo(stream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003321 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003322 uint64_t cgen_var_248 = (uint64_t)(uintptr_t)local_pAllocator;
3323 stream->putBe64(cgen_var_248);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003324 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003325 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003326 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003327 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003328 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003329 uint64_t cgen_var_249;
3330 stream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_249, 1);
3331 stream->write((uint64_t*)&cgen_var_249, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003332 stream->setHandleMapping(resources->unwrapMapping());
3333 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003334 uint64_t cgen_var_250;
3335 stream->read((uint64_t*)&cgen_var_250, 8);
3336 stream->handleMapping()->mapHandles_u64_VkBufferView(&cgen_var_250, (VkBufferView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003337 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003338 VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
3339 stream->read(&vkCreateBufferView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003340 countingStream->clearPool();
3341 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003342 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003343 return vkCreateBufferView_VkResult_return;
3344}
3345
3346void VkEncoder::vkDestroyBufferView(
3347 VkDevice device,
3348 VkBufferView bufferView,
3349 const VkAllocationCallbacks* pAllocator)
3350{
3351 auto stream = mImpl->stream();
3352 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003353 auto resources = mImpl->resources();
3354 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003355 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003356 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003357 VkBufferView local_bufferView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003358 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003359 local_device = device;
3360 local_bufferView = bufferView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003361 local_pAllocator = nullptr;
3362 if (pAllocator)
3363 {
3364 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3365 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3366 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003367 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003368 if (local_pAllocator)
3369 {
3370 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
3371 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003372 countingStream->rewind();
3373 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003374 uint64_t cgen_var_251;
3375 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_251, 1);
3376 countingStream->write((uint64_t*)&cgen_var_251, 1 * 8);
3377 uint64_t cgen_var_252;
3378 countingStream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_252, 1);
3379 countingStream->write((uint64_t*)&cgen_var_252, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003380 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003381 uint64_t cgen_var_253 = (uint64_t)(uintptr_t)local_pAllocator;
3382 countingStream->putBe64(cgen_var_253);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003383 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003384 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003385 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003386 }
3387 }
3388 uint32_t packetSize_vkDestroyBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3389 countingStream->rewind();
3390 uint32_t opcode_vkDestroyBufferView = OP_vkDestroyBufferView;
3391 stream->write(&opcode_vkDestroyBufferView, sizeof(uint32_t));
3392 stream->write(&packetSize_vkDestroyBufferView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003393 uint64_t cgen_var_254;
3394 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_254, 1);
3395 stream->write((uint64_t*)&cgen_var_254, 1 * 8);
3396 uint64_t cgen_var_255;
3397 stream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_255, 1);
3398 stream->write((uint64_t*)&cgen_var_255, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003399 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003400 uint64_t cgen_var_256 = (uint64_t)(uintptr_t)local_pAllocator;
3401 stream->putBe64(cgen_var_256);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003402 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003403 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003404 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003405 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003406 resources->destroyMapping()->mapHandles_VkBufferView((VkBufferView*)&bufferView);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003407}
3408
3409VkResult VkEncoder::vkCreateImage(
3410 VkDevice device,
3411 const VkImageCreateInfo* pCreateInfo,
3412 const VkAllocationCallbacks* pAllocator,
3413 VkImage* pImage)
3414{
3415 auto stream = mImpl->stream();
3416 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003417 auto resources = mImpl->resources();
3418 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003419 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003420 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003421 VkImageCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003422 VkAllocationCallbacks* local_pAllocator;
3423 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003424 local_pCreateInfo = nullptr;
3425 if (pCreateInfo)
3426 {
3427 local_pCreateInfo = (VkImageCreateInfo*)pool->alloc(sizeof(const VkImageCreateInfo));
3428 deepcopy_VkImageCreateInfo(pool, pCreateInfo, (VkImageCreateInfo*)(local_pCreateInfo));
3429 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003430 local_pAllocator = nullptr;
3431 if (pAllocator)
3432 {
3433 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3434 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3435 }
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08003436 mImpl->resources()->unwrap_VkNativeBufferANDROID(pCreateInfo, local_pCreateInfo);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003437 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003438 if (local_pCreateInfo)
3439 {
3440 transform_VkImageCreateInfo(mImpl->resources(), (VkImageCreateInfo*)(local_pCreateInfo));
3441 }
3442 if (local_pAllocator)
3443 {
3444 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
3445 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003446 countingStream->rewind();
3447 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003448 uint64_t cgen_var_257;
3449 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_257, 1);
3450 countingStream->write((uint64_t*)&cgen_var_257, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003451 marshal_VkImageCreateInfo(countingStream, (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003452 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003453 uint64_t cgen_var_258 = (uint64_t)(uintptr_t)local_pAllocator;
3454 countingStream->putBe64(cgen_var_258);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003455 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003456 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003457 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003458 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003459 uint64_t cgen_var_259;
3460 countingStream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_259, 1);
3461 countingStream->write((uint64_t*)&cgen_var_259, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003462 }
3463 uint32_t packetSize_vkCreateImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3464 countingStream->rewind();
3465 uint32_t opcode_vkCreateImage = OP_vkCreateImage;
3466 stream->write(&opcode_vkCreateImage, sizeof(uint32_t));
3467 stream->write(&packetSize_vkCreateImage, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003468 uint64_t cgen_var_260;
3469 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_260, 1);
3470 stream->write((uint64_t*)&cgen_var_260, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003471 marshal_VkImageCreateInfo(stream, (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003472 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003473 uint64_t cgen_var_261 = (uint64_t)(uintptr_t)local_pAllocator;
3474 stream->putBe64(cgen_var_261);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003475 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003476 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003477 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003478 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003479 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003480 uint64_t cgen_var_262;
3481 stream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_262, 1);
3482 stream->write((uint64_t*)&cgen_var_262, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003483 stream->setHandleMapping(resources->unwrapMapping());
3484 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003485 uint64_t cgen_var_263;
3486 stream->read((uint64_t*)&cgen_var_263, 8);
3487 stream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_263, (VkImage*)pImage, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003488 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003489 VkResult vkCreateImage_VkResult_return = (VkResult)0;
3490 stream->read(&vkCreateImage_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003491 countingStream->clearPool();
3492 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003493 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003494 return vkCreateImage_VkResult_return;
3495}
3496
3497void VkEncoder::vkDestroyImage(
3498 VkDevice device,
3499 VkImage image,
3500 const VkAllocationCallbacks* pAllocator)
3501{
3502 auto stream = mImpl->stream();
3503 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003504 auto resources = mImpl->resources();
3505 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003506 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003507 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003508 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003509 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003510 local_device = device;
3511 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003512 local_pAllocator = nullptr;
3513 if (pAllocator)
3514 {
3515 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3516 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3517 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003518 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003519 if (local_pAllocator)
3520 {
3521 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
3522 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003523 countingStream->rewind();
3524 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003525 uint64_t cgen_var_264;
3526 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_264, 1);
3527 countingStream->write((uint64_t*)&cgen_var_264, 1 * 8);
3528 uint64_t cgen_var_265;
3529 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_265, 1);
3530 countingStream->write((uint64_t*)&cgen_var_265, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003531 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003532 uint64_t cgen_var_266 = (uint64_t)(uintptr_t)local_pAllocator;
3533 countingStream->putBe64(cgen_var_266);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003534 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003535 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003536 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003537 }
3538 }
3539 uint32_t packetSize_vkDestroyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3540 countingStream->rewind();
3541 uint32_t opcode_vkDestroyImage = OP_vkDestroyImage;
3542 stream->write(&opcode_vkDestroyImage, sizeof(uint32_t));
3543 stream->write(&packetSize_vkDestroyImage, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003544 uint64_t cgen_var_267;
3545 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_267, 1);
3546 stream->write((uint64_t*)&cgen_var_267, 1 * 8);
3547 uint64_t cgen_var_268;
3548 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_268, 1);
3549 stream->write((uint64_t*)&cgen_var_268, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003550 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003551 uint64_t cgen_var_269 = (uint64_t)(uintptr_t)local_pAllocator;
3552 stream->putBe64(cgen_var_269);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003553 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003554 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003555 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003556 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003557 resources->destroyMapping()->mapHandles_VkImage((VkImage*)&image);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003558}
3559
3560void VkEncoder::vkGetImageSubresourceLayout(
3561 VkDevice device,
3562 VkImage image,
3563 const VkImageSubresource* pSubresource,
3564 VkSubresourceLayout* pLayout)
3565{
3566 auto stream = mImpl->stream();
3567 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003568 auto resources = mImpl->resources();
3569 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003570 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003571 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003572 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003573 VkImageSubresource* local_pSubresource;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003574 local_device = device;
3575 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003576 local_pSubresource = nullptr;
3577 if (pSubresource)
3578 {
3579 local_pSubresource = (VkImageSubresource*)pool->alloc(sizeof(const VkImageSubresource));
3580 deepcopy_VkImageSubresource(pool, pSubresource, (VkImageSubresource*)(local_pSubresource));
3581 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08003582 if (local_pSubresource)
3583 {
3584 transform_VkImageSubresource(mImpl->resources(), (VkImageSubresource*)(local_pSubresource));
3585 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003586 countingStream->rewind();
3587 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003588 uint64_t cgen_var_270;
3589 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_270, 1);
3590 countingStream->write((uint64_t*)&cgen_var_270, 1 * 8);
3591 uint64_t cgen_var_271;
3592 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_271, 1);
3593 countingStream->write((uint64_t*)&cgen_var_271, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003594 marshal_VkImageSubresource(countingStream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003595 marshal_VkSubresourceLayout(countingStream, (VkSubresourceLayout*)(pLayout));
3596 }
3597 uint32_t packetSize_vkGetImageSubresourceLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3598 countingStream->rewind();
3599 uint32_t opcode_vkGetImageSubresourceLayout = OP_vkGetImageSubresourceLayout;
3600 stream->write(&opcode_vkGetImageSubresourceLayout, sizeof(uint32_t));
3601 stream->write(&packetSize_vkGetImageSubresourceLayout, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003602 uint64_t cgen_var_272;
3603 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_272, 1);
3604 stream->write((uint64_t*)&cgen_var_272, 1 * 8);
3605 uint64_t cgen_var_273;
3606 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_273, 1);
3607 stream->write((uint64_t*)&cgen_var_273, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003608 marshal_VkImageSubresource(stream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003609 marshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
3610 unmarshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
3611}
3612
3613VkResult VkEncoder::vkCreateImageView(
3614 VkDevice device,
3615 const VkImageViewCreateInfo* pCreateInfo,
3616 const VkAllocationCallbacks* pAllocator,
3617 VkImageView* pView)
3618{
3619 auto stream = mImpl->stream();
3620 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003621 auto resources = mImpl->resources();
3622 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003623 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003624 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003625 VkImageViewCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003626 VkAllocationCallbacks* local_pAllocator;
3627 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003628 local_pCreateInfo = nullptr;
3629 if (pCreateInfo)
3630 {
3631 local_pCreateInfo = (VkImageViewCreateInfo*)pool->alloc(sizeof(const VkImageViewCreateInfo));
3632 deepcopy_VkImageViewCreateInfo(pool, pCreateInfo, (VkImageViewCreateInfo*)(local_pCreateInfo));
3633 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003634 local_pAllocator = nullptr;
3635 if (pAllocator)
3636 {
3637 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3638 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3639 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003640 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003641 if (local_pCreateInfo)
3642 {
3643 transform_VkImageViewCreateInfo(mImpl->resources(), (VkImageViewCreateInfo*)(local_pCreateInfo));
3644 }
3645 if (local_pAllocator)
3646 {
3647 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
3648 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003649 countingStream->rewind();
3650 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003651 uint64_t cgen_var_274;
3652 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_274, 1);
3653 countingStream->write((uint64_t*)&cgen_var_274, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003654 marshal_VkImageViewCreateInfo(countingStream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003655 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003656 uint64_t cgen_var_275 = (uint64_t)(uintptr_t)local_pAllocator;
3657 countingStream->putBe64(cgen_var_275);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003658 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003659 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003660 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003661 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003662 uint64_t cgen_var_276;
3663 countingStream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_276, 1);
3664 countingStream->write((uint64_t*)&cgen_var_276, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003665 }
3666 uint32_t packetSize_vkCreateImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3667 countingStream->rewind();
3668 uint32_t opcode_vkCreateImageView = OP_vkCreateImageView;
3669 stream->write(&opcode_vkCreateImageView, sizeof(uint32_t));
3670 stream->write(&packetSize_vkCreateImageView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003671 uint64_t cgen_var_277;
3672 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_277, 1);
3673 stream->write((uint64_t*)&cgen_var_277, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003674 marshal_VkImageViewCreateInfo(stream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003675 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003676 uint64_t cgen_var_278 = (uint64_t)(uintptr_t)local_pAllocator;
3677 stream->putBe64(cgen_var_278);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003678 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003679 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003680 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003681 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003682 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003683 uint64_t cgen_var_279;
3684 stream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_279, 1);
3685 stream->write((uint64_t*)&cgen_var_279, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003686 stream->setHandleMapping(resources->unwrapMapping());
3687 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003688 uint64_t cgen_var_280;
3689 stream->read((uint64_t*)&cgen_var_280, 8);
3690 stream->handleMapping()->mapHandles_u64_VkImageView(&cgen_var_280, (VkImageView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003691 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003692 VkResult vkCreateImageView_VkResult_return = (VkResult)0;
3693 stream->read(&vkCreateImageView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003694 countingStream->clearPool();
3695 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003696 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003697 return vkCreateImageView_VkResult_return;
3698}
3699
3700void VkEncoder::vkDestroyImageView(
3701 VkDevice device,
3702 VkImageView imageView,
3703 const VkAllocationCallbacks* pAllocator)
3704{
3705 auto stream = mImpl->stream();
3706 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003707 auto resources = mImpl->resources();
3708 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003709 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003710 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003711 VkImageView local_imageView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003712 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003713 local_device = device;
3714 local_imageView = imageView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003715 local_pAllocator = nullptr;
3716 if (pAllocator)
3717 {
3718 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3719 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3720 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003721 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003722 if (local_pAllocator)
3723 {
3724 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
3725 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003726 countingStream->rewind();
3727 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003728 uint64_t cgen_var_281;
3729 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_281, 1);
3730 countingStream->write((uint64_t*)&cgen_var_281, 1 * 8);
3731 uint64_t cgen_var_282;
3732 countingStream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_282, 1);
3733 countingStream->write((uint64_t*)&cgen_var_282, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003734 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003735 uint64_t cgen_var_283 = (uint64_t)(uintptr_t)local_pAllocator;
3736 countingStream->putBe64(cgen_var_283);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003737 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003738 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003739 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003740 }
3741 }
3742 uint32_t packetSize_vkDestroyImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3743 countingStream->rewind();
3744 uint32_t opcode_vkDestroyImageView = OP_vkDestroyImageView;
3745 stream->write(&opcode_vkDestroyImageView, sizeof(uint32_t));
3746 stream->write(&packetSize_vkDestroyImageView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003747 uint64_t cgen_var_284;
3748 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_284, 1);
3749 stream->write((uint64_t*)&cgen_var_284, 1 * 8);
3750 uint64_t cgen_var_285;
3751 stream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_285, 1);
3752 stream->write((uint64_t*)&cgen_var_285, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003753 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003754 uint64_t cgen_var_286 = (uint64_t)(uintptr_t)local_pAllocator;
3755 stream->putBe64(cgen_var_286);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003756 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003757 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003758 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003759 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003760 resources->destroyMapping()->mapHandles_VkImageView((VkImageView*)&imageView);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003761}
3762
3763VkResult VkEncoder::vkCreateShaderModule(
3764 VkDevice device,
3765 const VkShaderModuleCreateInfo* pCreateInfo,
3766 const VkAllocationCallbacks* pAllocator,
3767 VkShaderModule* pShaderModule)
3768{
3769 auto stream = mImpl->stream();
3770 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003771 auto resources = mImpl->resources();
3772 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003773 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003774 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003775 VkShaderModuleCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003776 VkAllocationCallbacks* local_pAllocator;
3777 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003778 local_pCreateInfo = nullptr;
3779 if (pCreateInfo)
3780 {
3781 local_pCreateInfo = (VkShaderModuleCreateInfo*)pool->alloc(sizeof(const VkShaderModuleCreateInfo));
3782 deepcopy_VkShaderModuleCreateInfo(pool, pCreateInfo, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
3783 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003784 local_pAllocator = nullptr;
3785 if (pAllocator)
3786 {
3787 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3788 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3789 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003790 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003791 if (local_pCreateInfo)
3792 {
3793 transform_VkShaderModuleCreateInfo(mImpl->resources(), (VkShaderModuleCreateInfo*)(local_pCreateInfo));
3794 }
3795 if (local_pAllocator)
3796 {
3797 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
3798 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003799 countingStream->rewind();
3800 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003801 uint64_t cgen_var_287;
3802 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_287, 1);
3803 countingStream->write((uint64_t*)&cgen_var_287, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003804 marshal_VkShaderModuleCreateInfo(countingStream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003805 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003806 uint64_t cgen_var_288 = (uint64_t)(uintptr_t)local_pAllocator;
3807 countingStream->putBe64(cgen_var_288);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003808 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003809 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003810 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003811 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003812 uint64_t cgen_var_289;
3813 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_289, 1);
3814 countingStream->write((uint64_t*)&cgen_var_289, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003815 }
3816 uint32_t packetSize_vkCreateShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3817 countingStream->rewind();
3818 uint32_t opcode_vkCreateShaderModule = OP_vkCreateShaderModule;
3819 stream->write(&opcode_vkCreateShaderModule, sizeof(uint32_t));
3820 stream->write(&packetSize_vkCreateShaderModule, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003821 uint64_t cgen_var_290;
3822 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_290, 1);
3823 stream->write((uint64_t*)&cgen_var_290, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003824 marshal_VkShaderModuleCreateInfo(stream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003825 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003826 uint64_t cgen_var_291 = (uint64_t)(uintptr_t)local_pAllocator;
3827 stream->putBe64(cgen_var_291);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003828 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003829 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003830 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003831 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003832 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003833 uint64_t cgen_var_292;
3834 stream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_292, 1);
3835 stream->write((uint64_t*)&cgen_var_292, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003836 stream->setHandleMapping(resources->unwrapMapping());
3837 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003838 uint64_t cgen_var_293;
3839 stream->read((uint64_t*)&cgen_var_293, 8);
3840 stream->handleMapping()->mapHandles_u64_VkShaderModule(&cgen_var_293, (VkShaderModule*)pShaderModule, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003841 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003842 VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
3843 stream->read(&vkCreateShaderModule_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003844 countingStream->clearPool();
3845 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003846 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003847 return vkCreateShaderModule_VkResult_return;
3848}
3849
3850void VkEncoder::vkDestroyShaderModule(
3851 VkDevice device,
3852 VkShaderModule shaderModule,
3853 const VkAllocationCallbacks* pAllocator)
3854{
3855 auto stream = mImpl->stream();
3856 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003857 auto resources = mImpl->resources();
3858 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003859 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003860 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003861 VkShaderModule local_shaderModule;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003862 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003863 local_device = device;
3864 local_shaderModule = shaderModule;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003865 local_pAllocator = nullptr;
3866 if (pAllocator)
3867 {
3868 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3869 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3870 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003871 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003872 if (local_pAllocator)
3873 {
3874 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
3875 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003876 countingStream->rewind();
3877 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003878 uint64_t cgen_var_294;
3879 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_294, 1);
3880 countingStream->write((uint64_t*)&cgen_var_294, 1 * 8);
3881 uint64_t cgen_var_295;
3882 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_295, 1);
3883 countingStream->write((uint64_t*)&cgen_var_295, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003884 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003885 uint64_t cgen_var_296 = (uint64_t)(uintptr_t)local_pAllocator;
3886 countingStream->putBe64(cgen_var_296);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003887 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003888 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003889 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003890 }
3891 }
3892 uint32_t packetSize_vkDestroyShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3893 countingStream->rewind();
3894 uint32_t opcode_vkDestroyShaderModule = OP_vkDestroyShaderModule;
3895 stream->write(&opcode_vkDestroyShaderModule, sizeof(uint32_t));
3896 stream->write(&packetSize_vkDestroyShaderModule, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003897 uint64_t cgen_var_297;
3898 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_297, 1);
3899 stream->write((uint64_t*)&cgen_var_297, 1 * 8);
3900 uint64_t cgen_var_298;
3901 stream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_298, 1);
3902 stream->write((uint64_t*)&cgen_var_298, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003903 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003904 uint64_t cgen_var_299 = (uint64_t)(uintptr_t)local_pAllocator;
3905 stream->putBe64(cgen_var_299);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003906 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003907 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003908 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003909 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003910 resources->destroyMapping()->mapHandles_VkShaderModule((VkShaderModule*)&shaderModule);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003911}
3912
3913VkResult VkEncoder::vkCreatePipelineCache(
3914 VkDevice device,
3915 const VkPipelineCacheCreateInfo* pCreateInfo,
3916 const VkAllocationCallbacks* pAllocator,
3917 VkPipelineCache* pPipelineCache)
3918{
3919 auto stream = mImpl->stream();
3920 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003921 auto resources = mImpl->resources();
3922 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003923 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003924 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003925 VkPipelineCacheCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003926 VkAllocationCallbacks* local_pAllocator;
3927 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003928 local_pCreateInfo = nullptr;
3929 if (pCreateInfo)
3930 {
3931 local_pCreateInfo = (VkPipelineCacheCreateInfo*)pool->alloc(sizeof(const VkPipelineCacheCreateInfo));
3932 deepcopy_VkPipelineCacheCreateInfo(pool, pCreateInfo, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
3933 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003934 local_pAllocator = nullptr;
3935 if (pAllocator)
3936 {
3937 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3938 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3939 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003940 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003941 if (local_pCreateInfo)
3942 {
3943 transform_VkPipelineCacheCreateInfo(mImpl->resources(), (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
3944 }
3945 if (local_pAllocator)
3946 {
3947 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
3948 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003949 countingStream->rewind();
3950 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003951 uint64_t cgen_var_300;
3952 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_300, 1);
3953 countingStream->write((uint64_t*)&cgen_var_300, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003954 marshal_VkPipelineCacheCreateInfo(countingStream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003955 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003956 uint64_t cgen_var_301 = (uint64_t)(uintptr_t)local_pAllocator;
3957 countingStream->putBe64(cgen_var_301);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003958 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003959 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003960 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003961 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003962 uint64_t cgen_var_302;
3963 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_302, 1);
3964 countingStream->write((uint64_t*)&cgen_var_302, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003965 }
3966 uint32_t packetSize_vkCreatePipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3967 countingStream->rewind();
3968 uint32_t opcode_vkCreatePipelineCache = OP_vkCreatePipelineCache;
3969 stream->write(&opcode_vkCreatePipelineCache, sizeof(uint32_t));
3970 stream->write(&packetSize_vkCreatePipelineCache, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003971 uint64_t cgen_var_303;
3972 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_303, 1);
3973 stream->write((uint64_t*)&cgen_var_303, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003974 marshal_VkPipelineCacheCreateInfo(stream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003975 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003976 uint64_t cgen_var_304 = (uint64_t)(uintptr_t)local_pAllocator;
3977 stream->putBe64(cgen_var_304);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003978 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003979 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003980 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003981 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003982 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003983 uint64_t cgen_var_305;
3984 stream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_305, 1);
3985 stream->write((uint64_t*)&cgen_var_305, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003986 stream->setHandleMapping(resources->unwrapMapping());
3987 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003988 uint64_t cgen_var_306;
3989 stream->read((uint64_t*)&cgen_var_306, 8);
3990 stream->handleMapping()->mapHandles_u64_VkPipelineCache(&cgen_var_306, (VkPipelineCache*)pPipelineCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003991 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003992 VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
3993 stream->read(&vkCreatePipelineCache_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003994 countingStream->clearPool();
3995 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003996 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003997 return vkCreatePipelineCache_VkResult_return;
3998}
3999
4000void VkEncoder::vkDestroyPipelineCache(
4001 VkDevice device,
4002 VkPipelineCache pipelineCache,
4003 const VkAllocationCallbacks* pAllocator)
4004{
4005 auto stream = mImpl->stream();
4006 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004007 auto resources = mImpl->resources();
4008 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004009 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004010 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004011 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004012 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004013 local_device = device;
4014 local_pipelineCache = pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004015 local_pAllocator = nullptr;
4016 if (pAllocator)
4017 {
4018 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4019 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4020 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004021 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004022 if (local_pAllocator)
4023 {
4024 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
4025 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004026 countingStream->rewind();
4027 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004028 uint64_t cgen_var_307;
4029 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_307, 1);
4030 countingStream->write((uint64_t*)&cgen_var_307, 1 * 8);
4031 uint64_t cgen_var_308;
4032 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_308, 1);
4033 countingStream->write((uint64_t*)&cgen_var_308, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004034 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004035 uint64_t cgen_var_309 = (uint64_t)(uintptr_t)local_pAllocator;
4036 countingStream->putBe64(cgen_var_309);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004037 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004038 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004039 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004040 }
4041 }
4042 uint32_t packetSize_vkDestroyPipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4043 countingStream->rewind();
4044 uint32_t opcode_vkDestroyPipelineCache = OP_vkDestroyPipelineCache;
4045 stream->write(&opcode_vkDestroyPipelineCache, sizeof(uint32_t));
4046 stream->write(&packetSize_vkDestroyPipelineCache, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004047 uint64_t cgen_var_310;
4048 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_310, 1);
4049 stream->write((uint64_t*)&cgen_var_310, 1 * 8);
4050 uint64_t cgen_var_311;
4051 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_311, 1);
4052 stream->write((uint64_t*)&cgen_var_311, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004053 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004054 uint64_t cgen_var_312 = (uint64_t)(uintptr_t)local_pAllocator;
4055 stream->putBe64(cgen_var_312);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004056 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004057 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004058 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004059 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004060 resources->destroyMapping()->mapHandles_VkPipelineCache((VkPipelineCache*)&pipelineCache);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004061}
4062
4063VkResult VkEncoder::vkGetPipelineCacheData(
4064 VkDevice device,
4065 VkPipelineCache pipelineCache,
4066 size_t* pDataSize,
4067 void* pData)
4068{
4069 auto stream = mImpl->stream();
4070 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004071 auto resources = mImpl->resources();
4072 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004073 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004074 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004075 VkPipelineCache local_pipelineCache;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004076 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004077 local_pipelineCache = pipelineCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004078 countingStream->rewind();
4079 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004080 uint64_t cgen_var_313;
4081 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_313, 1);
4082 countingStream->write((uint64_t*)&cgen_var_313, 1 * 8);
4083 uint64_t cgen_var_314;
4084 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_314, 1);
4085 countingStream->write((uint64_t*)&cgen_var_314, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004086 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004087 uint64_t cgen_var_315 = (uint64_t)(uintptr_t)pDataSize;
4088 countingStream->putBe64(cgen_var_315);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004089 if (pDataSize)
4090 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004091 uint64_t cgen_var_316 = (uint64_t)(*pDataSize);
4092 countingStream->putBe64(cgen_var_316);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004093 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004094 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004095 uint64_t cgen_var_317 = (uint64_t)(uintptr_t)pData;
4096 countingStream->putBe64(cgen_var_317);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004097 if (pData)
4098 {
4099 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4100 }
4101 }
4102 uint32_t packetSize_vkGetPipelineCacheData = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4103 countingStream->rewind();
4104 uint32_t opcode_vkGetPipelineCacheData = OP_vkGetPipelineCacheData;
4105 stream->write(&opcode_vkGetPipelineCacheData, sizeof(uint32_t));
4106 stream->write(&packetSize_vkGetPipelineCacheData, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004107 uint64_t cgen_var_318;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004108 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_318, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004109 stream->write((uint64_t*)&cgen_var_318, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004110 uint64_t cgen_var_319;
4111 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_319, 1);
4112 stream->write((uint64_t*)&cgen_var_319, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004113 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004114 uint64_t cgen_var_320 = (uint64_t)(uintptr_t)pDataSize;
4115 stream->putBe64(cgen_var_320);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004116 if (pDataSize)
4117 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004118 uint64_t cgen_var_321 = (uint64_t)(*pDataSize);
4119 stream->putBe64(cgen_var_321);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004120 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004121 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004122 uint64_t cgen_var_322 = (uint64_t)(uintptr_t)pData;
4123 stream->putBe64(cgen_var_322);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004124 if (pData)
4125 {
4126 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4127 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004128 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004129 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004130 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004131 if (pDataSize)
4132 {
4133 if (!(check_pDataSize))
4134 {
4135 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
4136 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004137 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004138 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004139 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004140 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004141 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004142 if (pData)
4143 {
4144 if (!(check_pData))
4145 {
4146 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
4147 }
4148 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4149 }
4150 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
4151 stream->read(&vkGetPipelineCacheData_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004152 countingStream->clearPool();
4153 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004154 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004155 return vkGetPipelineCacheData_VkResult_return;
4156}
4157
4158VkResult VkEncoder::vkMergePipelineCaches(
4159 VkDevice device,
4160 VkPipelineCache dstCache,
4161 uint32_t srcCacheCount,
4162 const VkPipelineCache* pSrcCaches)
4163{
4164 auto stream = mImpl->stream();
4165 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004166 auto resources = mImpl->resources();
4167 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004168 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004169 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004170 VkPipelineCache local_dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004171 uint32_t local_srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004172 VkPipelineCache* local_pSrcCaches;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004173 local_device = device;
4174 local_dstCache = dstCache;
4175 local_srcCacheCount = srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004176 local_pSrcCaches = nullptr;
4177 if (pSrcCaches)
4178 {
4179 local_pSrcCaches = (VkPipelineCache*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache));
4180 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004181 countingStream->rewind();
4182 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004183 uint64_t cgen_var_326;
4184 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_326, 1);
4185 countingStream->write((uint64_t*)&cgen_var_326, 1 * 8);
4186 uint64_t cgen_var_327;
4187 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_327, 1);
4188 countingStream->write((uint64_t*)&cgen_var_327, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004189 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004190 if (((srcCacheCount)))
4191 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004192 uint64_t* cgen_var_328;
4193 countingStream->alloc((void**)&cgen_var_328, ((srcCacheCount)) * 8);
4194 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_328, ((srcCacheCount)));
4195 countingStream->write((uint64_t*)cgen_var_328, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004196 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004197 }
4198 uint32_t packetSize_vkMergePipelineCaches = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4199 countingStream->rewind();
4200 uint32_t opcode_vkMergePipelineCaches = OP_vkMergePipelineCaches;
4201 stream->write(&opcode_vkMergePipelineCaches, sizeof(uint32_t));
4202 stream->write(&packetSize_vkMergePipelineCaches, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004203 uint64_t cgen_var_329;
4204 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_329, 1);
4205 stream->write((uint64_t*)&cgen_var_329, 1 * 8);
4206 uint64_t cgen_var_330;
4207 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_330, 1);
4208 stream->write((uint64_t*)&cgen_var_330, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004209 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004210 if (((srcCacheCount)))
4211 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004212 uint64_t* cgen_var_331;
4213 stream->alloc((void**)&cgen_var_331, ((srcCacheCount)) * 8);
4214 stream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_331, ((srcCacheCount)));
4215 stream->write((uint64_t*)cgen_var_331, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004216 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004217 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
4218 stream->read(&vkMergePipelineCaches_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004219 countingStream->clearPool();
4220 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004221 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004222 return vkMergePipelineCaches_VkResult_return;
4223}
4224
4225VkResult VkEncoder::vkCreateGraphicsPipelines(
4226 VkDevice device,
4227 VkPipelineCache pipelineCache,
4228 uint32_t createInfoCount,
4229 const VkGraphicsPipelineCreateInfo* pCreateInfos,
4230 const VkAllocationCallbacks* pAllocator,
4231 VkPipeline* pPipelines)
4232{
4233 auto stream = mImpl->stream();
4234 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004235 auto resources = mImpl->resources();
4236 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004237 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004238 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004239 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004240 uint32_t local_createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004241 VkGraphicsPipelineCreateInfo* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004242 VkAllocationCallbacks* local_pAllocator;
4243 local_device = device;
4244 local_pipelineCache = pipelineCache;
4245 local_createInfoCount = createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004246 local_pCreateInfos = nullptr;
4247 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004248 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004249 local_pCreateInfos = (VkGraphicsPipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkGraphicsPipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004250 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4251 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004252 deepcopy_VkGraphicsPipelineCreateInfo(pool, pCreateInfos + i, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004253 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004254 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004255 local_pAllocator = nullptr;
4256 if (pAllocator)
4257 {
4258 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4259 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4260 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004261 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004262 if (local_pCreateInfos)
4263 {
4264 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4265 {
4266 transform_VkGraphicsPipelineCreateInfo(mImpl->resources(), (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
4267 }
4268 }
4269 if (local_pAllocator)
4270 {
4271 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
4272 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004273 countingStream->rewind();
4274 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004275 uint64_t cgen_var_332;
4276 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_332, 1);
4277 countingStream->write((uint64_t*)&cgen_var_332, 1 * 8);
4278 uint64_t cgen_var_333;
4279 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_333, 1);
4280 countingStream->write((uint64_t*)&cgen_var_333, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004281 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4282 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4283 {
4284 marshal_VkGraphicsPipelineCreateInfo(countingStream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
4285 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004286 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004287 uint64_t cgen_var_334 = (uint64_t)(uintptr_t)local_pAllocator;
4288 countingStream->putBe64(cgen_var_334);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004289 if (local_pAllocator)
4290 {
4291 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004292 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004293 if (((createInfoCount)))
4294 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004295 uint64_t* cgen_var_335;
4296 countingStream->alloc((void**)&cgen_var_335, ((createInfoCount)) * 8);
4297 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_335, ((createInfoCount)));
4298 countingStream->write((uint64_t*)cgen_var_335, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004299 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004300 }
4301 uint32_t packetSize_vkCreateGraphicsPipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4302 countingStream->rewind();
4303 uint32_t opcode_vkCreateGraphicsPipelines = OP_vkCreateGraphicsPipelines;
4304 stream->write(&opcode_vkCreateGraphicsPipelines, sizeof(uint32_t));
4305 stream->write(&packetSize_vkCreateGraphicsPipelines, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004306 uint64_t cgen_var_336;
4307 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_336, 1);
4308 stream->write((uint64_t*)&cgen_var_336, 1 * 8);
4309 uint64_t cgen_var_337;
4310 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_337, 1);
4311 stream->write((uint64_t*)&cgen_var_337, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004312 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004313 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4314 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004315 marshal_VkGraphicsPipelineCreateInfo(stream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004316 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004317 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004318 uint64_t cgen_var_338 = (uint64_t)(uintptr_t)local_pAllocator;
4319 stream->putBe64(cgen_var_338);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004320 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004321 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004322 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004323 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004324 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004325 if (((createInfoCount)))
4326 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004327 uint64_t* cgen_var_339;
4328 stream->alloc((void**)&cgen_var_339, ((createInfoCount)) * 8);
4329 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_339, ((createInfoCount)));
4330 stream->write((uint64_t*)cgen_var_339, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004331 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004332 stream->setHandleMapping(resources->unwrapMapping());
4333 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004334 if (((createInfoCount)))
4335 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004336 uint64_t* cgen_var_340;
4337 stream->alloc((void**)&cgen_var_340, ((createInfoCount)) * 8);
4338 stream->read((uint64_t*)cgen_var_340, ((createInfoCount)) * 8);
4339 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_340, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004340 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004341 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004342 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
4343 stream->read(&vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004344 countingStream->clearPool();
4345 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004346 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004347 return vkCreateGraphicsPipelines_VkResult_return;
4348}
4349
4350VkResult VkEncoder::vkCreateComputePipelines(
4351 VkDevice device,
4352 VkPipelineCache pipelineCache,
4353 uint32_t createInfoCount,
4354 const VkComputePipelineCreateInfo* pCreateInfos,
4355 const VkAllocationCallbacks* pAllocator,
4356 VkPipeline* pPipelines)
4357{
4358 auto stream = mImpl->stream();
4359 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004360 auto resources = mImpl->resources();
4361 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004362 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004363 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004364 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004365 uint32_t local_createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004366 VkComputePipelineCreateInfo* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004367 VkAllocationCallbacks* local_pAllocator;
4368 local_device = device;
4369 local_pipelineCache = pipelineCache;
4370 local_createInfoCount = createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004371 local_pCreateInfos = nullptr;
4372 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004373 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004374 local_pCreateInfos = (VkComputePipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkComputePipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004375 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4376 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004377 deepcopy_VkComputePipelineCreateInfo(pool, pCreateInfos + i, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004378 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004379 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004380 local_pAllocator = nullptr;
4381 if (pAllocator)
4382 {
4383 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4384 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4385 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004386 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004387 if (local_pCreateInfos)
4388 {
4389 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4390 {
4391 transform_VkComputePipelineCreateInfo(mImpl->resources(), (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
4392 }
4393 }
4394 if (local_pAllocator)
4395 {
4396 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
4397 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004398 countingStream->rewind();
4399 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004400 uint64_t cgen_var_341;
4401 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_341, 1);
4402 countingStream->write((uint64_t*)&cgen_var_341, 1 * 8);
4403 uint64_t cgen_var_342;
4404 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_342, 1);
4405 countingStream->write((uint64_t*)&cgen_var_342, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004406 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4407 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4408 {
4409 marshal_VkComputePipelineCreateInfo(countingStream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
4410 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004411 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004412 uint64_t cgen_var_343 = (uint64_t)(uintptr_t)local_pAllocator;
4413 countingStream->putBe64(cgen_var_343);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004414 if (local_pAllocator)
4415 {
4416 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004417 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004418 if (((createInfoCount)))
4419 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004420 uint64_t* cgen_var_344;
4421 countingStream->alloc((void**)&cgen_var_344, ((createInfoCount)) * 8);
4422 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_344, ((createInfoCount)));
4423 countingStream->write((uint64_t*)cgen_var_344, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004424 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004425 }
4426 uint32_t packetSize_vkCreateComputePipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4427 countingStream->rewind();
4428 uint32_t opcode_vkCreateComputePipelines = OP_vkCreateComputePipelines;
4429 stream->write(&opcode_vkCreateComputePipelines, sizeof(uint32_t));
4430 stream->write(&packetSize_vkCreateComputePipelines, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004431 uint64_t cgen_var_345;
4432 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_345, 1);
4433 stream->write((uint64_t*)&cgen_var_345, 1 * 8);
4434 uint64_t cgen_var_346;
4435 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_346, 1);
4436 stream->write((uint64_t*)&cgen_var_346, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004437 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004438 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4439 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004440 marshal_VkComputePipelineCreateInfo(stream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004441 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004442 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004443 uint64_t cgen_var_347 = (uint64_t)(uintptr_t)local_pAllocator;
4444 stream->putBe64(cgen_var_347);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004445 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004446 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004447 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004448 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004449 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004450 if (((createInfoCount)))
4451 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004452 uint64_t* cgen_var_348;
4453 stream->alloc((void**)&cgen_var_348, ((createInfoCount)) * 8);
4454 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_348, ((createInfoCount)));
4455 stream->write((uint64_t*)cgen_var_348, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004456 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004457 stream->setHandleMapping(resources->unwrapMapping());
4458 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004459 if (((createInfoCount)))
4460 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004461 uint64_t* cgen_var_349;
4462 stream->alloc((void**)&cgen_var_349, ((createInfoCount)) * 8);
4463 stream->read((uint64_t*)cgen_var_349, ((createInfoCount)) * 8);
4464 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_349, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004465 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004466 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004467 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
4468 stream->read(&vkCreateComputePipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004469 countingStream->clearPool();
4470 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004471 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004472 return vkCreateComputePipelines_VkResult_return;
4473}
4474
4475void VkEncoder::vkDestroyPipeline(
4476 VkDevice device,
4477 VkPipeline pipeline,
4478 const VkAllocationCallbacks* pAllocator)
4479{
4480 auto stream = mImpl->stream();
4481 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004482 auto resources = mImpl->resources();
4483 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004484 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004485 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004486 VkPipeline local_pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004487 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004488 local_device = device;
4489 local_pipeline = pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004490 local_pAllocator = nullptr;
4491 if (pAllocator)
4492 {
4493 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4494 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4495 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004496 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004497 if (local_pAllocator)
4498 {
4499 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
4500 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004501 countingStream->rewind();
4502 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004503 uint64_t cgen_var_350;
4504 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_350, 1);
4505 countingStream->write((uint64_t*)&cgen_var_350, 1 * 8);
4506 uint64_t cgen_var_351;
4507 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_351, 1);
4508 countingStream->write((uint64_t*)&cgen_var_351, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004509 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004510 uint64_t cgen_var_352 = (uint64_t)(uintptr_t)local_pAllocator;
4511 countingStream->putBe64(cgen_var_352);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004512 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004513 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004514 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004515 }
4516 }
4517 uint32_t packetSize_vkDestroyPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4518 countingStream->rewind();
4519 uint32_t opcode_vkDestroyPipeline = OP_vkDestroyPipeline;
4520 stream->write(&opcode_vkDestroyPipeline, sizeof(uint32_t));
4521 stream->write(&packetSize_vkDestroyPipeline, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004522 uint64_t cgen_var_353;
4523 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_353, 1);
4524 stream->write((uint64_t*)&cgen_var_353, 1 * 8);
4525 uint64_t cgen_var_354;
4526 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_354, 1);
4527 stream->write((uint64_t*)&cgen_var_354, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004528 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004529 uint64_t cgen_var_355 = (uint64_t)(uintptr_t)local_pAllocator;
4530 stream->putBe64(cgen_var_355);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004531 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004532 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004533 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004534 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004535 resources->destroyMapping()->mapHandles_VkPipeline((VkPipeline*)&pipeline);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004536}
4537
4538VkResult VkEncoder::vkCreatePipelineLayout(
4539 VkDevice device,
4540 const VkPipelineLayoutCreateInfo* pCreateInfo,
4541 const VkAllocationCallbacks* pAllocator,
4542 VkPipelineLayout* pPipelineLayout)
4543{
4544 auto stream = mImpl->stream();
4545 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004546 auto resources = mImpl->resources();
4547 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004548 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004549 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004550 VkPipelineLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004551 VkAllocationCallbacks* local_pAllocator;
4552 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004553 local_pCreateInfo = nullptr;
4554 if (pCreateInfo)
4555 {
4556 local_pCreateInfo = (VkPipelineLayoutCreateInfo*)pool->alloc(sizeof(const VkPipelineLayoutCreateInfo));
4557 deepcopy_VkPipelineLayoutCreateInfo(pool, pCreateInfo, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
4558 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004559 local_pAllocator = nullptr;
4560 if (pAllocator)
4561 {
4562 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4563 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4564 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004565 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004566 if (local_pCreateInfo)
4567 {
4568 transform_VkPipelineLayoutCreateInfo(mImpl->resources(), (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
4569 }
4570 if (local_pAllocator)
4571 {
4572 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
4573 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004574 countingStream->rewind();
4575 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004576 uint64_t cgen_var_356;
4577 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_356, 1);
4578 countingStream->write((uint64_t*)&cgen_var_356, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004579 marshal_VkPipelineLayoutCreateInfo(countingStream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004580 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004581 uint64_t cgen_var_357 = (uint64_t)(uintptr_t)local_pAllocator;
4582 countingStream->putBe64(cgen_var_357);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004583 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004584 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004585 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004586 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004587 uint64_t cgen_var_358;
4588 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_358, 1);
4589 countingStream->write((uint64_t*)&cgen_var_358, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004590 }
4591 uint32_t packetSize_vkCreatePipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4592 countingStream->rewind();
4593 uint32_t opcode_vkCreatePipelineLayout = OP_vkCreatePipelineLayout;
4594 stream->write(&opcode_vkCreatePipelineLayout, sizeof(uint32_t));
4595 stream->write(&packetSize_vkCreatePipelineLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004596 uint64_t cgen_var_359;
4597 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_359, 1);
4598 stream->write((uint64_t*)&cgen_var_359, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004599 marshal_VkPipelineLayoutCreateInfo(stream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004600 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004601 uint64_t cgen_var_360 = (uint64_t)(uintptr_t)local_pAllocator;
4602 stream->putBe64(cgen_var_360);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004603 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004604 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004605 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004606 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004607 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004608 uint64_t cgen_var_361;
4609 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_361, 1);
4610 stream->write((uint64_t*)&cgen_var_361, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004611 stream->setHandleMapping(resources->unwrapMapping());
4612 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004613 uint64_t cgen_var_362;
4614 stream->read((uint64_t*)&cgen_var_362, 8);
4615 stream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_362, (VkPipelineLayout*)pPipelineLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004616 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004617 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
4618 stream->read(&vkCreatePipelineLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004619 countingStream->clearPool();
4620 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004621 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004622 return vkCreatePipelineLayout_VkResult_return;
4623}
4624
4625void VkEncoder::vkDestroyPipelineLayout(
4626 VkDevice device,
4627 VkPipelineLayout pipelineLayout,
4628 const VkAllocationCallbacks* pAllocator)
4629{
4630 auto stream = mImpl->stream();
4631 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004632 auto resources = mImpl->resources();
4633 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004634 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004635 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004636 VkPipelineLayout local_pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004637 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004638 local_device = device;
4639 local_pipelineLayout = pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004640 local_pAllocator = nullptr;
4641 if (pAllocator)
4642 {
4643 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4644 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4645 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004646 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004647 if (local_pAllocator)
4648 {
4649 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
4650 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004651 countingStream->rewind();
4652 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004653 uint64_t cgen_var_363;
4654 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_363, 1);
4655 countingStream->write((uint64_t*)&cgen_var_363, 1 * 8);
4656 uint64_t cgen_var_364;
4657 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_364, 1);
4658 countingStream->write((uint64_t*)&cgen_var_364, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004659 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004660 uint64_t cgen_var_365 = (uint64_t)(uintptr_t)local_pAllocator;
4661 countingStream->putBe64(cgen_var_365);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004662 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004663 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004664 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004665 }
4666 }
4667 uint32_t packetSize_vkDestroyPipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4668 countingStream->rewind();
4669 uint32_t opcode_vkDestroyPipelineLayout = OP_vkDestroyPipelineLayout;
4670 stream->write(&opcode_vkDestroyPipelineLayout, sizeof(uint32_t));
4671 stream->write(&packetSize_vkDestroyPipelineLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004672 uint64_t cgen_var_366;
4673 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_366, 1);
4674 stream->write((uint64_t*)&cgen_var_366, 1 * 8);
4675 uint64_t cgen_var_367;
4676 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_367, 1);
4677 stream->write((uint64_t*)&cgen_var_367, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004678 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004679 uint64_t cgen_var_368 = (uint64_t)(uintptr_t)local_pAllocator;
4680 stream->putBe64(cgen_var_368);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004681 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004682 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004683 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004684 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004685 resources->destroyMapping()->mapHandles_VkPipelineLayout((VkPipelineLayout*)&pipelineLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004686}
4687
4688VkResult VkEncoder::vkCreateSampler(
4689 VkDevice device,
4690 const VkSamplerCreateInfo* pCreateInfo,
4691 const VkAllocationCallbacks* pAllocator,
4692 VkSampler* pSampler)
4693{
4694 auto stream = mImpl->stream();
4695 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004696 auto resources = mImpl->resources();
4697 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004698 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004699 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004700 VkSamplerCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004701 VkAllocationCallbacks* local_pAllocator;
4702 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004703 local_pCreateInfo = nullptr;
4704 if (pCreateInfo)
4705 {
4706 local_pCreateInfo = (VkSamplerCreateInfo*)pool->alloc(sizeof(const VkSamplerCreateInfo));
4707 deepcopy_VkSamplerCreateInfo(pool, pCreateInfo, (VkSamplerCreateInfo*)(local_pCreateInfo));
4708 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004709 local_pAllocator = nullptr;
4710 if (pAllocator)
4711 {
4712 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4713 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4714 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004715 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004716 if (local_pCreateInfo)
4717 {
4718 transform_VkSamplerCreateInfo(mImpl->resources(), (VkSamplerCreateInfo*)(local_pCreateInfo));
4719 }
4720 if (local_pAllocator)
4721 {
4722 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
4723 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004724 countingStream->rewind();
4725 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004726 uint64_t cgen_var_369;
4727 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_369, 1);
4728 countingStream->write((uint64_t*)&cgen_var_369, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004729 marshal_VkSamplerCreateInfo(countingStream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004730 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004731 uint64_t cgen_var_370 = (uint64_t)(uintptr_t)local_pAllocator;
4732 countingStream->putBe64(cgen_var_370);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004733 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004734 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004735 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004736 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004737 uint64_t cgen_var_371;
4738 countingStream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_371, 1);
4739 countingStream->write((uint64_t*)&cgen_var_371, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004740 }
4741 uint32_t packetSize_vkCreateSampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4742 countingStream->rewind();
4743 uint32_t opcode_vkCreateSampler = OP_vkCreateSampler;
4744 stream->write(&opcode_vkCreateSampler, sizeof(uint32_t));
4745 stream->write(&packetSize_vkCreateSampler, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004746 uint64_t cgen_var_372;
4747 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_372, 1);
4748 stream->write((uint64_t*)&cgen_var_372, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004749 marshal_VkSamplerCreateInfo(stream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004750 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004751 uint64_t cgen_var_373 = (uint64_t)(uintptr_t)local_pAllocator;
4752 stream->putBe64(cgen_var_373);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004753 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004754 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004755 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004756 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004757 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004758 uint64_t cgen_var_374;
4759 stream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_374, 1);
4760 stream->write((uint64_t*)&cgen_var_374, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004761 stream->setHandleMapping(resources->unwrapMapping());
4762 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004763 uint64_t cgen_var_375;
4764 stream->read((uint64_t*)&cgen_var_375, 8);
4765 stream->handleMapping()->mapHandles_u64_VkSampler(&cgen_var_375, (VkSampler*)pSampler, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004766 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004767 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
4768 stream->read(&vkCreateSampler_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004769 countingStream->clearPool();
4770 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004771 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004772 return vkCreateSampler_VkResult_return;
4773}
4774
4775void VkEncoder::vkDestroySampler(
4776 VkDevice device,
4777 VkSampler sampler,
4778 const VkAllocationCallbacks* pAllocator)
4779{
4780 auto stream = mImpl->stream();
4781 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004782 auto resources = mImpl->resources();
4783 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004784 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004785 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004786 VkSampler local_sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004787 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004788 local_device = device;
4789 local_sampler = sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004790 local_pAllocator = nullptr;
4791 if (pAllocator)
4792 {
4793 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4794 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4795 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004796 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004797 if (local_pAllocator)
4798 {
4799 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
4800 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004801 countingStream->rewind();
4802 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004803 uint64_t cgen_var_376;
4804 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_376, 1);
4805 countingStream->write((uint64_t*)&cgen_var_376, 1 * 8);
4806 uint64_t cgen_var_377;
4807 countingStream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_377, 1);
4808 countingStream->write((uint64_t*)&cgen_var_377, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004809 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004810 uint64_t cgen_var_378 = (uint64_t)(uintptr_t)local_pAllocator;
4811 countingStream->putBe64(cgen_var_378);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004812 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004813 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004814 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004815 }
4816 }
4817 uint32_t packetSize_vkDestroySampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4818 countingStream->rewind();
4819 uint32_t opcode_vkDestroySampler = OP_vkDestroySampler;
4820 stream->write(&opcode_vkDestroySampler, sizeof(uint32_t));
4821 stream->write(&packetSize_vkDestroySampler, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004822 uint64_t cgen_var_379;
4823 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_379, 1);
4824 stream->write((uint64_t*)&cgen_var_379, 1 * 8);
4825 uint64_t cgen_var_380;
4826 stream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_380, 1);
4827 stream->write((uint64_t*)&cgen_var_380, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004828 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004829 uint64_t cgen_var_381 = (uint64_t)(uintptr_t)local_pAllocator;
4830 stream->putBe64(cgen_var_381);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004831 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004832 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004833 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004834 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004835 resources->destroyMapping()->mapHandles_VkSampler((VkSampler*)&sampler);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004836}
4837
4838VkResult VkEncoder::vkCreateDescriptorSetLayout(
4839 VkDevice device,
4840 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
4841 const VkAllocationCallbacks* pAllocator,
4842 VkDescriptorSetLayout* pSetLayout)
4843{
4844 auto stream = mImpl->stream();
4845 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004846 auto resources = mImpl->resources();
4847 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004848 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004849 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004850 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004851 VkAllocationCallbacks* local_pAllocator;
4852 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004853 local_pCreateInfo = nullptr;
4854 if (pCreateInfo)
4855 {
4856 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
4857 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
4858 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004859 local_pAllocator = nullptr;
4860 if (pAllocator)
4861 {
4862 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4863 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4864 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004865 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004866 if (local_pCreateInfo)
4867 {
4868 transform_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
4869 }
4870 if (local_pAllocator)
4871 {
4872 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
4873 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004874 countingStream->rewind();
4875 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004876 uint64_t cgen_var_382;
4877 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_382, 1);
4878 countingStream->write((uint64_t*)&cgen_var_382, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004879 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004880 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004881 uint64_t cgen_var_383 = (uint64_t)(uintptr_t)local_pAllocator;
4882 countingStream->putBe64(cgen_var_383);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004883 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004884 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004885 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004886 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004887 uint64_t cgen_var_384;
4888 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_384, 1);
4889 countingStream->write((uint64_t*)&cgen_var_384, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004890 }
4891 uint32_t packetSize_vkCreateDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4892 countingStream->rewind();
4893 uint32_t opcode_vkCreateDescriptorSetLayout = OP_vkCreateDescriptorSetLayout;
4894 stream->write(&opcode_vkCreateDescriptorSetLayout, sizeof(uint32_t));
4895 stream->write(&packetSize_vkCreateDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004896 uint64_t cgen_var_385;
4897 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_385, 1);
4898 stream->write((uint64_t*)&cgen_var_385, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004899 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004900 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004901 uint64_t cgen_var_386 = (uint64_t)(uintptr_t)local_pAllocator;
4902 stream->putBe64(cgen_var_386);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004903 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004904 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004905 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004906 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004907 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004908 uint64_t cgen_var_387;
4909 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_387, 1);
4910 stream->write((uint64_t*)&cgen_var_387, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004911 stream->setHandleMapping(resources->unwrapMapping());
4912 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004913 uint64_t cgen_var_388;
4914 stream->read((uint64_t*)&cgen_var_388, 8);
4915 stream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(&cgen_var_388, (VkDescriptorSetLayout*)pSetLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004916 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004917 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
4918 stream->read(&vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004919 countingStream->clearPool();
4920 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004921 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004922 return vkCreateDescriptorSetLayout_VkResult_return;
4923}
4924
4925void VkEncoder::vkDestroyDescriptorSetLayout(
4926 VkDevice device,
4927 VkDescriptorSetLayout descriptorSetLayout,
4928 const VkAllocationCallbacks* pAllocator)
4929{
4930 auto stream = mImpl->stream();
4931 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004932 auto resources = mImpl->resources();
4933 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004934 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004935 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004936 VkDescriptorSetLayout local_descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004937 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004938 local_device = device;
4939 local_descriptorSetLayout = descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004940 local_pAllocator = nullptr;
4941 if (pAllocator)
4942 {
4943 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4944 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4945 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004946 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004947 if (local_pAllocator)
4948 {
4949 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
4950 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004951 countingStream->rewind();
4952 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004953 uint64_t cgen_var_389;
4954 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_389, 1);
4955 countingStream->write((uint64_t*)&cgen_var_389, 1 * 8);
4956 uint64_t cgen_var_390;
4957 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_390, 1);
4958 countingStream->write((uint64_t*)&cgen_var_390, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004959 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004960 uint64_t cgen_var_391 = (uint64_t)(uintptr_t)local_pAllocator;
4961 countingStream->putBe64(cgen_var_391);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004962 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004963 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004964 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004965 }
4966 }
4967 uint32_t packetSize_vkDestroyDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4968 countingStream->rewind();
4969 uint32_t opcode_vkDestroyDescriptorSetLayout = OP_vkDestroyDescriptorSetLayout;
4970 stream->write(&opcode_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
4971 stream->write(&packetSize_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004972 uint64_t cgen_var_392;
4973 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_392, 1);
4974 stream->write((uint64_t*)&cgen_var_392, 1 * 8);
4975 uint64_t cgen_var_393;
4976 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_393, 1);
4977 stream->write((uint64_t*)&cgen_var_393, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004978 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004979 uint64_t cgen_var_394 = (uint64_t)(uintptr_t)local_pAllocator;
4980 stream->putBe64(cgen_var_394);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004981 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004982 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004983 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004984 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004985 resources->destroyMapping()->mapHandles_VkDescriptorSetLayout((VkDescriptorSetLayout*)&descriptorSetLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004986}
4987
4988VkResult VkEncoder::vkCreateDescriptorPool(
4989 VkDevice device,
4990 const VkDescriptorPoolCreateInfo* pCreateInfo,
4991 const VkAllocationCallbacks* pAllocator,
4992 VkDescriptorPool* pDescriptorPool)
4993{
4994 auto stream = mImpl->stream();
4995 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004996 auto resources = mImpl->resources();
4997 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004998 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004999 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005000 VkDescriptorPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005001 VkAllocationCallbacks* local_pAllocator;
5002 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005003 local_pCreateInfo = nullptr;
5004 if (pCreateInfo)
5005 {
5006 local_pCreateInfo = (VkDescriptorPoolCreateInfo*)pool->alloc(sizeof(const VkDescriptorPoolCreateInfo));
5007 deepcopy_VkDescriptorPoolCreateInfo(pool, pCreateInfo, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
5008 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005009 local_pAllocator = nullptr;
5010 if (pAllocator)
5011 {
5012 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5013 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5014 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005015 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005016 if (local_pCreateInfo)
5017 {
5018 transform_VkDescriptorPoolCreateInfo(mImpl->resources(), (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
5019 }
5020 if (local_pAllocator)
5021 {
5022 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
5023 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005024 countingStream->rewind();
5025 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005026 uint64_t cgen_var_395;
5027 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_395, 1);
5028 countingStream->write((uint64_t*)&cgen_var_395, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005029 marshal_VkDescriptorPoolCreateInfo(countingStream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005030 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005031 uint64_t cgen_var_396 = (uint64_t)(uintptr_t)local_pAllocator;
5032 countingStream->putBe64(cgen_var_396);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005033 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005034 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005035 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005036 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005037 uint64_t cgen_var_397;
5038 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_397, 1);
5039 countingStream->write((uint64_t*)&cgen_var_397, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005040 }
5041 uint32_t packetSize_vkCreateDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5042 countingStream->rewind();
5043 uint32_t opcode_vkCreateDescriptorPool = OP_vkCreateDescriptorPool;
5044 stream->write(&opcode_vkCreateDescriptorPool, sizeof(uint32_t));
5045 stream->write(&packetSize_vkCreateDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005046 uint64_t cgen_var_398;
5047 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_398, 1);
5048 stream->write((uint64_t*)&cgen_var_398, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005049 marshal_VkDescriptorPoolCreateInfo(stream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005050 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005051 uint64_t cgen_var_399 = (uint64_t)(uintptr_t)local_pAllocator;
5052 stream->putBe64(cgen_var_399);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005053 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005054 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005055 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005056 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005057 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005058 uint64_t cgen_var_400;
5059 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_400, 1);
5060 stream->write((uint64_t*)&cgen_var_400, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005061 stream->setHandleMapping(resources->unwrapMapping());
5062 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005063 uint64_t cgen_var_401;
5064 stream->read((uint64_t*)&cgen_var_401, 8);
5065 stream->handleMapping()->mapHandles_u64_VkDescriptorPool(&cgen_var_401, (VkDescriptorPool*)pDescriptorPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005066 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005067 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
5068 stream->read(&vkCreateDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005069 countingStream->clearPool();
5070 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005071 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005072 return vkCreateDescriptorPool_VkResult_return;
5073}
5074
5075void VkEncoder::vkDestroyDescriptorPool(
5076 VkDevice device,
5077 VkDescriptorPool descriptorPool,
5078 const VkAllocationCallbacks* pAllocator)
5079{
5080 auto stream = mImpl->stream();
5081 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005082 auto resources = mImpl->resources();
5083 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005084 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005085 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005086 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005087 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005088 local_device = device;
5089 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005090 local_pAllocator = nullptr;
5091 if (pAllocator)
5092 {
5093 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5094 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5095 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005096 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005097 if (local_pAllocator)
5098 {
5099 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
5100 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005101 countingStream->rewind();
5102 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005103 uint64_t cgen_var_402;
5104 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_402, 1);
5105 countingStream->write((uint64_t*)&cgen_var_402, 1 * 8);
5106 uint64_t cgen_var_403;
5107 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_403, 1);
5108 countingStream->write((uint64_t*)&cgen_var_403, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005109 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005110 uint64_t cgen_var_404 = (uint64_t)(uintptr_t)local_pAllocator;
5111 countingStream->putBe64(cgen_var_404);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005112 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005113 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005114 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005115 }
5116 }
5117 uint32_t packetSize_vkDestroyDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5118 countingStream->rewind();
5119 uint32_t opcode_vkDestroyDescriptorPool = OP_vkDestroyDescriptorPool;
5120 stream->write(&opcode_vkDestroyDescriptorPool, sizeof(uint32_t));
5121 stream->write(&packetSize_vkDestroyDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005122 uint64_t cgen_var_405;
5123 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_405, 1);
5124 stream->write((uint64_t*)&cgen_var_405, 1 * 8);
5125 uint64_t cgen_var_406;
5126 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_406, 1);
5127 stream->write((uint64_t*)&cgen_var_406, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005128 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005129 uint64_t cgen_var_407 = (uint64_t)(uintptr_t)local_pAllocator;
5130 stream->putBe64(cgen_var_407);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005131 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005132 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005133 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005134 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005135 resources->destroyMapping()->mapHandles_VkDescriptorPool((VkDescriptorPool*)&descriptorPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005136}
5137
5138VkResult VkEncoder::vkResetDescriptorPool(
5139 VkDevice device,
5140 VkDescriptorPool descriptorPool,
5141 VkDescriptorPoolResetFlags flags)
5142{
5143 auto stream = mImpl->stream();
5144 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005145 auto resources = mImpl->resources();
5146 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005147 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005148 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005149 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005150 VkDescriptorPoolResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005151 local_device = device;
5152 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005153 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005154 countingStream->rewind();
5155 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005156 uint64_t cgen_var_408;
5157 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_408, 1);
5158 countingStream->write((uint64_t*)&cgen_var_408, 1 * 8);
5159 uint64_t cgen_var_409;
5160 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_409, 1);
5161 countingStream->write((uint64_t*)&cgen_var_409, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005162 countingStream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005163 }
5164 uint32_t packetSize_vkResetDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5165 countingStream->rewind();
5166 uint32_t opcode_vkResetDescriptorPool = OP_vkResetDescriptorPool;
5167 stream->write(&opcode_vkResetDescriptorPool, sizeof(uint32_t));
5168 stream->write(&packetSize_vkResetDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005169 uint64_t cgen_var_410;
5170 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_410, 1);
5171 stream->write((uint64_t*)&cgen_var_410, 1 * 8);
5172 uint64_t cgen_var_411;
5173 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_411, 1);
5174 stream->write((uint64_t*)&cgen_var_411, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005175 stream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005176 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
5177 stream->read(&vkResetDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005178 countingStream->clearPool();
5179 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005180 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005181 return vkResetDescriptorPool_VkResult_return;
5182}
5183
5184VkResult VkEncoder::vkAllocateDescriptorSets(
5185 VkDevice device,
5186 const VkDescriptorSetAllocateInfo* pAllocateInfo,
5187 VkDescriptorSet* pDescriptorSets)
5188{
5189 auto stream = mImpl->stream();
5190 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005191 auto resources = mImpl->resources();
5192 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005193 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005194 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005195 VkDescriptorSetAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005196 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005197 local_pAllocateInfo = nullptr;
5198 if (pAllocateInfo)
5199 {
5200 local_pAllocateInfo = (VkDescriptorSetAllocateInfo*)pool->alloc(sizeof(const VkDescriptorSetAllocateInfo));
5201 deepcopy_VkDescriptorSetAllocateInfo(pool, pAllocateInfo, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
5202 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08005203 if (local_pAllocateInfo)
5204 {
5205 transform_VkDescriptorSetAllocateInfo(mImpl->resources(), (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
5206 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005207 countingStream->rewind();
5208 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005209 uint64_t cgen_var_412;
5210 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_412, 1);
5211 countingStream->write((uint64_t*)&cgen_var_412, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005212 marshal_VkDescriptorSetAllocateInfo(countingStream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005213 if (pAllocateInfo->descriptorSetCount)
5214 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005215 uint64_t* cgen_var_413;
5216 countingStream->alloc((void**)&cgen_var_413, pAllocateInfo->descriptorSetCount * 8);
5217 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_413, pAllocateInfo->descriptorSetCount);
5218 countingStream->write((uint64_t*)cgen_var_413, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005219 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005220 }
5221 uint32_t packetSize_vkAllocateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5222 countingStream->rewind();
5223 uint32_t opcode_vkAllocateDescriptorSets = OP_vkAllocateDescriptorSets;
5224 stream->write(&opcode_vkAllocateDescriptorSets, sizeof(uint32_t));
5225 stream->write(&packetSize_vkAllocateDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005226 uint64_t cgen_var_414;
5227 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_414, 1);
5228 stream->write((uint64_t*)&cgen_var_414, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005229 marshal_VkDescriptorSetAllocateInfo(stream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08005230 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08005231 if (pAllocateInfo->descriptorSetCount)
5232 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005233 uint64_t* cgen_var_415;
5234 stream->alloc((void**)&cgen_var_415, pAllocateInfo->descriptorSetCount * 8);
5235 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_415, pAllocateInfo->descriptorSetCount);
5236 stream->write((uint64_t*)cgen_var_415, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005237 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005238 stream->setHandleMapping(resources->unwrapMapping());
5239 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08005240 if (pAllocateInfo->descriptorSetCount)
5241 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005242 uint64_t* cgen_var_416;
5243 stream->alloc((void**)&cgen_var_416, pAllocateInfo->descriptorSetCount * 8);
5244 stream->read((uint64_t*)cgen_var_416, pAllocateInfo->descriptorSetCount * 8);
5245 stream->handleMapping()->mapHandles_u64_VkDescriptorSet(cgen_var_416, (VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005246 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005247 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005248 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
5249 stream->read(&vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005250 countingStream->clearPool();
5251 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005252 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005253 return vkAllocateDescriptorSets_VkResult_return;
5254}
5255
5256VkResult VkEncoder::vkFreeDescriptorSets(
5257 VkDevice device,
5258 VkDescriptorPool descriptorPool,
5259 uint32_t descriptorSetCount,
5260 const VkDescriptorSet* pDescriptorSets)
5261{
5262 auto stream = mImpl->stream();
5263 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005264 auto resources = mImpl->resources();
5265 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005266 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005267 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005268 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005269 uint32_t local_descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005270 VkDescriptorSet* local_pDescriptorSets;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005271 local_device = device;
5272 local_descriptorPool = descriptorPool;
5273 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005274 local_pDescriptorSets = nullptr;
5275 if (pDescriptorSets)
5276 {
5277 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
5278 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005279 countingStream->rewind();
5280 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005281 uint64_t cgen_var_417;
5282 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_417, 1);
5283 countingStream->write((uint64_t*)&cgen_var_417, 1 * 8);
5284 uint64_t cgen_var_418;
5285 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_418, 1);
5286 countingStream->write((uint64_t*)&cgen_var_418, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005287 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005288 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005289 uint64_t cgen_var_419 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5290 countingStream->putBe64(cgen_var_419);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005291 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005292 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005293 if (((descriptorSetCount)))
5294 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005295 uint64_t* cgen_var_420;
5296 countingStream->alloc((void**)&cgen_var_420, ((descriptorSetCount)) * 8);
5297 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_420, ((descriptorSetCount)));
5298 countingStream->write((uint64_t*)cgen_var_420, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005299 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005300 }
5301 }
5302 uint32_t packetSize_vkFreeDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5303 countingStream->rewind();
5304 uint32_t opcode_vkFreeDescriptorSets = OP_vkFreeDescriptorSets;
5305 stream->write(&opcode_vkFreeDescriptorSets, sizeof(uint32_t));
5306 stream->write(&packetSize_vkFreeDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005307 uint64_t cgen_var_421;
5308 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_421, 1);
5309 stream->write((uint64_t*)&cgen_var_421, 1 * 8);
5310 uint64_t cgen_var_422;
5311 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_422, 1);
5312 stream->write((uint64_t*)&cgen_var_422, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005313 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005314 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005315 uint64_t cgen_var_423 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5316 stream->putBe64(cgen_var_423);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005317 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005318 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005319 if (((descriptorSetCount)))
5320 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005321 uint64_t* cgen_var_424;
5322 stream->alloc((void**)&cgen_var_424, ((descriptorSetCount)) * 8);
5323 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_424, ((descriptorSetCount)));
5324 stream->write((uint64_t*)cgen_var_424, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005325 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005326 }
5327 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
5328 stream->read(&vkFreeDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005329 countingStream->clearPool();
5330 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005331 pool->freeAll();
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08005332 if (pDescriptorSets)
5333 {
5334 resources->destroyMapping()->mapHandles_VkDescriptorSet((VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)));
5335 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005336 return vkFreeDescriptorSets_VkResult_return;
5337}
5338
5339void VkEncoder::vkUpdateDescriptorSets(
5340 VkDevice device,
5341 uint32_t descriptorWriteCount,
5342 const VkWriteDescriptorSet* pDescriptorWrites,
5343 uint32_t descriptorCopyCount,
5344 const VkCopyDescriptorSet* pDescriptorCopies)
5345{
5346 auto stream = mImpl->stream();
5347 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005348 auto resources = mImpl->resources();
5349 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005350 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005351 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005352 uint32_t local_descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005353 VkWriteDescriptorSet* local_pDescriptorWrites;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005354 uint32_t local_descriptorCopyCount;
5355 VkCopyDescriptorSet* local_pDescriptorCopies;
5356 local_device = device;
5357 local_descriptorWriteCount = descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005358 local_pDescriptorWrites = nullptr;
5359 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005360 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005361 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005362 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5363 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005364 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005365 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005366 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005367 local_descriptorCopyCount = descriptorCopyCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005368 local_pDescriptorCopies = nullptr;
5369 if (pDescriptorCopies)
5370 {
5371 local_pDescriptorCopies = (VkCopyDescriptorSet*)pool->alloc(((descriptorCopyCount)) * sizeof(const VkCopyDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005372 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5373 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005374 deepcopy_VkCopyDescriptorSet(pool, pDescriptorCopies + i, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
5375 }
5376 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08005377 if (local_pDescriptorWrites)
5378 {
5379 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5380 {
5381 transform_VkWriteDescriptorSet(mImpl->resources(), (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
5382 }
5383 }
5384 if (local_pDescriptorCopies)
5385 {
5386 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5387 {
5388 transform_VkCopyDescriptorSet(mImpl->resources(), (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
5389 }
5390 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005391 countingStream->rewind();
5392 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005393 uint64_t cgen_var_425;
5394 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_425, 1);
5395 countingStream->write((uint64_t*)&cgen_var_425, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005396 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
5397 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5398 {
5399 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
5400 }
5401 countingStream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
5402 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5403 {
5404 marshal_VkCopyDescriptorSet(countingStream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005405 }
5406 }
5407 uint32_t packetSize_vkUpdateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5408 countingStream->rewind();
5409 uint32_t opcode_vkUpdateDescriptorSets = OP_vkUpdateDescriptorSets;
5410 stream->write(&opcode_vkUpdateDescriptorSets, sizeof(uint32_t));
5411 stream->write(&packetSize_vkUpdateDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005412 uint64_t cgen_var_426;
5413 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_426, 1);
5414 stream->write((uint64_t*)&cgen_var_426, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005415 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005416 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5417 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005418 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005419 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005420 stream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005421 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5422 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005423 marshal_VkCopyDescriptorSet(stream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005424 }
5425}
5426
5427VkResult VkEncoder::vkCreateFramebuffer(
5428 VkDevice device,
5429 const VkFramebufferCreateInfo* pCreateInfo,
5430 const VkAllocationCallbacks* pAllocator,
5431 VkFramebuffer* pFramebuffer)
5432{
5433 auto stream = mImpl->stream();
5434 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005435 auto resources = mImpl->resources();
5436 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005437 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005438 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005439 VkFramebufferCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005440 VkAllocationCallbacks* local_pAllocator;
5441 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005442 local_pCreateInfo = nullptr;
5443 if (pCreateInfo)
5444 {
5445 local_pCreateInfo = (VkFramebufferCreateInfo*)pool->alloc(sizeof(const VkFramebufferCreateInfo));
5446 deepcopy_VkFramebufferCreateInfo(pool, pCreateInfo, (VkFramebufferCreateInfo*)(local_pCreateInfo));
5447 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005448 local_pAllocator = nullptr;
5449 if (pAllocator)
5450 {
5451 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5452 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5453 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005454 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005455 if (local_pCreateInfo)
5456 {
5457 transform_VkFramebufferCreateInfo(mImpl->resources(), (VkFramebufferCreateInfo*)(local_pCreateInfo));
5458 }
5459 if (local_pAllocator)
5460 {
5461 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
5462 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005463 countingStream->rewind();
5464 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005465 uint64_t cgen_var_427;
5466 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_427, 1);
5467 countingStream->write((uint64_t*)&cgen_var_427, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005468 marshal_VkFramebufferCreateInfo(countingStream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005469 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005470 uint64_t cgen_var_428 = (uint64_t)(uintptr_t)local_pAllocator;
5471 countingStream->putBe64(cgen_var_428);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005472 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005473 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005474 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005475 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005476 uint64_t cgen_var_429;
5477 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_429, 1);
5478 countingStream->write((uint64_t*)&cgen_var_429, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005479 }
5480 uint32_t packetSize_vkCreateFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5481 countingStream->rewind();
5482 uint32_t opcode_vkCreateFramebuffer = OP_vkCreateFramebuffer;
5483 stream->write(&opcode_vkCreateFramebuffer, sizeof(uint32_t));
5484 stream->write(&packetSize_vkCreateFramebuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005485 uint64_t cgen_var_430;
5486 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_430, 1);
5487 stream->write((uint64_t*)&cgen_var_430, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005488 marshal_VkFramebufferCreateInfo(stream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005489 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005490 uint64_t cgen_var_431 = (uint64_t)(uintptr_t)local_pAllocator;
5491 stream->putBe64(cgen_var_431);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005492 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005493 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005494 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005495 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005496 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005497 uint64_t cgen_var_432;
5498 stream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_432, 1);
5499 stream->write((uint64_t*)&cgen_var_432, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005500 stream->setHandleMapping(resources->unwrapMapping());
5501 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005502 uint64_t cgen_var_433;
5503 stream->read((uint64_t*)&cgen_var_433, 8);
5504 stream->handleMapping()->mapHandles_u64_VkFramebuffer(&cgen_var_433, (VkFramebuffer*)pFramebuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005505 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005506 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
5507 stream->read(&vkCreateFramebuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005508 countingStream->clearPool();
5509 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005510 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005511 return vkCreateFramebuffer_VkResult_return;
5512}
5513
5514void VkEncoder::vkDestroyFramebuffer(
5515 VkDevice device,
5516 VkFramebuffer framebuffer,
5517 const VkAllocationCallbacks* pAllocator)
5518{
5519 auto stream = mImpl->stream();
5520 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005521 auto resources = mImpl->resources();
5522 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005523 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005524 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005525 VkFramebuffer local_framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005526 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005527 local_device = device;
5528 local_framebuffer = framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005529 local_pAllocator = nullptr;
5530 if (pAllocator)
5531 {
5532 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5533 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5534 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005535 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005536 if (local_pAllocator)
5537 {
5538 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
5539 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005540 countingStream->rewind();
5541 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005542 uint64_t cgen_var_434;
5543 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_434, 1);
5544 countingStream->write((uint64_t*)&cgen_var_434, 1 * 8);
5545 uint64_t cgen_var_435;
5546 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_435, 1);
5547 countingStream->write((uint64_t*)&cgen_var_435, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005548 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005549 uint64_t cgen_var_436 = (uint64_t)(uintptr_t)local_pAllocator;
5550 countingStream->putBe64(cgen_var_436);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005551 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005552 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005553 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005554 }
5555 }
5556 uint32_t packetSize_vkDestroyFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5557 countingStream->rewind();
5558 uint32_t opcode_vkDestroyFramebuffer = OP_vkDestroyFramebuffer;
5559 stream->write(&opcode_vkDestroyFramebuffer, sizeof(uint32_t));
5560 stream->write(&packetSize_vkDestroyFramebuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005561 uint64_t cgen_var_437;
5562 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_437, 1);
5563 stream->write((uint64_t*)&cgen_var_437, 1 * 8);
5564 uint64_t cgen_var_438;
5565 stream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_438, 1);
5566 stream->write((uint64_t*)&cgen_var_438, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005567 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005568 uint64_t cgen_var_439 = (uint64_t)(uintptr_t)local_pAllocator;
5569 stream->putBe64(cgen_var_439);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005570 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005571 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005572 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005573 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005574 resources->destroyMapping()->mapHandles_VkFramebuffer((VkFramebuffer*)&framebuffer);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005575}
5576
5577VkResult VkEncoder::vkCreateRenderPass(
5578 VkDevice device,
5579 const VkRenderPassCreateInfo* pCreateInfo,
5580 const VkAllocationCallbacks* pAllocator,
5581 VkRenderPass* pRenderPass)
5582{
5583 auto stream = mImpl->stream();
5584 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005585 auto resources = mImpl->resources();
5586 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005587 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005588 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005589 VkRenderPassCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005590 VkAllocationCallbacks* local_pAllocator;
5591 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005592 local_pCreateInfo = nullptr;
5593 if (pCreateInfo)
5594 {
5595 local_pCreateInfo = (VkRenderPassCreateInfo*)pool->alloc(sizeof(const VkRenderPassCreateInfo));
5596 deepcopy_VkRenderPassCreateInfo(pool, pCreateInfo, (VkRenderPassCreateInfo*)(local_pCreateInfo));
5597 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005598 local_pAllocator = nullptr;
5599 if (pAllocator)
5600 {
5601 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5602 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5603 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005604 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005605 if (local_pCreateInfo)
5606 {
5607 transform_VkRenderPassCreateInfo(mImpl->resources(), (VkRenderPassCreateInfo*)(local_pCreateInfo));
5608 }
5609 if (local_pAllocator)
5610 {
5611 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
5612 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005613 countingStream->rewind();
5614 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005615 uint64_t cgen_var_440;
5616 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_440, 1);
5617 countingStream->write((uint64_t*)&cgen_var_440, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005618 marshal_VkRenderPassCreateInfo(countingStream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005619 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005620 uint64_t cgen_var_441 = (uint64_t)(uintptr_t)local_pAllocator;
5621 countingStream->putBe64(cgen_var_441);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005622 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005623 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005624 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005625 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005626 uint64_t cgen_var_442;
5627 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_442, 1);
5628 countingStream->write((uint64_t*)&cgen_var_442, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005629 }
5630 uint32_t packetSize_vkCreateRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5631 countingStream->rewind();
5632 uint32_t opcode_vkCreateRenderPass = OP_vkCreateRenderPass;
5633 stream->write(&opcode_vkCreateRenderPass, sizeof(uint32_t));
5634 stream->write(&packetSize_vkCreateRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005635 uint64_t cgen_var_443;
5636 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_443, 1);
5637 stream->write((uint64_t*)&cgen_var_443, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005638 marshal_VkRenderPassCreateInfo(stream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005639 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005640 uint64_t cgen_var_444 = (uint64_t)(uintptr_t)local_pAllocator;
5641 stream->putBe64(cgen_var_444);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005642 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005643 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005644 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005645 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005646 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005647 uint64_t cgen_var_445;
5648 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_445, 1);
5649 stream->write((uint64_t*)&cgen_var_445, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005650 stream->setHandleMapping(resources->unwrapMapping());
5651 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005652 uint64_t cgen_var_446;
5653 stream->read((uint64_t*)&cgen_var_446, 8);
5654 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_446, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005655 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005656 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
5657 stream->read(&vkCreateRenderPass_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005658 countingStream->clearPool();
5659 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005660 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005661 return vkCreateRenderPass_VkResult_return;
5662}
5663
5664void VkEncoder::vkDestroyRenderPass(
5665 VkDevice device,
5666 VkRenderPass renderPass,
5667 const VkAllocationCallbacks* pAllocator)
5668{
5669 auto stream = mImpl->stream();
5670 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005671 auto resources = mImpl->resources();
5672 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005673 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005674 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005675 VkRenderPass local_renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005676 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005677 local_device = device;
5678 local_renderPass = renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005679 local_pAllocator = nullptr;
5680 if (pAllocator)
5681 {
5682 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5683 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5684 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005685 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005686 if (local_pAllocator)
5687 {
5688 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
5689 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005690 countingStream->rewind();
5691 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005692 uint64_t cgen_var_447;
5693 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_447, 1);
5694 countingStream->write((uint64_t*)&cgen_var_447, 1 * 8);
5695 uint64_t cgen_var_448;
5696 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_448, 1);
5697 countingStream->write((uint64_t*)&cgen_var_448, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005698 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005699 uint64_t cgen_var_449 = (uint64_t)(uintptr_t)local_pAllocator;
5700 countingStream->putBe64(cgen_var_449);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005701 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005702 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005703 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005704 }
5705 }
5706 uint32_t packetSize_vkDestroyRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5707 countingStream->rewind();
5708 uint32_t opcode_vkDestroyRenderPass = OP_vkDestroyRenderPass;
5709 stream->write(&opcode_vkDestroyRenderPass, sizeof(uint32_t));
5710 stream->write(&packetSize_vkDestroyRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005711 uint64_t cgen_var_450;
5712 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_450, 1);
5713 stream->write((uint64_t*)&cgen_var_450, 1 * 8);
5714 uint64_t cgen_var_451;
5715 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_451, 1);
5716 stream->write((uint64_t*)&cgen_var_451, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005717 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005718 uint64_t cgen_var_452 = (uint64_t)(uintptr_t)local_pAllocator;
5719 stream->putBe64(cgen_var_452);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005720 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005721 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005722 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005723 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005724 resources->destroyMapping()->mapHandles_VkRenderPass((VkRenderPass*)&renderPass);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005725}
5726
5727void VkEncoder::vkGetRenderAreaGranularity(
5728 VkDevice device,
5729 VkRenderPass renderPass,
5730 VkExtent2D* pGranularity)
5731{
5732 auto stream = mImpl->stream();
5733 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005734 auto resources = mImpl->resources();
5735 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005736 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005737 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005738 VkRenderPass local_renderPass;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005739 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005740 local_renderPass = renderPass;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005741 countingStream->rewind();
5742 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005743 uint64_t cgen_var_453;
5744 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_453, 1);
5745 countingStream->write((uint64_t*)&cgen_var_453, 1 * 8);
5746 uint64_t cgen_var_454;
5747 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_454, 1);
5748 countingStream->write((uint64_t*)&cgen_var_454, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005749 marshal_VkExtent2D(countingStream, (VkExtent2D*)(pGranularity));
5750 }
5751 uint32_t packetSize_vkGetRenderAreaGranularity = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5752 countingStream->rewind();
5753 uint32_t opcode_vkGetRenderAreaGranularity = OP_vkGetRenderAreaGranularity;
5754 stream->write(&opcode_vkGetRenderAreaGranularity, sizeof(uint32_t));
5755 stream->write(&packetSize_vkGetRenderAreaGranularity, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005756 uint64_t cgen_var_455;
5757 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_455, 1);
5758 stream->write((uint64_t*)&cgen_var_455, 1 * 8);
5759 uint64_t cgen_var_456;
5760 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_456, 1);
5761 stream->write((uint64_t*)&cgen_var_456, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005762 marshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
5763 unmarshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
5764}
5765
5766VkResult VkEncoder::vkCreateCommandPool(
5767 VkDevice device,
5768 const VkCommandPoolCreateInfo* pCreateInfo,
5769 const VkAllocationCallbacks* pAllocator,
5770 VkCommandPool* pCommandPool)
5771{
5772 auto stream = mImpl->stream();
5773 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005774 auto resources = mImpl->resources();
5775 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005776 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005777 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005778 VkCommandPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005779 VkAllocationCallbacks* local_pAllocator;
5780 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005781 local_pCreateInfo = nullptr;
5782 if (pCreateInfo)
5783 {
5784 local_pCreateInfo = (VkCommandPoolCreateInfo*)pool->alloc(sizeof(const VkCommandPoolCreateInfo));
5785 deepcopy_VkCommandPoolCreateInfo(pool, pCreateInfo, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
5786 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005787 local_pAllocator = nullptr;
5788 if (pAllocator)
5789 {
5790 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5791 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5792 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005793 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005794 if (local_pCreateInfo)
5795 {
5796 transform_VkCommandPoolCreateInfo(mImpl->resources(), (VkCommandPoolCreateInfo*)(local_pCreateInfo));
5797 }
5798 if (local_pAllocator)
5799 {
5800 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
5801 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005802 countingStream->rewind();
5803 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005804 uint64_t cgen_var_457;
5805 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_457, 1);
5806 countingStream->write((uint64_t*)&cgen_var_457, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005807 marshal_VkCommandPoolCreateInfo(countingStream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005808 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005809 uint64_t cgen_var_458 = (uint64_t)(uintptr_t)local_pAllocator;
5810 countingStream->putBe64(cgen_var_458);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005811 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005812 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005813 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005814 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005815 uint64_t cgen_var_459;
5816 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_459, 1);
5817 countingStream->write((uint64_t*)&cgen_var_459, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005818 }
5819 uint32_t packetSize_vkCreateCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5820 countingStream->rewind();
5821 uint32_t opcode_vkCreateCommandPool = OP_vkCreateCommandPool;
5822 stream->write(&opcode_vkCreateCommandPool, sizeof(uint32_t));
5823 stream->write(&packetSize_vkCreateCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005824 uint64_t cgen_var_460;
5825 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_460, 1);
5826 stream->write((uint64_t*)&cgen_var_460, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005827 marshal_VkCommandPoolCreateInfo(stream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005828 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005829 uint64_t cgen_var_461 = (uint64_t)(uintptr_t)local_pAllocator;
5830 stream->putBe64(cgen_var_461);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005831 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005832 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005833 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005834 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005835 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005836 uint64_t cgen_var_462;
5837 stream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_462, 1);
5838 stream->write((uint64_t*)&cgen_var_462, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005839 stream->setHandleMapping(resources->unwrapMapping());
5840 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005841 uint64_t cgen_var_463;
5842 stream->read((uint64_t*)&cgen_var_463, 8);
5843 stream->handleMapping()->mapHandles_u64_VkCommandPool(&cgen_var_463, (VkCommandPool*)pCommandPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005844 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005845 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
5846 stream->read(&vkCreateCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005847 countingStream->clearPool();
5848 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005849 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005850 return vkCreateCommandPool_VkResult_return;
5851}
5852
5853void VkEncoder::vkDestroyCommandPool(
5854 VkDevice device,
5855 VkCommandPool commandPool,
5856 const VkAllocationCallbacks* pAllocator)
5857{
5858 auto stream = mImpl->stream();
5859 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005860 auto resources = mImpl->resources();
5861 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005862 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005863 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005864 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005865 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005866 local_device = device;
5867 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005868 local_pAllocator = nullptr;
5869 if (pAllocator)
5870 {
5871 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5872 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5873 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005874 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005875 if (local_pAllocator)
5876 {
5877 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
5878 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005879 countingStream->rewind();
5880 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005881 uint64_t cgen_var_464;
5882 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_464, 1);
5883 countingStream->write((uint64_t*)&cgen_var_464, 1 * 8);
5884 uint64_t cgen_var_465;
5885 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_465, 1);
5886 countingStream->write((uint64_t*)&cgen_var_465, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005887 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005888 uint64_t cgen_var_466 = (uint64_t)(uintptr_t)local_pAllocator;
5889 countingStream->putBe64(cgen_var_466);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005890 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005891 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005892 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005893 }
5894 }
5895 uint32_t packetSize_vkDestroyCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5896 countingStream->rewind();
5897 uint32_t opcode_vkDestroyCommandPool = OP_vkDestroyCommandPool;
5898 stream->write(&opcode_vkDestroyCommandPool, sizeof(uint32_t));
5899 stream->write(&packetSize_vkDestroyCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005900 uint64_t cgen_var_467;
5901 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_467, 1);
5902 stream->write((uint64_t*)&cgen_var_467, 1 * 8);
5903 uint64_t cgen_var_468;
5904 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_468, 1);
5905 stream->write((uint64_t*)&cgen_var_468, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005906 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005907 uint64_t cgen_var_469 = (uint64_t)(uintptr_t)local_pAllocator;
5908 stream->putBe64(cgen_var_469);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005909 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005910 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005911 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005912 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005913 resources->destroyMapping()->mapHandles_VkCommandPool((VkCommandPool*)&commandPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005914}
5915
5916VkResult VkEncoder::vkResetCommandPool(
5917 VkDevice device,
5918 VkCommandPool commandPool,
5919 VkCommandPoolResetFlags flags)
5920{
5921 auto stream = mImpl->stream();
5922 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005923 auto resources = mImpl->resources();
5924 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005925 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005926 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005927 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005928 VkCommandPoolResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005929 local_device = device;
5930 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005931 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005932 countingStream->rewind();
5933 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005934 uint64_t cgen_var_470;
5935 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_470, 1);
5936 countingStream->write((uint64_t*)&cgen_var_470, 1 * 8);
5937 uint64_t cgen_var_471;
5938 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_471, 1);
5939 countingStream->write((uint64_t*)&cgen_var_471, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005940 countingStream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005941 }
5942 uint32_t packetSize_vkResetCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5943 countingStream->rewind();
5944 uint32_t opcode_vkResetCommandPool = OP_vkResetCommandPool;
5945 stream->write(&opcode_vkResetCommandPool, sizeof(uint32_t));
5946 stream->write(&packetSize_vkResetCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005947 uint64_t cgen_var_472;
5948 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_472, 1);
5949 stream->write((uint64_t*)&cgen_var_472, 1 * 8);
5950 uint64_t cgen_var_473;
5951 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_473, 1);
5952 stream->write((uint64_t*)&cgen_var_473, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005953 stream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005954 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
5955 stream->read(&vkResetCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005956 countingStream->clearPool();
5957 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005958 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005959 return vkResetCommandPool_VkResult_return;
5960}
5961
5962VkResult VkEncoder::vkAllocateCommandBuffers(
5963 VkDevice device,
5964 const VkCommandBufferAllocateInfo* pAllocateInfo,
5965 VkCommandBuffer* pCommandBuffers)
5966{
5967 auto stream = mImpl->stream();
5968 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005969 auto resources = mImpl->resources();
5970 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005971 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005972 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005973 VkCommandBufferAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005974 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005975 local_pAllocateInfo = nullptr;
5976 if (pAllocateInfo)
5977 {
5978 local_pAllocateInfo = (VkCommandBufferAllocateInfo*)pool->alloc(sizeof(const VkCommandBufferAllocateInfo));
5979 deepcopy_VkCommandBufferAllocateInfo(pool, pAllocateInfo, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
5980 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08005981 if (local_pAllocateInfo)
5982 {
5983 transform_VkCommandBufferAllocateInfo(mImpl->resources(), (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
5984 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005985 countingStream->rewind();
5986 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005987 uint64_t cgen_var_474;
5988 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_474, 1);
5989 countingStream->write((uint64_t*)&cgen_var_474, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005990 marshal_VkCommandBufferAllocateInfo(countingStream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005991 if (pAllocateInfo->commandBufferCount)
5992 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005993 uint64_t* cgen_var_475;
5994 countingStream->alloc((void**)&cgen_var_475, pAllocateInfo->commandBufferCount * 8);
5995 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_475, pAllocateInfo->commandBufferCount);
5996 countingStream->write((uint64_t*)cgen_var_475, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005997 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005998 }
5999 uint32_t packetSize_vkAllocateCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6000 countingStream->rewind();
6001 uint32_t opcode_vkAllocateCommandBuffers = OP_vkAllocateCommandBuffers;
6002 stream->write(&opcode_vkAllocateCommandBuffers, sizeof(uint32_t));
6003 stream->write(&packetSize_vkAllocateCommandBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006004 uint64_t cgen_var_476;
6005 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_476, 1);
6006 stream->write((uint64_t*)&cgen_var_476, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006007 marshal_VkCommandBufferAllocateInfo(stream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08006008 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08006009 if (pAllocateInfo->commandBufferCount)
6010 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006011 uint64_t* cgen_var_477;
6012 stream->alloc((void**)&cgen_var_477, pAllocateInfo->commandBufferCount * 8);
6013 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_477, pAllocateInfo->commandBufferCount);
6014 stream->write((uint64_t*)cgen_var_477, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006015 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006016 stream->setHandleMapping(resources->unwrapMapping());
6017 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08006018 if (pAllocateInfo->commandBufferCount)
6019 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006020 uint64_t* cgen_var_478;
6021 stream->alloc((void**)&cgen_var_478, pAllocateInfo->commandBufferCount * 8);
6022 stream->read((uint64_t*)cgen_var_478, pAllocateInfo->commandBufferCount * 8);
6023 stream->handleMapping()->mapHandles_u64_VkCommandBuffer(cgen_var_478, (VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006024 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006025 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006026 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
6027 stream->read(&vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006028 countingStream->clearPool();
6029 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006030 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006031 return vkAllocateCommandBuffers_VkResult_return;
6032}
6033
6034void VkEncoder::vkFreeCommandBuffers(
6035 VkDevice device,
6036 VkCommandPool commandPool,
6037 uint32_t commandBufferCount,
6038 const VkCommandBuffer* pCommandBuffers)
6039{
6040 auto stream = mImpl->stream();
6041 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006042 auto resources = mImpl->resources();
6043 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006044 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006045 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006046 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006047 uint32_t local_commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006048 VkCommandBuffer* local_pCommandBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006049 local_device = device;
6050 local_commandPool = commandPool;
6051 local_commandBufferCount = commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006052 local_pCommandBuffers = nullptr;
6053 if (pCommandBuffers)
6054 {
6055 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
6056 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006057 countingStream->rewind();
6058 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006059 uint64_t cgen_var_479;
6060 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_479, 1);
6061 countingStream->write((uint64_t*)&cgen_var_479, 1 * 8);
6062 uint64_t cgen_var_480;
6063 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_480, 1);
6064 countingStream->write((uint64_t*)&cgen_var_480, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006065 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006066 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006067 uint64_t cgen_var_481 = (uint64_t)(uintptr_t)local_pCommandBuffers;
6068 countingStream->putBe64(cgen_var_481);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006069 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006070 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08006071 if (((commandBufferCount)))
6072 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006073 uint64_t* cgen_var_482;
6074 countingStream->alloc((void**)&cgen_var_482, ((commandBufferCount)) * 8);
6075 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_482, ((commandBufferCount)));
6076 countingStream->write((uint64_t*)cgen_var_482, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006077 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006078 }
6079 }
6080 uint32_t packetSize_vkFreeCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6081 countingStream->rewind();
6082 uint32_t opcode_vkFreeCommandBuffers = OP_vkFreeCommandBuffers;
6083 stream->write(&opcode_vkFreeCommandBuffers, sizeof(uint32_t));
6084 stream->write(&packetSize_vkFreeCommandBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006085 uint64_t cgen_var_483;
6086 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_483, 1);
6087 stream->write((uint64_t*)&cgen_var_483, 1 * 8);
6088 uint64_t cgen_var_484;
6089 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_484, 1);
6090 stream->write((uint64_t*)&cgen_var_484, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006091 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006092 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006093 uint64_t cgen_var_485 = (uint64_t)(uintptr_t)local_pCommandBuffers;
6094 stream->putBe64(cgen_var_485);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006095 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006096 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08006097 if (((commandBufferCount)))
6098 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006099 uint64_t* cgen_var_486;
6100 stream->alloc((void**)&cgen_var_486, ((commandBufferCount)) * 8);
6101 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_486, ((commandBufferCount)));
6102 stream->write((uint64_t*)cgen_var_486, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006103 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006104 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006105 if (pCommandBuffers)
6106 {
6107 resources->destroyMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)));
6108 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006109}
6110
6111VkResult VkEncoder::vkBeginCommandBuffer(
6112 VkCommandBuffer commandBuffer,
6113 const VkCommandBufferBeginInfo* pBeginInfo)
6114{
6115 auto stream = mImpl->stream();
6116 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006117 auto resources = mImpl->resources();
6118 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006119 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006120 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006121 VkCommandBufferBeginInfo* local_pBeginInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006122 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006123 local_pBeginInfo = nullptr;
6124 if (pBeginInfo)
6125 {
6126 local_pBeginInfo = (VkCommandBufferBeginInfo*)pool->alloc(sizeof(const VkCommandBufferBeginInfo));
6127 deepcopy_VkCommandBufferBeginInfo(pool, pBeginInfo, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
6128 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006129 if (local_pBeginInfo)
6130 {
6131 transform_VkCommandBufferBeginInfo(mImpl->resources(), (VkCommandBufferBeginInfo*)(local_pBeginInfo));
6132 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006133 countingStream->rewind();
6134 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006135 uint64_t cgen_var_487;
6136 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_487, 1);
6137 countingStream->write((uint64_t*)&cgen_var_487, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006138 marshal_VkCommandBufferBeginInfo(countingStream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006139 }
6140 uint32_t packetSize_vkBeginCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6141 countingStream->rewind();
6142 uint32_t opcode_vkBeginCommandBuffer = OP_vkBeginCommandBuffer;
6143 stream->write(&opcode_vkBeginCommandBuffer, sizeof(uint32_t));
6144 stream->write(&packetSize_vkBeginCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006145 uint64_t cgen_var_488;
6146 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_488, 1);
6147 stream->write((uint64_t*)&cgen_var_488, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006148 marshal_VkCommandBufferBeginInfo(stream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006149 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
6150 stream->read(&vkBeginCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006151 countingStream->clearPool();
6152 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006153 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006154 return vkBeginCommandBuffer_VkResult_return;
6155}
6156
6157VkResult VkEncoder::vkEndCommandBuffer(
6158 VkCommandBuffer commandBuffer)
6159{
6160 auto stream = mImpl->stream();
6161 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006162 auto resources = mImpl->resources();
6163 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006164 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006165 VkCommandBuffer local_commandBuffer;
6166 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006167 countingStream->rewind();
6168 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006169 uint64_t cgen_var_489;
6170 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_489, 1);
6171 countingStream->write((uint64_t*)&cgen_var_489, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006172 }
6173 uint32_t packetSize_vkEndCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6174 countingStream->rewind();
6175 uint32_t opcode_vkEndCommandBuffer = OP_vkEndCommandBuffer;
6176 stream->write(&opcode_vkEndCommandBuffer, sizeof(uint32_t));
6177 stream->write(&packetSize_vkEndCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006178 uint64_t cgen_var_490;
6179 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_490, 1);
6180 stream->write((uint64_t*)&cgen_var_490, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006181 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
6182 stream->read(&vkEndCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006183 countingStream->clearPool();
6184 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006185 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006186 return vkEndCommandBuffer_VkResult_return;
6187}
6188
6189VkResult VkEncoder::vkResetCommandBuffer(
6190 VkCommandBuffer commandBuffer,
6191 VkCommandBufferResetFlags flags)
6192{
6193 auto stream = mImpl->stream();
6194 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006195 auto resources = mImpl->resources();
6196 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006197 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006198 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006199 VkCommandBufferResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006200 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006201 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006202 countingStream->rewind();
6203 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006204 uint64_t cgen_var_491;
6205 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_491, 1);
6206 countingStream->write((uint64_t*)&cgen_var_491, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006207 countingStream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006208 }
6209 uint32_t packetSize_vkResetCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6210 countingStream->rewind();
6211 uint32_t opcode_vkResetCommandBuffer = OP_vkResetCommandBuffer;
6212 stream->write(&opcode_vkResetCommandBuffer, sizeof(uint32_t));
6213 stream->write(&packetSize_vkResetCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006214 uint64_t cgen_var_492;
6215 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_492, 1);
6216 stream->write((uint64_t*)&cgen_var_492, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006217 stream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006218 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
6219 stream->read(&vkResetCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006220 countingStream->clearPool();
6221 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006222 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006223 return vkResetCommandBuffer_VkResult_return;
6224}
6225
6226void VkEncoder::vkCmdBindPipeline(
6227 VkCommandBuffer commandBuffer,
6228 VkPipelineBindPoint pipelineBindPoint,
6229 VkPipeline pipeline)
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 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006238 VkPipeline local_pipeline;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006239 local_commandBuffer = commandBuffer;
6240 local_pipelineBindPoint = pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006241 local_pipeline = pipeline;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006242 countingStream->rewind();
6243 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006244 uint64_t cgen_var_493;
6245 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_493, 1);
6246 countingStream->write((uint64_t*)&cgen_var_493, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006247 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006248 uint64_t cgen_var_494;
6249 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_494, 1);
6250 countingStream->write((uint64_t*)&cgen_var_494, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006251 }
6252 uint32_t packetSize_vkCmdBindPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6253 countingStream->rewind();
6254 uint32_t opcode_vkCmdBindPipeline = OP_vkCmdBindPipeline;
6255 stream->write(&opcode_vkCmdBindPipeline, sizeof(uint32_t));
6256 stream->write(&packetSize_vkCmdBindPipeline, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006257 uint64_t cgen_var_495;
6258 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_495, 1);
6259 stream->write((uint64_t*)&cgen_var_495, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006260 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006261 uint64_t cgen_var_496;
6262 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_496, 1);
6263 stream->write((uint64_t*)&cgen_var_496, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006264}
6265
6266void VkEncoder::vkCmdSetViewport(
6267 VkCommandBuffer commandBuffer,
6268 uint32_t firstViewport,
6269 uint32_t viewportCount,
6270 const VkViewport* pViewports)
6271{
6272 auto stream = mImpl->stream();
6273 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006274 auto resources = mImpl->resources();
6275 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006276 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006277 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006278 uint32_t local_firstViewport;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006279 uint32_t local_viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006280 VkViewport* local_pViewports;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006281 local_commandBuffer = commandBuffer;
6282 local_firstViewport = firstViewport;
6283 local_viewportCount = viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006284 local_pViewports = nullptr;
6285 if (pViewports)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006286 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006287 local_pViewports = (VkViewport*)pool->alloc(((viewportCount)) * sizeof(const VkViewport));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006288 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6289 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006290 deepcopy_VkViewport(pool, pViewports + i, (VkViewport*)(local_pViewports + i));
6291 }
6292 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006293 if (local_pViewports)
6294 {
6295 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6296 {
6297 transform_VkViewport(mImpl->resources(), (VkViewport*)(local_pViewports + i));
6298 }
6299 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006300 countingStream->rewind();
6301 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006302 uint64_t cgen_var_497;
6303 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_497, 1);
6304 countingStream->write((uint64_t*)&cgen_var_497, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006305 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
6306 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
6307 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6308 {
6309 marshal_VkViewport(countingStream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006310 }
6311 }
6312 uint32_t packetSize_vkCmdSetViewport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6313 countingStream->rewind();
6314 uint32_t opcode_vkCmdSetViewport = OP_vkCmdSetViewport;
6315 stream->write(&opcode_vkCmdSetViewport, sizeof(uint32_t));
6316 stream->write(&packetSize_vkCmdSetViewport, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006317 uint64_t cgen_var_498;
6318 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_498, 1);
6319 stream->write((uint64_t*)&cgen_var_498, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006320 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
6321 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006322 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6323 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006324 marshal_VkViewport(stream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006325 }
6326}
6327
6328void VkEncoder::vkCmdSetScissor(
6329 VkCommandBuffer commandBuffer,
6330 uint32_t firstScissor,
6331 uint32_t scissorCount,
6332 const VkRect2D* pScissors)
6333{
6334 auto stream = mImpl->stream();
6335 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006336 auto resources = mImpl->resources();
6337 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006338 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006339 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006340 uint32_t local_firstScissor;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006341 uint32_t local_scissorCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006342 VkRect2D* local_pScissors;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006343 local_commandBuffer = commandBuffer;
6344 local_firstScissor = firstScissor;
6345 local_scissorCount = scissorCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006346 local_pScissors = nullptr;
6347 if (pScissors)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006348 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006349 local_pScissors = (VkRect2D*)pool->alloc(((scissorCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006350 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6351 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006352 deepcopy_VkRect2D(pool, pScissors + i, (VkRect2D*)(local_pScissors + i));
6353 }
6354 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006355 if (local_pScissors)
6356 {
6357 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6358 {
6359 transform_VkRect2D(mImpl->resources(), (VkRect2D*)(local_pScissors + i));
6360 }
6361 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006362 countingStream->rewind();
6363 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006364 uint64_t cgen_var_499;
6365 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_499, 1);
6366 countingStream->write((uint64_t*)&cgen_var_499, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006367 countingStream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
6368 countingStream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
6369 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6370 {
6371 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006372 }
6373 }
6374 uint32_t packetSize_vkCmdSetScissor = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6375 countingStream->rewind();
6376 uint32_t opcode_vkCmdSetScissor = OP_vkCmdSetScissor;
6377 stream->write(&opcode_vkCmdSetScissor, sizeof(uint32_t));
6378 stream->write(&packetSize_vkCmdSetScissor, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006379 uint64_t cgen_var_500;
6380 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_500, 1);
6381 stream->write((uint64_t*)&cgen_var_500, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006382 stream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
6383 stream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006384 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6385 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006386 marshal_VkRect2D(stream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006387 }
6388}
6389
6390void VkEncoder::vkCmdSetLineWidth(
6391 VkCommandBuffer commandBuffer,
6392 float lineWidth)
6393{
6394 auto stream = mImpl->stream();
6395 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006396 auto resources = mImpl->resources();
6397 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006398 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006399 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006400 float local_lineWidth;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006401 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006402 local_lineWidth = lineWidth;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006403 countingStream->rewind();
6404 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006405 uint64_t cgen_var_501;
6406 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_501, 1);
6407 countingStream->write((uint64_t*)&cgen_var_501, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006408 countingStream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006409 }
6410 uint32_t packetSize_vkCmdSetLineWidth = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6411 countingStream->rewind();
6412 uint32_t opcode_vkCmdSetLineWidth = OP_vkCmdSetLineWidth;
6413 stream->write(&opcode_vkCmdSetLineWidth, sizeof(uint32_t));
6414 stream->write(&packetSize_vkCmdSetLineWidth, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006415 uint64_t cgen_var_502;
6416 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_502, 1);
6417 stream->write((uint64_t*)&cgen_var_502, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006418 stream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006419}
6420
6421void VkEncoder::vkCmdSetDepthBias(
6422 VkCommandBuffer commandBuffer,
6423 float depthBiasConstantFactor,
6424 float depthBiasClamp,
6425 float depthBiasSlopeFactor)
6426{
6427 auto stream = mImpl->stream();
6428 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006429 auto resources = mImpl->resources();
6430 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006431 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006432 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006433 float local_depthBiasConstantFactor;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006434 float local_depthBiasClamp;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006435 float local_depthBiasSlopeFactor;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006436 local_commandBuffer = commandBuffer;
6437 local_depthBiasConstantFactor = depthBiasConstantFactor;
6438 local_depthBiasClamp = depthBiasClamp;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006439 local_depthBiasSlopeFactor = depthBiasSlopeFactor;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006440 countingStream->rewind();
6441 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006442 uint64_t cgen_var_503;
6443 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_503, 1);
6444 countingStream->write((uint64_t*)&cgen_var_503, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006445 countingStream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
6446 countingStream->write((float*)&local_depthBiasClamp, sizeof(float));
6447 countingStream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006448 }
6449 uint32_t packetSize_vkCmdSetDepthBias = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6450 countingStream->rewind();
6451 uint32_t opcode_vkCmdSetDepthBias = OP_vkCmdSetDepthBias;
6452 stream->write(&opcode_vkCmdSetDepthBias, sizeof(uint32_t));
6453 stream->write(&packetSize_vkCmdSetDepthBias, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006454 uint64_t cgen_var_504;
6455 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_504, 1);
6456 stream->write((uint64_t*)&cgen_var_504, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006457 stream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
6458 stream->write((float*)&local_depthBiasClamp, sizeof(float));
6459 stream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006460}
6461
6462void VkEncoder::vkCmdSetBlendConstants(
6463 VkCommandBuffer commandBuffer,
6464 const float blendConstants)
6465{
6466 auto stream = mImpl->stream();
6467 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006468 auto resources = mImpl->resources();
6469 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006470 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006471 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006472 float local_blendConstants[4];
Lingfeng Yang9666b852018-11-13 23:09:59 -08006473 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006474 memcpy(&local_blendConstants, &blendConstants, 4 * sizeof(const float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006475 countingStream->rewind();
6476 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006477 uint64_t cgen_var_505;
6478 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_505, 1);
6479 countingStream->write((uint64_t*)&cgen_var_505, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006480 countingStream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006481 }
6482 uint32_t packetSize_vkCmdSetBlendConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6483 countingStream->rewind();
6484 uint32_t opcode_vkCmdSetBlendConstants = OP_vkCmdSetBlendConstants;
6485 stream->write(&opcode_vkCmdSetBlendConstants, sizeof(uint32_t));
6486 stream->write(&packetSize_vkCmdSetBlendConstants, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006487 uint64_t cgen_var_506;
6488 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_506, 1);
6489 stream->write((uint64_t*)&cgen_var_506, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006490 stream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006491}
6492
6493void VkEncoder::vkCmdSetDepthBounds(
6494 VkCommandBuffer commandBuffer,
6495 float minDepthBounds,
6496 float maxDepthBounds)
6497{
6498 auto stream = mImpl->stream();
6499 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006500 auto resources = mImpl->resources();
6501 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006502 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006503 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006504 float local_minDepthBounds;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006505 float local_maxDepthBounds;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006506 local_commandBuffer = commandBuffer;
6507 local_minDepthBounds = minDepthBounds;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006508 local_maxDepthBounds = maxDepthBounds;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006509 countingStream->rewind();
6510 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006511 uint64_t cgen_var_507;
6512 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_507, 1);
6513 countingStream->write((uint64_t*)&cgen_var_507, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006514 countingStream->write((float*)&local_minDepthBounds, sizeof(float));
6515 countingStream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006516 }
6517 uint32_t packetSize_vkCmdSetDepthBounds = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6518 countingStream->rewind();
6519 uint32_t opcode_vkCmdSetDepthBounds = OP_vkCmdSetDepthBounds;
6520 stream->write(&opcode_vkCmdSetDepthBounds, sizeof(uint32_t));
6521 stream->write(&packetSize_vkCmdSetDepthBounds, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006522 uint64_t cgen_var_508;
6523 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_508, 1);
6524 stream->write((uint64_t*)&cgen_var_508, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006525 stream->write((float*)&local_minDepthBounds, sizeof(float));
6526 stream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006527}
6528
6529void VkEncoder::vkCmdSetStencilCompareMask(
6530 VkCommandBuffer commandBuffer,
6531 VkStencilFaceFlags faceMask,
6532 uint32_t compareMask)
6533{
6534 auto stream = mImpl->stream();
6535 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006536 auto resources = mImpl->resources();
6537 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006538 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006539 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006540 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006541 uint32_t local_compareMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006542 local_commandBuffer = commandBuffer;
6543 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006544 local_compareMask = compareMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006545 countingStream->rewind();
6546 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006547 uint64_t cgen_var_509;
6548 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_509, 1);
6549 countingStream->write((uint64_t*)&cgen_var_509, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006550 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6551 countingStream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006552 }
6553 uint32_t packetSize_vkCmdSetStencilCompareMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6554 countingStream->rewind();
6555 uint32_t opcode_vkCmdSetStencilCompareMask = OP_vkCmdSetStencilCompareMask;
6556 stream->write(&opcode_vkCmdSetStencilCompareMask, sizeof(uint32_t));
6557 stream->write(&packetSize_vkCmdSetStencilCompareMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006558 uint64_t cgen_var_510;
6559 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_510, 1);
6560 stream->write((uint64_t*)&cgen_var_510, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006561 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6562 stream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006563}
6564
6565void VkEncoder::vkCmdSetStencilWriteMask(
6566 VkCommandBuffer commandBuffer,
6567 VkStencilFaceFlags faceMask,
6568 uint32_t writeMask)
6569{
6570 auto stream = mImpl->stream();
6571 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006572 auto resources = mImpl->resources();
6573 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006574 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006575 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006576 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006577 uint32_t local_writeMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006578 local_commandBuffer = commandBuffer;
6579 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006580 local_writeMask = writeMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006581 countingStream->rewind();
6582 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006583 uint64_t cgen_var_511;
6584 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_511, 1);
6585 countingStream->write((uint64_t*)&cgen_var_511, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006586 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6587 countingStream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006588 }
6589 uint32_t packetSize_vkCmdSetStencilWriteMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6590 countingStream->rewind();
6591 uint32_t opcode_vkCmdSetStencilWriteMask = OP_vkCmdSetStencilWriteMask;
6592 stream->write(&opcode_vkCmdSetStencilWriteMask, sizeof(uint32_t));
6593 stream->write(&packetSize_vkCmdSetStencilWriteMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006594 uint64_t cgen_var_512;
6595 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_512, 1);
6596 stream->write((uint64_t*)&cgen_var_512, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006597 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6598 stream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006599}
6600
6601void VkEncoder::vkCmdSetStencilReference(
6602 VkCommandBuffer commandBuffer,
6603 VkStencilFaceFlags faceMask,
6604 uint32_t reference)
6605{
6606 auto stream = mImpl->stream();
6607 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006608 auto resources = mImpl->resources();
6609 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006610 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006611 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006612 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006613 uint32_t local_reference;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006614 local_commandBuffer = commandBuffer;
6615 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006616 local_reference = reference;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006617 countingStream->rewind();
6618 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006619 uint64_t cgen_var_513;
6620 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_513, 1);
6621 countingStream->write((uint64_t*)&cgen_var_513, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006622 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6623 countingStream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006624 }
6625 uint32_t packetSize_vkCmdSetStencilReference = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6626 countingStream->rewind();
6627 uint32_t opcode_vkCmdSetStencilReference = OP_vkCmdSetStencilReference;
6628 stream->write(&opcode_vkCmdSetStencilReference, sizeof(uint32_t));
6629 stream->write(&packetSize_vkCmdSetStencilReference, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006630 uint64_t cgen_var_514;
6631 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_514, 1);
6632 stream->write((uint64_t*)&cgen_var_514, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006633 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6634 stream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006635}
6636
6637void VkEncoder::vkCmdBindDescriptorSets(
6638 VkCommandBuffer commandBuffer,
6639 VkPipelineBindPoint pipelineBindPoint,
6640 VkPipelineLayout layout,
6641 uint32_t firstSet,
6642 uint32_t descriptorSetCount,
6643 const VkDescriptorSet* pDescriptorSets,
6644 uint32_t dynamicOffsetCount,
6645 const uint32_t* pDynamicOffsets)
6646{
6647 auto stream = mImpl->stream();
6648 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006649 auto resources = mImpl->resources();
6650 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006651 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006652 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006653 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006654 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006655 uint32_t local_firstSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006656 uint32_t local_descriptorSetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006657 VkDescriptorSet* local_pDescriptorSets;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006658 uint32_t local_dynamicOffsetCount;
6659 uint32_t* local_pDynamicOffsets;
6660 local_commandBuffer = commandBuffer;
6661 local_pipelineBindPoint = pipelineBindPoint;
6662 local_layout = layout;
6663 local_firstSet = firstSet;
6664 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006665 local_pDescriptorSets = nullptr;
6666 if (pDescriptorSets)
6667 {
6668 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
6669 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006670 local_dynamicOffsetCount = dynamicOffsetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006671 local_pDynamicOffsets = nullptr;
6672 if (pDynamicOffsets)
6673 {
6674 local_pDynamicOffsets = (uint32_t*)pool->dupArray(pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t));
6675 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006676 countingStream->rewind();
6677 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006678 uint64_t cgen_var_515;
6679 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_515, 1);
6680 countingStream->write((uint64_t*)&cgen_var_515, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006681 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006682 uint64_t cgen_var_516;
6683 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_516, 1);
6684 countingStream->write((uint64_t*)&cgen_var_516, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006685 countingStream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
6686 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006687 if (((descriptorSetCount)))
6688 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006689 uint64_t* cgen_var_517;
6690 countingStream->alloc((void**)&cgen_var_517, ((descriptorSetCount)) * 8);
6691 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_517, ((descriptorSetCount)));
6692 countingStream->write((uint64_t*)cgen_var_517, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006693 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006694 countingStream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
6695 countingStream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006696 }
6697 uint32_t packetSize_vkCmdBindDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6698 countingStream->rewind();
6699 uint32_t opcode_vkCmdBindDescriptorSets = OP_vkCmdBindDescriptorSets;
6700 stream->write(&opcode_vkCmdBindDescriptorSets, sizeof(uint32_t));
6701 stream->write(&packetSize_vkCmdBindDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006702 uint64_t cgen_var_518;
6703 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_518, 1);
6704 stream->write((uint64_t*)&cgen_var_518, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006705 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006706 uint64_t cgen_var_519;
6707 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_519, 1);
6708 stream->write((uint64_t*)&cgen_var_519, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006709 stream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
6710 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006711 if (((descriptorSetCount)))
6712 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006713 uint64_t* cgen_var_520;
6714 stream->alloc((void**)&cgen_var_520, ((descriptorSetCount)) * 8);
6715 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_520, ((descriptorSetCount)));
6716 stream->write((uint64_t*)cgen_var_520, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006717 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006718 stream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
6719 stream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006720}
6721
6722void VkEncoder::vkCmdBindIndexBuffer(
6723 VkCommandBuffer commandBuffer,
6724 VkBuffer buffer,
6725 VkDeviceSize offset,
6726 VkIndexType indexType)
6727{
6728 auto stream = mImpl->stream();
6729 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006730 auto resources = mImpl->resources();
6731 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006732 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006733 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006734 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006735 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006736 VkIndexType local_indexType;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006737 local_commandBuffer = commandBuffer;
6738 local_buffer = buffer;
6739 local_offset = offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006740 local_indexType = indexType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006741 countingStream->rewind();
6742 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006743 uint64_t cgen_var_521;
6744 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_521, 1);
6745 countingStream->write((uint64_t*)&cgen_var_521, 1 * 8);
6746 uint64_t cgen_var_522;
6747 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_522, 1);
6748 countingStream->write((uint64_t*)&cgen_var_522, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006749 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6750 countingStream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006751 }
6752 uint32_t packetSize_vkCmdBindIndexBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6753 countingStream->rewind();
6754 uint32_t opcode_vkCmdBindIndexBuffer = OP_vkCmdBindIndexBuffer;
6755 stream->write(&opcode_vkCmdBindIndexBuffer, sizeof(uint32_t));
6756 stream->write(&packetSize_vkCmdBindIndexBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006757 uint64_t cgen_var_523;
6758 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_523, 1);
6759 stream->write((uint64_t*)&cgen_var_523, 1 * 8);
6760 uint64_t cgen_var_524;
6761 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_524, 1);
6762 stream->write((uint64_t*)&cgen_var_524, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006763 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6764 stream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006765}
6766
6767void VkEncoder::vkCmdBindVertexBuffers(
6768 VkCommandBuffer commandBuffer,
6769 uint32_t firstBinding,
6770 uint32_t bindingCount,
6771 const VkBuffer* pBuffers,
6772 const VkDeviceSize* pOffsets)
6773{
6774 auto stream = mImpl->stream();
6775 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006776 auto resources = mImpl->resources();
6777 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006778 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006779 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006780 uint32_t local_firstBinding;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006781 uint32_t local_bindingCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006782 VkBuffer* local_pBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006783 VkDeviceSize* local_pOffsets;
6784 local_commandBuffer = commandBuffer;
6785 local_firstBinding = firstBinding;
6786 local_bindingCount = bindingCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006787 local_pBuffers = nullptr;
6788 if (pBuffers)
6789 {
6790 local_pBuffers = (VkBuffer*)pool->dupArray(pBuffers, ((bindingCount)) * sizeof(const VkBuffer));
6791 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006792 local_pOffsets = nullptr;
6793 if (pOffsets)
6794 {
6795 local_pOffsets = (VkDeviceSize*)pool->dupArray(pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize));
6796 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006797 countingStream->rewind();
6798 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006799 uint64_t cgen_var_525;
6800 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_525, 1);
6801 countingStream->write((uint64_t*)&cgen_var_525, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006802 countingStream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
6803 countingStream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006804 if (((bindingCount)))
6805 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006806 uint64_t* cgen_var_526;
6807 countingStream->alloc((void**)&cgen_var_526, ((bindingCount)) * 8);
6808 countingStream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_526, ((bindingCount)));
6809 countingStream->write((uint64_t*)cgen_var_526, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006810 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006811 countingStream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006812 }
6813 uint32_t packetSize_vkCmdBindVertexBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6814 countingStream->rewind();
6815 uint32_t opcode_vkCmdBindVertexBuffers = OP_vkCmdBindVertexBuffers;
6816 stream->write(&opcode_vkCmdBindVertexBuffers, sizeof(uint32_t));
6817 stream->write(&packetSize_vkCmdBindVertexBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006818 uint64_t cgen_var_527;
6819 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_527, 1);
6820 stream->write((uint64_t*)&cgen_var_527, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006821 stream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
6822 stream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006823 if (((bindingCount)))
6824 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006825 uint64_t* cgen_var_528;
6826 stream->alloc((void**)&cgen_var_528, ((bindingCount)) * 8);
6827 stream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_528, ((bindingCount)));
6828 stream->write((uint64_t*)cgen_var_528, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006829 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006830 stream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006831}
6832
6833void VkEncoder::vkCmdDraw(
6834 VkCommandBuffer commandBuffer,
6835 uint32_t vertexCount,
6836 uint32_t instanceCount,
6837 uint32_t firstVertex,
6838 uint32_t firstInstance)
6839{
6840 auto stream = mImpl->stream();
6841 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006842 auto resources = mImpl->resources();
6843 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006844 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006845 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006846 uint32_t local_vertexCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006847 uint32_t local_instanceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006848 uint32_t local_firstVertex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006849 uint32_t local_firstInstance;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006850 local_commandBuffer = commandBuffer;
6851 local_vertexCount = vertexCount;
6852 local_instanceCount = instanceCount;
6853 local_firstVertex = firstVertex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006854 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006855 countingStream->rewind();
6856 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006857 uint64_t cgen_var_529;
6858 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_529, 1);
6859 countingStream->write((uint64_t*)&cgen_var_529, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006860 countingStream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
6861 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6862 countingStream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
6863 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006864 }
6865 uint32_t packetSize_vkCmdDraw = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6866 countingStream->rewind();
6867 uint32_t opcode_vkCmdDraw = OP_vkCmdDraw;
6868 stream->write(&opcode_vkCmdDraw, sizeof(uint32_t));
6869 stream->write(&packetSize_vkCmdDraw, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006870 uint64_t cgen_var_530;
6871 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_530, 1);
6872 stream->write((uint64_t*)&cgen_var_530, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006873 stream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
6874 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6875 stream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
6876 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006877}
6878
6879void VkEncoder::vkCmdDrawIndexed(
6880 VkCommandBuffer commandBuffer,
6881 uint32_t indexCount,
6882 uint32_t instanceCount,
6883 uint32_t firstIndex,
6884 int32_t vertexOffset,
6885 uint32_t firstInstance)
6886{
6887 auto stream = mImpl->stream();
6888 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006889 auto resources = mImpl->resources();
6890 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006891 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006892 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006893 uint32_t local_indexCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006894 uint32_t local_instanceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006895 uint32_t local_firstIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006896 int32_t local_vertexOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006897 uint32_t local_firstInstance;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006898 local_commandBuffer = commandBuffer;
6899 local_indexCount = indexCount;
6900 local_instanceCount = instanceCount;
6901 local_firstIndex = firstIndex;
6902 local_vertexOffset = vertexOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006903 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006904 countingStream->rewind();
6905 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006906 uint64_t cgen_var_531;
6907 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_531, 1);
6908 countingStream->write((uint64_t*)&cgen_var_531, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006909 countingStream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
6910 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6911 countingStream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
6912 countingStream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
6913 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006914 }
6915 uint32_t packetSize_vkCmdDrawIndexed = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6916 countingStream->rewind();
6917 uint32_t opcode_vkCmdDrawIndexed = OP_vkCmdDrawIndexed;
6918 stream->write(&opcode_vkCmdDrawIndexed, sizeof(uint32_t));
6919 stream->write(&packetSize_vkCmdDrawIndexed, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006920 uint64_t cgen_var_532;
6921 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_532, 1);
6922 stream->write((uint64_t*)&cgen_var_532, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006923 stream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
6924 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6925 stream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
6926 stream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
6927 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006928}
6929
6930void VkEncoder::vkCmdDrawIndirect(
6931 VkCommandBuffer commandBuffer,
6932 VkBuffer buffer,
6933 VkDeviceSize offset,
6934 uint32_t drawCount,
6935 uint32_t stride)
6936{
6937 auto stream = mImpl->stream();
6938 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006939 auto resources = mImpl->resources();
6940 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006941 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006942 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006943 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006944 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006945 uint32_t local_drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006946 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006947 local_commandBuffer = commandBuffer;
6948 local_buffer = buffer;
6949 local_offset = offset;
6950 local_drawCount = drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006951 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006952 countingStream->rewind();
6953 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006954 uint64_t cgen_var_533;
6955 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_533, 1);
6956 countingStream->write((uint64_t*)&cgen_var_533, 1 * 8);
6957 uint64_t cgen_var_534;
6958 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_534, 1);
6959 countingStream->write((uint64_t*)&cgen_var_534, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006960 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6961 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6962 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006963 }
6964 uint32_t packetSize_vkCmdDrawIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6965 countingStream->rewind();
6966 uint32_t opcode_vkCmdDrawIndirect = OP_vkCmdDrawIndirect;
6967 stream->write(&opcode_vkCmdDrawIndirect, sizeof(uint32_t));
6968 stream->write(&packetSize_vkCmdDrawIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006969 uint64_t cgen_var_535;
6970 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_535, 1);
6971 stream->write((uint64_t*)&cgen_var_535, 1 * 8);
6972 uint64_t cgen_var_536;
6973 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_536, 1);
6974 stream->write((uint64_t*)&cgen_var_536, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006975 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6976 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6977 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006978}
6979
6980void VkEncoder::vkCmdDrawIndexedIndirect(
6981 VkCommandBuffer commandBuffer,
6982 VkBuffer buffer,
6983 VkDeviceSize offset,
6984 uint32_t drawCount,
6985 uint32_t stride)
6986{
6987 auto stream = mImpl->stream();
6988 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006989 auto resources = mImpl->resources();
6990 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006991 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006992 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006993 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006994 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006995 uint32_t local_drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006996 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006997 local_commandBuffer = commandBuffer;
6998 local_buffer = buffer;
6999 local_offset = offset;
7000 local_drawCount = drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007001 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007002 countingStream->rewind();
7003 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007004 uint64_t cgen_var_537;
7005 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_537, 1);
7006 countingStream->write((uint64_t*)&cgen_var_537, 1 * 8);
7007 uint64_t cgen_var_538;
7008 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_538, 1);
7009 countingStream->write((uint64_t*)&cgen_var_538, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007010 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7011 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7012 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007013 }
7014 uint32_t packetSize_vkCmdDrawIndexedIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7015 countingStream->rewind();
7016 uint32_t opcode_vkCmdDrawIndexedIndirect = OP_vkCmdDrawIndexedIndirect;
7017 stream->write(&opcode_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
7018 stream->write(&packetSize_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007019 uint64_t cgen_var_539;
7020 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_539, 1);
7021 stream->write((uint64_t*)&cgen_var_539, 1 * 8);
7022 uint64_t cgen_var_540;
7023 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_540, 1);
7024 stream->write((uint64_t*)&cgen_var_540, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007025 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7026 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7027 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007028}
7029
7030void VkEncoder::vkCmdDispatch(
7031 VkCommandBuffer commandBuffer,
7032 uint32_t groupCountX,
7033 uint32_t groupCountY,
7034 uint32_t groupCountZ)
7035{
7036 auto stream = mImpl->stream();
7037 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007038 auto resources = mImpl->resources();
7039 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007040 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007041 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007042 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007043 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007044 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007045 local_commandBuffer = commandBuffer;
7046 local_groupCountX = groupCountX;
7047 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007048 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007049 countingStream->rewind();
7050 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007051 uint64_t cgen_var_541;
7052 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_541, 1);
7053 countingStream->write((uint64_t*)&cgen_var_541, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007054 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
7055 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
7056 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007057 }
7058 uint32_t packetSize_vkCmdDispatch = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7059 countingStream->rewind();
7060 uint32_t opcode_vkCmdDispatch = OP_vkCmdDispatch;
7061 stream->write(&opcode_vkCmdDispatch, sizeof(uint32_t));
7062 stream->write(&packetSize_vkCmdDispatch, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007063 uint64_t cgen_var_542;
7064 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_542, 1);
7065 stream->write((uint64_t*)&cgen_var_542, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007066 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
7067 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
7068 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007069}
7070
7071void VkEncoder::vkCmdDispatchIndirect(
7072 VkCommandBuffer commandBuffer,
7073 VkBuffer buffer,
7074 VkDeviceSize offset)
7075{
7076 auto stream = mImpl->stream();
7077 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007078 auto resources = mImpl->resources();
7079 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007080 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007081 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007082 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007083 VkDeviceSize local_offset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007084 local_commandBuffer = commandBuffer;
7085 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007086 local_offset = offset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007087 countingStream->rewind();
7088 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007089 uint64_t cgen_var_543;
7090 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_543, 1);
7091 countingStream->write((uint64_t*)&cgen_var_543, 1 * 8);
7092 uint64_t cgen_var_544;
7093 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_544, 1);
7094 countingStream->write((uint64_t*)&cgen_var_544, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007095 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007096 }
7097 uint32_t packetSize_vkCmdDispatchIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7098 countingStream->rewind();
7099 uint32_t opcode_vkCmdDispatchIndirect = OP_vkCmdDispatchIndirect;
7100 stream->write(&opcode_vkCmdDispatchIndirect, sizeof(uint32_t));
7101 stream->write(&packetSize_vkCmdDispatchIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007102 uint64_t cgen_var_545;
7103 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_545, 1);
7104 stream->write((uint64_t*)&cgen_var_545, 1 * 8);
7105 uint64_t cgen_var_546;
7106 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_546, 1);
7107 stream->write((uint64_t*)&cgen_var_546, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007108 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007109}
7110
7111void VkEncoder::vkCmdCopyBuffer(
7112 VkCommandBuffer commandBuffer,
7113 VkBuffer srcBuffer,
7114 VkBuffer dstBuffer,
7115 uint32_t regionCount,
7116 const VkBufferCopy* pRegions)
7117{
7118 auto stream = mImpl->stream();
7119 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007120 auto resources = mImpl->resources();
7121 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007122 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007123 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007124 VkBuffer local_srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007125 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007126 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007127 VkBufferCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007128 local_commandBuffer = commandBuffer;
7129 local_srcBuffer = srcBuffer;
7130 local_dstBuffer = dstBuffer;
7131 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007132 local_pRegions = nullptr;
7133 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007134 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007135 local_pRegions = (VkBufferCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007136 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7137 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007138 deepcopy_VkBufferCopy(pool, pRegions + i, (VkBufferCopy*)(local_pRegions + i));
7139 }
7140 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007141 if (local_pRegions)
7142 {
7143 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7144 {
7145 transform_VkBufferCopy(mImpl->resources(), (VkBufferCopy*)(local_pRegions + i));
7146 }
7147 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007148 countingStream->rewind();
7149 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007150 uint64_t cgen_var_547;
7151 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_547, 1);
7152 countingStream->write((uint64_t*)&cgen_var_547, 1 * 8);
7153 uint64_t cgen_var_548;
7154 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_548, 1);
7155 countingStream->write((uint64_t*)&cgen_var_548, 1 * 8);
7156 uint64_t cgen_var_549;
7157 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_549, 1);
7158 countingStream->write((uint64_t*)&cgen_var_549, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007159 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7160 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7161 {
7162 marshal_VkBufferCopy(countingStream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007163 }
7164 }
7165 uint32_t packetSize_vkCmdCopyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7166 countingStream->rewind();
7167 uint32_t opcode_vkCmdCopyBuffer = OP_vkCmdCopyBuffer;
7168 stream->write(&opcode_vkCmdCopyBuffer, sizeof(uint32_t));
7169 stream->write(&packetSize_vkCmdCopyBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007170 uint64_t cgen_var_550;
7171 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_550, 1);
7172 stream->write((uint64_t*)&cgen_var_550, 1 * 8);
7173 uint64_t cgen_var_551;
7174 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_551, 1);
7175 stream->write((uint64_t*)&cgen_var_551, 1 * 8);
7176 uint64_t cgen_var_552;
7177 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_552, 1);
7178 stream->write((uint64_t*)&cgen_var_552, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007179 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007180 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7181 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007182 marshal_VkBufferCopy(stream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007183 }
7184}
7185
7186void VkEncoder::vkCmdCopyImage(
7187 VkCommandBuffer commandBuffer,
7188 VkImage srcImage,
7189 VkImageLayout srcImageLayout,
7190 VkImage dstImage,
7191 VkImageLayout dstImageLayout,
7192 uint32_t regionCount,
7193 const VkImageCopy* pRegions)
7194{
7195 auto stream = mImpl->stream();
7196 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007197 auto resources = mImpl->resources();
7198 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007199 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007200 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007201 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007202 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007203 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007204 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007205 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007206 VkImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007207 local_commandBuffer = commandBuffer;
7208 local_srcImage = srcImage;
7209 local_srcImageLayout = srcImageLayout;
7210 local_dstImage = dstImage;
7211 local_dstImageLayout = dstImageLayout;
7212 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007213 local_pRegions = nullptr;
7214 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007215 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007216 local_pRegions = (VkImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007217 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7218 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007219 deepcopy_VkImageCopy(pool, pRegions + i, (VkImageCopy*)(local_pRegions + i));
7220 }
7221 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007222 if (local_pRegions)
7223 {
7224 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7225 {
7226 transform_VkImageCopy(mImpl->resources(), (VkImageCopy*)(local_pRegions + i));
7227 }
7228 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007229 countingStream->rewind();
7230 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007231 uint64_t cgen_var_553;
7232 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_553, 1);
7233 countingStream->write((uint64_t*)&cgen_var_553, 1 * 8);
7234 uint64_t cgen_var_554;
7235 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_554, 1);
7236 countingStream->write((uint64_t*)&cgen_var_554, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007237 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007238 uint64_t cgen_var_555;
7239 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_555, 1);
7240 countingStream->write((uint64_t*)&cgen_var_555, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007241 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7242 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7243 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7244 {
7245 marshal_VkImageCopy(countingStream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007246 }
7247 }
7248 uint32_t packetSize_vkCmdCopyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7249 countingStream->rewind();
7250 uint32_t opcode_vkCmdCopyImage = OP_vkCmdCopyImage;
7251 stream->write(&opcode_vkCmdCopyImage, sizeof(uint32_t));
7252 stream->write(&packetSize_vkCmdCopyImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007253 uint64_t cgen_var_556;
7254 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_556, 1);
7255 stream->write((uint64_t*)&cgen_var_556, 1 * 8);
7256 uint64_t cgen_var_557;
7257 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_557, 1);
7258 stream->write((uint64_t*)&cgen_var_557, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007259 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007260 uint64_t cgen_var_558;
7261 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_558, 1);
7262 stream->write((uint64_t*)&cgen_var_558, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007263 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7264 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007265 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7266 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007267 marshal_VkImageCopy(stream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007268 }
7269}
7270
7271void VkEncoder::vkCmdBlitImage(
7272 VkCommandBuffer commandBuffer,
7273 VkImage srcImage,
7274 VkImageLayout srcImageLayout,
7275 VkImage dstImage,
7276 VkImageLayout dstImageLayout,
7277 uint32_t regionCount,
7278 const VkImageBlit* pRegions,
7279 VkFilter filter)
7280{
7281 auto stream = mImpl->stream();
7282 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007283 auto resources = mImpl->resources();
7284 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007285 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007286 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007287 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007288 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007289 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007290 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007291 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007292 VkImageBlit* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007293 VkFilter local_filter;
7294 local_commandBuffer = commandBuffer;
7295 local_srcImage = srcImage;
7296 local_srcImageLayout = srcImageLayout;
7297 local_dstImage = dstImage;
7298 local_dstImageLayout = dstImageLayout;
7299 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007300 local_pRegions = nullptr;
7301 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007302 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007303 local_pRegions = (VkImageBlit*)pool->alloc(((regionCount)) * sizeof(const VkImageBlit));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007304 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7305 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007306 deepcopy_VkImageBlit(pool, pRegions + i, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007307 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007308 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007309 local_filter = filter;
Lingfeng Yang62b23322018-12-24 12:45:47 -08007310 if (local_pRegions)
7311 {
7312 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7313 {
7314 transform_VkImageBlit(mImpl->resources(), (VkImageBlit*)(local_pRegions + i));
7315 }
7316 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007317 countingStream->rewind();
7318 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007319 uint64_t cgen_var_559;
7320 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_559, 1);
7321 countingStream->write((uint64_t*)&cgen_var_559, 1 * 8);
7322 uint64_t cgen_var_560;
7323 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_560, 1);
7324 countingStream->write((uint64_t*)&cgen_var_560, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007325 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007326 uint64_t cgen_var_561;
7327 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_561, 1);
7328 countingStream->write((uint64_t*)&cgen_var_561, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007329 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7330 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7331 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7332 {
7333 marshal_VkImageBlit(countingStream, (VkImageBlit*)(local_pRegions + i));
7334 }
7335 countingStream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007336 }
7337 uint32_t packetSize_vkCmdBlitImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7338 countingStream->rewind();
7339 uint32_t opcode_vkCmdBlitImage = OP_vkCmdBlitImage;
7340 stream->write(&opcode_vkCmdBlitImage, sizeof(uint32_t));
7341 stream->write(&packetSize_vkCmdBlitImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007342 uint64_t cgen_var_562;
7343 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_562, 1);
7344 stream->write((uint64_t*)&cgen_var_562, 1 * 8);
7345 uint64_t cgen_var_563;
7346 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_563, 1);
7347 stream->write((uint64_t*)&cgen_var_563, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007348 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007349 uint64_t cgen_var_564;
7350 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_564, 1);
7351 stream->write((uint64_t*)&cgen_var_564, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007352 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7353 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007354 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7355 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007356 marshal_VkImageBlit(stream, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007357 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007358 stream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007359}
7360
7361void VkEncoder::vkCmdCopyBufferToImage(
7362 VkCommandBuffer commandBuffer,
7363 VkBuffer srcBuffer,
7364 VkImage dstImage,
7365 VkImageLayout dstImageLayout,
7366 uint32_t regionCount,
7367 const VkBufferImageCopy* pRegions)
7368{
7369 auto stream = mImpl->stream();
7370 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007371 auto resources = mImpl->resources();
7372 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007373 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007374 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007375 VkBuffer local_srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007376 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007377 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007378 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007379 VkBufferImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007380 local_commandBuffer = commandBuffer;
7381 local_srcBuffer = srcBuffer;
7382 local_dstImage = dstImage;
7383 local_dstImageLayout = dstImageLayout;
7384 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007385 local_pRegions = nullptr;
7386 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007387 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007388 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007389 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7390 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007391 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
7392 }
7393 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007394 if (local_pRegions)
7395 {
7396 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7397 {
7398 transform_VkBufferImageCopy(mImpl->resources(), (VkBufferImageCopy*)(local_pRegions + i));
7399 }
7400 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007401 countingStream->rewind();
7402 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007403 uint64_t cgen_var_565;
7404 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_565, 1);
7405 countingStream->write((uint64_t*)&cgen_var_565, 1 * 8);
7406 uint64_t cgen_var_566;
7407 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_566, 1);
7408 countingStream->write((uint64_t*)&cgen_var_566, 1 * 8);
7409 uint64_t cgen_var_567;
7410 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_567, 1);
7411 countingStream->write((uint64_t*)&cgen_var_567, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007412 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7413 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7414 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7415 {
7416 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007417 }
7418 }
7419 uint32_t packetSize_vkCmdCopyBufferToImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7420 countingStream->rewind();
7421 uint32_t opcode_vkCmdCopyBufferToImage = OP_vkCmdCopyBufferToImage;
7422 stream->write(&opcode_vkCmdCopyBufferToImage, sizeof(uint32_t));
7423 stream->write(&packetSize_vkCmdCopyBufferToImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007424 uint64_t cgen_var_568;
7425 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_568, 1);
7426 stream->write((uint64_t*)&cgen_var_568, 1 * 8);
7427 uint64_t cgen_var_569;
7428 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_569, 1);
7429 stream->write((uint64_t*)&cgen_var_569, 1 * 8);
7430 uint64_t cgen_var_570;
7431 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_570, 1);
7432 stream->write((uint64_t*)&cgen_var_570, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007433 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7434 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007435 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7436 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007437 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007438 }
7439}
7440
7441void VkEncoder::vkCmdCopyImageToBuffer(
7442 VkCommandBuffer commandBuffer,
7443 VkImage srcImage,
7444 VkImageLayout srcImageLayout,
7445 VkBuffer dstBuffer,
7446 uint32_t regionCount,
7447 const VkBufferImageCopy* pRegions)
7448{
7449 auto stream = mImpl->stream();
7450 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007451 auto resources = mImpl->resources();
7452 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007453 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007454 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007455 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007456 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007457 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007458 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007459 VkBufferImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007460 local_commandBuffer = commandBuffer;
7461 local_srcImage = srcImage;
7462 local_srcImageLayout = srcImageLayout;
7463 local_dstBuffer = dstBuffer;
7464 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007465 local_pRegions = nullptr;
7466 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007467 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007468 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007469 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7470 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007471 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
7472 }
7473 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007474 if (local_pRegions)
7475 {
7476 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7477 {
7478 transform_VkBufferImageCopy(mImpl->resources(), (VkBufferImageCopy*)(local_pRegions + i));
7479 }
7480 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007481 countingStream->rewind();
7482 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007483 uint64_t cgen_var_571;
7484 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_571, 1);
7485 countingStream->write((uint64_t*)&cgen_var_571, 1 * 8);
7486 uint64_t cgen_var_572;
7487 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_572, 1);
7488 countingStream->write((uint64_t*)&cgen_var_572, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007489 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007490 uint64_t cgen_var_573;
7491 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_573, 1);
7492 countingStream->write((uint64_t*)&cgen_var_573, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007493 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7494 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7495 {
7496 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007497 }
7498 }
7499 uint32_t packetSize_vkCmdCopyImageToBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7500 countingStream->rewind();
7501 uint32_t opcode_vkCmdCopyImageToBuffer = OP_vkCmdCopyImageToBuffer;
7502 stream->write(&opcode_vkCmdCopyImageToBuffer, sizeof(uint32_t));
7503 stream->write(&packetSize_vkCmdCopyImageToBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007504 uint64_t cgen_var_574;
7505 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_574, 1);
7506 stream->write((uint64_t*)&cgen_var_574, 1 * 8);
7507 uint64_t cgen_var_575;
7508 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_575, 1);
7509 stream->write((uint64_t*)&cgen_var_575, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007510 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007511 uint64_t cgen_var_576;
7512 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_576, 1);
7513 stream->write((uint64_t*)&cgen_var_576, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007514 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007515 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7516 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007517 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007518 }
7519}
7520
7521void VkEncoder::vkCmdUpdateBuffer(
7522 VkCommandBuffer commandBuffer,
7523 VkBuffer dstBuffer,
7524 VkDeviceSize dstOffset,
7525 VkDeviceSize dataSize,
7526 const void* pData)
7527{
7528 auto stream = mImpl->stream();
7529 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007530 auto resources = mImpl->resources();
7531 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007532 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007533 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007534 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007535 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007536 VkDeviceSize local_dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007537 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007538 local_commandBuffer = commandBuffer;
7539 local_dstBuffer = dstBuffer;
7540 local_dstOffset = dstOffset;
7541 local_dataSize = dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007542 local_pData = nullptr;
7543 if (pData)
7544 {
7545 local_pData = (void*)pool->dupArray(pData, ((dataSize)) * sizeof(const uint8_t));
7546 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007547 countingStream->rewind();
7548 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007549 uint64_t cgen_var_577;
7550 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_577, 1);
7551 countingStream->write((uint64_t*)&cgen_var_577, 1 * 8);
7552 uint64_t cgen_var_578;
7553 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_578, 1);
7554 countingStream->write((uint64_t*)&cgen_var_578, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007555 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7556 countingStream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
7557 countingStream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007558 }
7559 uint32_t packetSize_vkCmdUpdateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7560 countingStream->rewind();
7561 uint32_t opcode_vkCmdUpdateBuffer = OP_vkCmdUpdateBuffer;
7562 stream->write(&opcode_vkCmdUpdateBuffer, sizeof(uint32_t));
7563 stream->write(&packetSize_vkCmdUpdateBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007564 uint64_t cgen_var_579;
7565 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_579, 1);
7566 stream->write((uint64_t*)&cgen_var_579, 1 * 8);
7567 uint64_t cgen_var_580;
7568 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_580, 1);
7569 stream->write((uint64_t*)&cgen_var_580, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007570 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7571 stream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
7572 stream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007573}
7574
7575void VkEncoder::vkCmdFillBuffer(
7576 VkCommandBuffer commandBuffer,
7577 VkBuffer dstBuffer,
7578 VkDeviceSize dstOffset,
7579 VkDeviceSize size,
7580 uint32_t data)
7581{
7582 auto stream = mImpl->stream();
7583 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007584 auto resources = mImpl->resources();
7585 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007586 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007587 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007588 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007589 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007590 VkDeviceSize local_size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007591 uint32_t local_data;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007592 local_commandBuffer = commandBuffer;
7593 local_dstBuffer = dstBuffer;
7594 local_dstOffset = dstOffset;
7595 local_size = size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007596 local_data = data;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007597 countingStream->rewind();
7598 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007599 uint64_t cgen_var_581;
7600 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_581, 1);
7601 countingStream->write((uint64_t*)&cgen_var_581, 1 * 8);
7602 uint64_t cgen_var_582;
7603 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_582, 1);
7604 countingStream->write((uint64_t*)&cgen_var_582, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007605 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7606 countingStream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
7607 countingStream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007608 }
7609 uint32_t packetSize_vkCmdFillBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7610 countingStream->rewind();
7611 uint32_t opcode_vkCmdFillBuffer = OP_vkCmdFillBuffer;
7612 stream->write(&opcode_vkCmdFillBuffer, sizeof(uint32_t));
7613 stream->write(&packetSize_vkCmdFillBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007614 uint64_t cgen_var_583;
7615 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_583, 1);
7616 stream->write((uint64_t*)&cgen_var_583, 1 * 8);
7617 uint64_t cgen_var_584;
7618 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_584, 1);
7619 stream->write((uint64_t*)&cgen_var_584, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007620 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7621 stream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
7622 stream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007623}
7624
7625void VkEncoder::vkCmdClearColorImage(
7626 VkCommandBuffer commandBuffer,
7627 VkImage image,
7628 VkImageLayout imageLayout,
7629 const VkClearColorValue* pColor,
7630 uint32_t rangeCount,
7631 const VkImageSubresourceRange* pRanges)
7632{
7633 auto stream = mImpl->stream();
7634 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007635 auto resources = mImpl->resources();
7636 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007637 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007638 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007639 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007640 VkImageLayout local_imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007641 VkClearColorValue* local_pColor;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007642 uint32_t local_rangeCount;
7643 VkImageSubresourceRange* local_pRanges;
7644 local_commandBuffer = commandBuffer;
7645 local_image = image;
7646 local_imageLayout = imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007647 local_pColor = nullptr;
7648 if (pColor)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007649 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007650 local_pColor = (VkClearColorValue*)pool->alloc(sizeof(const VkClearColorValue));
7651 deepcopy_VkClearColorValue(pool, pColor, (VkClearColorValue*)(local_pColor));
7652 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007653 local_rangeCount = rangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007654 local_pRanges = nullptr;
7655 if (pRanges)
7656 {
7657 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007658 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7659 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007660 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
7661 }
7662 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007663 if (local_pColor)
7664 {
7665 transform_VkClearColorValue(mImpl->resources(), (VkClearColorValue*)(local_pColor));
7666 }
7667 if (local_pRanges)
7668 {
7669 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7670 {
7671 transform_VkImageSubresourceRange(mImpl->resources(), (VkImageSubresourceRange*)(local_pRanges + i));
7672 }
7673 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007674 countingStream->rewind();
7675 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007676 uint64_t cgen_var_585;
7677 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_585, 1);
7678 countingStream->write((uint64_t*)&cgen_var_585, 1 * 8);
7679 uint64_t cgen_var_586;
7680 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_586, 1);
7681 countingStream->write((uint64_t*)&cgen_var_586, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007682 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7683 marshal_VkClearColorValue(countingStream, (VkClearColorValue*)(local_pColor));
7684 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
7685 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7686 {
7687 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007688 }
7689 }
7690 uint32_t packetSize_vkCmdClearColorImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7691 countingStream->rewind();
7692 uint32_t opcode_vkCmdClearColorImage = OP_vkCmdClearColorImage;
7693 stream->write(&opcode_vkCmdClearColorImage, sizeof(uint32_t));
7694 stream->write(&packetSize_vkCmdClearColorImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007695 uint64_t cgen_var_587;
7696 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_587, 1);
7697 stream->write((uint64_t*)&cgen_var_587, 1 * 8);
7698 uint64_t cgen_var_588;
7699 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_588, 1);
7700 stream->write((uint64_t*)&cgen_var_588, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007701 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7702 marshal_VkClearColorValue(stream, (VkClearColorValue*)(local_pColor));
7703 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007704 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7705 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007706 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007707 }
7708}
7709
7710void VkEncoder::vkCmdClearDepthStencilImage(
7711 VkCommandBuffer commandBuffer,
7712 VkImage image,
7713 VkImageLayout imageLayout,
7714 const VkClearDepthStencilValue* pDepthStencil,
7715 uint32_t rangeCount,
7716 const VkImageSubresourceRange* pRanges)
7717{
7718 auto stream = mImpl->stream();
7719 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007720 auto resources = mImpl->resources();
7721 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007722 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007723 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007724 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007725 VkImageLayout local_imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007726 VkClearDepthStencilValue* local_pDepthStencil;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007727 uint32_t local_rangeCount;
7728 VkImageSubresourceRange* local_pRanges;
7729 local_commandBuffer = commandBuffer;
7730 local_image = image;
7731 local_imageLayout = imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007732 local_pDepthStencil = nullptr;
7733 if (pDepthStencil)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007734 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007735 local_pDepthStencil = (VkClearDepthStencilValue*)pool->alloc(sizeof(const VkClearDepthStencilValue));
7736 deepcopy_VkClearDepthStencilValue(pool, pDepthStencil, (VkClearDepthStencilValue*)(local_pDepthStencil));
7737 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007738 local_rangeCount = rangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007739 local_pRanges = nullptr;
7740 if (pRanges)
7741 {
7742 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007743 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7744 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007745 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
7746 }
7747 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007748 if (local_pDepthStencil)
7749 {
7750 transform_VkClearDepthStencilValue(mImpl->resources(), (VkClearDepthStencilValue*)(local_pDepthStencil));
7751 }
7752 if (local_pRanges)
7753 {
7754 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7755 {
7756 transform_VkImageSubresourceRange(mImpl->resources(), (VkImageSubresourceRange*)(local_pRanges + i));
7757 }
7758 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007759 countingStream->rewind();
7760 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007761 uint64_t cgen_var_589;
7762 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_589, 1);
7763 countingStream->write((uint64_t*)&cgen_var_589, 1 * 8);
7764 uint64_t cgen_var_590;
7765 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_590, 1);
7766 countingStream->write((uint64_t*)&cgen_var_590, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007767 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7768 marshal_VkClearDepthStencilValue(countingStream, (VkClearDepthStencilValue*)(local_pDepthStencil));
7769 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
7770 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7771 {
7772 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007773 }
7774 }
7775 uint32_t packetSize_vkCmdClearDepthStencilImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7776 countingStream->rewind();
7777 uint32_t opcode_vkCmdClearDepthStencilImage = OP_vkCmdClearDepthStencilImage;
7778 stream->write(&opcode_vkCmdClearDepthStencilImage, sizeof(uint32_t));
7779 stream->write(&packetSize_vkCmdClearDepthStencilImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007780 uint64_t cgen_var_591;
7781 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_591, 1);
7782 stream->write((uint64_t*)&cgen_var_591, 1 * 8);
7783 uint64_t cgen_var_592;
7784 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_592, 1);
7785 stream->write((uint64_t*)&cgen_var_592, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007786 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7787 marshal_VkClearDepthStencilValue(stream, (VkClearDepthStencilValue*)(local_pDepthStencil));
7788 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007789 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7790 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007791 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007792 }
7793}
7794
7795void VkEncoder::vkCmdClearAttachments(
7796 VkCommandBuffer commandBuffer,
7797 uint32_t attachmentCount,
7798 const VkClearAttachment* pAttachments,
7799 uint32_t rectCount,
7800 const VkClearRect* pRects)
7801{
7802 auto stream = mImpl->stream();
7803 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007804 auto resources = mImpl->resources();
7805 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007806 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007807 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007808 uint32_t local_attachmentCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007809 VkClearAttachment* local_pAttachments;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007810 uint32_t local_rectCount;
7811 VkClearRect* local_pRects;
7812 local_commandBuffer = commandBuffer;
7813 local_attachmentCount = attachmentCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007814 local_pAttachments = nullptr;
7815 if (pAttachments)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007816 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007817 local_pAttachments = (VkClearAttachment*)pool->alloc(((attachmentCount)) * sizeof(const VkClearAttachment));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007818 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7819 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007820 deepcopy_VkClearAttachment(pool, pAttachments + i, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007821 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007822 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007823 local_rectCount = rectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007824 local_pRects = nullptr;
7825 if (pRects)
7826 {
7827 local_pRects = (VkClearRect*)pool->alloc(((rectCount)) * sizeof(const VkClearRect));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007828 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7829 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007830 deepcopy_VkClearRect(pool, pRects + i, (VkClearRect*)(local_pRects + i));
7831 }
7832 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007833 if (local_pAttachments)
7834 {
7835 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7836 {
7837 transform_VkClearAttachment(mImpl->resources(), (VkClearAttachment*)(local_pAttachments + i));
7838 }
7839 }
7840 if (local_pRects)
7841 {
7842 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7843 {
7844 transform_VkClearRect(mImpl->resources(), (VkClearRect*)(local_pRects + i));
7845 }
7846 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007847 countingStream->rewind();
7848 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007849 uint64_t cgen_var_593;
7850 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_593, 1);
7851 countingStream->write((uint64_t*)&cgen_var_593, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007852 countingStream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
7853 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7854 {
7855 marshal_VkClearAttachment(countingStream, (VkClearAttachment*)(local_pAttachments + i));
7856 }
7857 countingStream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
7858 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7859 {
7860 marshal_VkClearRect(countingStream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007861 }
7862 }
7863 uint32_t packetSize_vkCmdClearAttachments = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7864 countingStream->rewind();
7865 uint32_t opcode_vkCmdClearAttachments = OP_vkCmdClearAttachments;
7866 stream->write(&opcode_vkCmdClearAttachments, sizeof(uint32_t));
7867 stream->write(&packetSize_vkCmdClearAttachments, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007868 uint64_t cgen_var_594;
7869 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_594, 1);
7870 stream->write((uint64_t*)&cgen_var_594, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007871 stream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007872 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7873 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007874 marshal_VkClearAttachment(stream, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007875 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007876 stream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007877 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7878 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007879 marshal_VkClearRect(stream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007880 }
7881}
7882
7883void VkEncoder::vkCmdResolveImage(
7884 VkCommandBuffer commandBuffer,
7885 VkImage srcImage,
7886 VkImageLayout srcImageLayout,
7887 VkImage dstImage,
7888 VkImageLayout dstImageLayout,
7889 uint32_t regionCount,
7890 const VkImageResolve* pRegions)
7891{
7892 auto stream = mImpl->stream();
7893 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007894 auto resources = mImpl->resources();
7895 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007896 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007897 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007898 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007899 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007900 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007901 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007902 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007903 VkImageResolve* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007904 local_commandBuffer = commandBuffer;
7905 local_srcImage = srcImage;
7906 local_srcImageLayout = srcImageLayout;
7907 local_dstImage = dstImage;
7908 local_dstImageLayout = dstImageLayout;
7909 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007910 local_pRegions = nullptr;
7911 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007912 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007913 local_pRegions = (VkImageResolve*)pool->alloc(((regionCount)) * sizeof(const VkImageResolve));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007914 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7915 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007916 deepcopy_VkImageResolve(pool, pRegions + i, (VkImageResolve*)(local_pRegions + i));
7917 }
7918 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007919 if (local_pRegions)
7920 {
7921 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7922 {
7923 transform_VkImageResolve(mImpl->resources(), (VkImageResolve*)(local_pRegions + i));
7924 }
7925 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007926 countingStream->rewind();
7927 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007928 uint64_t cgen_var_595;
7929 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_595, 1);
7930 countingStream->write((uint64_t*)&cgen_var_595, 1 * 8);
7931 uint64_t cgen_var_596;
7932 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_596, 1);
7933 countingStream->write((uint64_t*)&cgen_var_596, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007934 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007935 uint64_t cgen_var_597;
7936 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_597, 1);
7937 countingStream->write((uint64_t*)&cgen_var_597, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007938 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7939 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7940 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7941 {
7942 marshal_VkImageResolve(countingStream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007943 }
7944 }
7945 uint32_t packetSize_vkCmdResolveImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7946 countingStream->rewind();
7947 uint32_t opcode_vkCmdResolveImage = OP_vkCmdResolveImage;
7948 stream->write(&opcode_vkCmdResolveImage, sizeof(uint32_t));
7949 stream->write(&packetSize_vkCmdResolveImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007950 uint64_t cgen_var_598;
7951 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_598, 1);
7952 stream->write((uint64_t*)&cgen_var_598, 1 * 8);
7953 uint64_t cgen_var_599;
7954 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_599, 1);
7955 stream->write((uint64_t*)&cgen_var_599, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007956 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007957 uint64_t cgen_var_600;
7958 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_600, 1);
7959 stream->write((uint64_t*)&cgen_var_600, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007960 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7961 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007962 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7963 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007964 marshal_VkImageResolve(stream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007965 }
7966}
7967
7968void VkEncoder::vkCmdSetEvent(
7969 VkCommandBuffer commandBuffer,
7970 VkEvent event,
7971 VkPipelineStageFlags stageMask)
7972{
7973 auto stream = mImpl->stream();
7974 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007975 auto resources = mImpl->resources();
7976 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007977 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007978 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007979 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007980 VkPipelineStageFlags local_stageMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007981 local_commandBuffer = commandBuffer;
7982 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007983 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007984 countingStream->rewind();
7985 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007986 uint64_t cgen_var_601;
7987 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_601, 1);
7988 countingStream->write((uint64_t*)&cgen_var_601, 1 * 8);
7989 uint64_t cgen_var_602;
7990 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_602, 1);
7991 countingStream->write((uint64_t*)&cgen_var_602, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007992 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007993 }
7994 uint32_t packetSize_vkCmdSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7995 countingStream->rewind();
7996 uint32_t opcode_vkCmdSetEvent = OP_vkCmdSetEvent;
7997 stream->write(&opcode_vkCmdSetEvent, sizeof(uint32_t));
7998 stream->write(&packetSize_vkCmdSetEvent, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007999 uint64_t cgen_var_603;
8000 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_603, 1);
8001 stream->write((uint64_t*)&cgen_var_603, 1 * 8);
8002 uint64_t cgen_var_604;
8003 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_604, 1);
8004 stream->write((uint64_t*)&cgen_var_604, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008005 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008006}
8007
8008void VkEncoder::vkCmdResetEvent(
8009 VkCommandBuffer commandBuffer,
8010 VkEvent event,
8011 VkPipelineStageFlags stageMask)
8012{
8013 auto stream = mImpl->stream();
8014 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008015 auto resources = mImpl->resources();
8016 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008017 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008018 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008019 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008020 VkPipelineStageFlags local_stageMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008021 local_commandBuffer = commandBuffer;
8022 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008023 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008024 countingStream->rewind();
8025 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008026 uint64_t cgen_var_605;
8027 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_605, 1);
8028 countingStream->write((uint64_t*)&cgen_var_605, 1 * 8);
8029 uint64_t cgen_var_606;
8030 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_606, 1);
8031 countingStream->write((uint64_t*)&cgen_var_606, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008032 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008033 }
8034 uint32_t packetSize_vkCmdResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8035 countingStream->rewind();
8036 uint32_t opcode_vkCmdResetEvent = OP_vkCmdResetEvent;
8037 stream->write(&opcode_vkCmdResetEvent, sizeof(uint32_t));
8038 stream->write(&packetSize_vkCmdResetEvent, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008039 uint64_t cgen_var_607;
8040 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_607, 1);
8041 stream->write((uint64_t*)&cgen_var_607, 1 * 8);
8042 uint64_t cgen_var_608;
8043 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_608, 1);
8044 stream->write((uint64_t*)&cgen_var_608, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008045 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008046}
8047
8048void VkEncoder::vkCmdWaitEvents(
8049 VkCommandBuffer commandBuffer,
8050 uint32_t eventCount,
8051 const VkEvent* pEvents,
8052 VkPipelineStageFlags srcStageMask,
8053 VkPipelineStageFlags dstStageMask,
8054 uint32_t memoryBarrierCount,
8055 const VkMemoryBarrier* pMemoryBarriers,
8056 uint32_t bufferMemoryBarrierCount,
8057 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
8058 uint32_t imageMemoryBarrierCount,
8059 const VkImageMemoryBarrier* pImageMemoryBarriers)
8060{
8061 auto stream = mImpl->stream();
8062 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008063 auto resources = mImpl->resources();
8064 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008065 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008066 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008067 uint32_t local_eventCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008068 VkEvent* local_pEvents;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008069 VkPipelineStageFlags local_srcStageMask;
8070 VkPipelineStageFlags local_dstStageMask;
8071 uint32_t local_memoryBarrierCount;
8072 VkMemoryBarrier* local_pMemoryBarriers;
8073 uint32_t local_bufferMemoryBarrierCount;
8074 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
8075 uint32_t local_imageMemoryBarrierCount;
8076 VkImageMemoryBarrier* local_pImageMemoryBarriers;
8077 local_commandBuffer = commandBuffer;
8078 local_eventCount = eventCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008079 local_pEvents = nullptr;
8080 if (pEvents)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008081 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008082 local_pEvents = (VkEvent*)pool->dupArray(pEvents, ((eventCount)) * sizeof(const VkEvent));
8083 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008084 local_srcStageMask = srcStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008085 local_dstStageMask = dstStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008086 local_memoryBarrierCount = memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008087 local_pMemoryBarriers = nullptr;
8088 if (pMemoryBarriers)
8089 {
8090 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008091 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8092 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008093 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008094 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008095 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008096 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008097 local_pBufferMemoryBarriers = nullptr;
8098 if (pBufferMemoryBarriers)
8099 {
8100 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008101 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8102 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008103 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008104 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008105 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008106 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008107 local_pImageMemoryBarriers = nullptr;
8108 if (pImageMemoryBarriers)
8109 {
8110 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008111 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8112 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008113 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
8114 }
8115 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008116 if (local_pMemoryBarriers)
8117 {
8118 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8119 {
8120 transform_VkMemoryBarrier(mImpl->resources(), (VkMemoryBarrier*)(local_pMemoryBarriers + i));
8121 }
8122 }
8123 if (local_pBufferMemoryBarriers)
8124 {
8125 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8126 {
8127 transform_VkBufferMemoryBarrier(mImpl->resources(), (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
8128 }
8129 }
8130 if (local_pImageMemoryBarriers)
8131 {
8132 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8133 {
8134 transform_VkImageMemoryBarrier(mImpl->resources(), (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
8135 }
8136 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008137 countingStream->rewind();
8138 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008139 uint64_t cgen_var_609;
8140 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_609, 1);
8141 countingStream->write((uint64_t*)&cgen_var_609, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008142 countingStream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008143 if (((eventCount)))
8144 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008145 uint64_t* cgen_var_610;
8146 countingStream->alloc((void**)&cgen_var_610, ((eventCount)) * 8);
8147 countingStream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_610, ((eventCount)));
8148 countingStream->write((uint64_t*)cgen_var_610, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008149 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008150 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8151 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8152 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
8153 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8154 {
8155 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
8156 }
8157 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
8158 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8159 {
8160 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
8161 }
8162 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
8163 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8164 {
8165 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008166 }
8167 }
8168 uint32_t packetSize_vkCmdWaitEvents = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8169 countingStream->rewind();
8170 uint32_t opcode_vkCmdWaitEvents = OP_vkCmdWaitEvents;
8171 stream->write(&opcode_vkCmdWaitEvents, sizeof(uint32_t));
8172 stream->write(&packetSize_vkCmdWaitEvents, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008173 uint64_t cgen_var_611;
8174 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_611, 1);
8175 stream->write((uint64_t*)&cgen_var_611, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008176 stream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008177 if (((eventCount)))
8178 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008179 uint64_t* cgen_var_612;
8180 stream->alloc((void**)&cgen_var_612, ((eventCount)) * 8);
8181 stream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_612, ((eventCount)));
8182 stream->write((uint64_t*)cgen_var_612, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008183 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008184 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8185 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8186 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008187 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8188 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008189 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008190 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008191 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008192 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8193 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008194 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008195 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008196 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008197 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8198 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008199 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008200 }
8201}
8202
8203void VkEncoder::vkCmdPipelineBarrier(
8204 VkCommandBuffer commandBuffer,
8205 VkPipelineStageFlags srcStageMask,
8206 VkPipelineStageFlags dstStageMask,
8207 VkDependencyFlags dependencyFlags,
8208 uint32_t memoryBarrierCount,
8209 const VkMemoryBarrier* pMemoryBarriers,
8210 uint32_t bufferMemoryBarrierCount,
8211 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
8212 uint32_t imageMemoryBarrierCount,
8213 const VkImageMemoryBarrier* pImageMemoryBarriers)
8214{
8215 auto stream = mImpl->stream();
8216 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008217 auto resources = mImpl->resources();
8218 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008219 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008220 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008221 VkPipelineStageFlags local_srcStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008222 VkPipelineStageFlags local_dstStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008223 VkDependencyFlags local_dependencyFlags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008224 uint32_t local_memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008225 VkMemoryBarrier* local_pMemoryBarriers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008226 uint32_t local_bufferMemoryBarrierCount;
8227 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
8228 uint32_t local_imageMemoryBarrierCount;
8229 VkImageMemoryBarrier* local_pImageMemoryBarriers;
8230 local_commandBuffer = commandBuffer;
8231 local_srcStageMask = srcStageMask;
8232 local_dstStageMask = dstStageMask;
8233 local_dependencyFlags = dependencyFlags;
8234 local_memoryBarrierCount = memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008235 local_pMemoryBarriers = nullptr;
8236 if (pMemoryBarriers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008237 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008238 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008239 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8240 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008241 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008242 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008243 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008244 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008245 local_pBufferMemoryBarriers = nullptr;
8246 if (pBufferMemoryBarriers)
8247 {
8248 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008249 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8250 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008251 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008252 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008253 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008254 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008255 local_pImageMemoryBarriers = nullptr;
8256 if (pImageMemoryBarriers)
8257 {
8258 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008259 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8260 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008261 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
8262 }
8263 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008264 if (local_pMemoryBarriers)
8265 {
8266 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8267 {
8268 transform_VkMemoryBarrier(mImpl->resources(), (VkMemoryBarrier*)(local_pMemoryBarriers + i));
8269 }
8270 }
8271 if (local_pBufferMemoryBarriers)
8272 {
8273 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8274 {
8275 transform_VkBufferMemoryBarrier(mImpl->resources(), (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
8276 }
8277 }
8278 if (local_pImageMemoryBarriers)
8279 {
8280 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8281 {
8282 transform_VkImageMemoryBarrier(mImpl->resources(), (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
8283 }
8284 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008285 countingStream->rewind();
8286 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008287 uint64_t cgen_var_613;
8288 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_613, 1);
8289 countingStream->write((uint64_t*)&cgen_var_613, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008290 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8291 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8292 countingStream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
8293 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
8294 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8295 {
8296 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
8297 }
8298 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
8299 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8300 {
8301 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
8302 }
8303 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
8304 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8305 {
8306 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008307 }
8308 }
8309 uint32_t packetSize_vkCmdPipelineBarrier = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8310 countingStream->rewind();
8311 uint32_t opcode_vkCmdPipelineBarrier = OP_vkCmdPipelineBarrier;
8312 stream->write(&opcode_vkCmdPipelineBarrier, sizeof(uint32_t));
8313 stream->write(&packetSize_vkCmdPipelineBarrier, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008314 uint64_t cgen_var_614;
8315 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_614, 1);
8316 stream->write((uint64_t*)&cgen_var_614, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008317 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8318 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8319 stream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
8320 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008321 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8322 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008323 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008324 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008325 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008326 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8327 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008328 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008329 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008330 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008331 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8332 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008333 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008334 }
8335}
8336
8337void VkEncoder::vkCmdBeginQuery(
8338 VkCommandBuffer commandBuffer,
8339 VkQueryPool queryPool,
8340 uint32_t query,
8341 VkQueryControlFlags flags)
8342{
8343 auto stream = mImpl->stream();
8344 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008345 auto resources = mImpl->resources();
8346 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008347 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008348 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008349 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008350 uint32_t local_query;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008351 VkQueryControlFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008352 local_commandBuffer = commandBuffer;
8353 local_queryPool = queryPool;
8354 local_query = query;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008355 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008356 countingStream->rewind();
8357 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008358 uint64_t cgen_var_615;
8359 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_615, 1);
8360 countingStream->write((uint64_t*)&cgen_var_615, 1 * 8);
8361 uint64_t cgen_var_616;
8362 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_616, 1);
8363 countingStream->write((uint64_t*)&cgen_var_616, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008364 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
8365 countingStream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008366 }
8367 uint32_t packetSize_vkCmdBeginQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8368 countingStream->rewind();
8369 uint32_t opcode_vkCmdBeginQuery = OP_vkCmdBeginQuery;
8370 stream->write(&opcode_vkCmdBeginQuery, sizeof(uint32_t));
8371 stream->write(&packetSize_vkCmdBeginQuery, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008372 uint64_t cgen_var_617;
8373 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_617, 1);
8374 stream->write((uint64_t*)&cgen_var_617, 1 * 8);
8375 uint64_t cgen_var_618;
8376 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_618, 1);
8377 stream->write((uint64_t*)&cgen_var_618, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008378 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
8379 stream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008380}
8381
8382void VkEncoder::vkCmdEndQuery(
8383 VkCommandBuffer commandBuffer,
8384 VkQueryPool queryPool,
8385 uint32_t query)
8386{
8387 auto stream = mImpl->stream();
8388 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008389 auto resources = mImpl->resources();
8390 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008391 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008392 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008393 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008394 uint32_t local_query;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008395 local_commandBuffer = commandBuffer;
8396 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008397 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008398 countingStream->rewind();
8399 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008400 uint64_t cgen_var_619;
8401 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_619, 1);
8402 countingStream->write((uint64_t*)&cgen_var_619, 1 * 8);
8403 uint64_t cgen_var_620;
8404 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_620, 1);
8405 countingStream->write((uint64_t*)&cgen_var_620, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008406 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008407 }
8408 uint32_t packetSize_vkCmdEndQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8409 countingStream->rewind();
8410 uint32_t opcode_vkCmdEndQuery = OP_vkCmdEndQuery;
8411 stream->write(&opcode_vkCmdEndQuery, sizeof(uint32_t));
8412 stream->write(&packetSize_vkCmdEndQuery, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008413 uint64_t cgen_var_621;
8414 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_621, 1);
8415 stream->write((uint64_t*)&cgen_var_621, 1 * 8);
8416 uint64_t cgen_var_622;
8417 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_622, 1);
8418 stream->write((uint64_t*)&cgen_var_622, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008419 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008420}
8421
8422void VkEncoder::vkCmdResetQueryPool(
8423 VkCommandBuffer commandBuffer,
8424 VkQueryPool queryPool,
8425 uint32_t firstQuery,
8426 uint32_t queryCount)
8427{
8428 auto stream = mImpl->stream();
8429 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008430 auto resources = mImpl->resources();
8431 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008432 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008433 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008434 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008435 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008436 uint32_t local_queryCount;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008437 local_commandBuffer = commandBuffer;
8438 local_queryPool = queryPool;
8439 local_firstQuery = firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008440 local_queryCount = queryCount;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008441 countingStream->rewind();
8442 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008443 uint64_t cgen_var_623;
8444 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_623, 1);
8445 countingStream->write((uint64_t*)&cgen_var_623, 1 * 8);
8446 uint64_t cgen_var_624;
8447 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_624, 1);
8448 countingStream->write((uint64_t*)&cgen_var_624, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008449 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8450 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008451 }
8452 uint32_t packetSize_vkCmdResetQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8453 countingStream->rewind();
8454 uint32_t opcode_vkCmdResetQueryPool = OP_vkCmdResetQueryPool;
8455 stream->write(&opcode_vkCmdResetQueryPool, sizeof(uint32_t));
8456 stream->write(&packetSize_vkCmdResetQueryPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008457 uint64_t cgen_var_625;
8458 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_625, 1);
8459 stream->write((uint64_t*)&cgen_var_625, 1 * 8);
8460 uint64_t cgen_var_626;
8461 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_626, 1);
8462 stream->write((uint64_t*)&cgen_var_626, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008463 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8464 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008465}
8466
8467void VkEncoder::vkCmdWriteTimestamp(
8468 VkCommandBuffer commandBuffer,
8469 VkPipelineStageFlagBits pipelineStage,
8470 VkQueryPool queryPool,
8471 uint32_t query)
8472{
8473 auto stream = mImpl->stream();
8474 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008475 auto resources = mImpl->resources();
8476 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008477 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008478 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008479 VkPipelineStageFlagBits local_pipelineStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008480 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008481 uint32_t local_query;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008482 local_commandBuffer = commandBuffer;
8483 local_pipelineStage = pipelineStage;
8484 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008485 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008486 countingStream->rewind();
8487 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008488 uint64_t cgen_var_627;
8489 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_627, 1);
8490 countingStream->write((uint64_t*)&cgen_var_627, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008491 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008492 uint64_t cgen_var_628;
8493 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_628, 1);
8494 countingStream->write((uint64_t*)&cgen_var_628, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008495 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008496 }
8497 uint32_t packetSize_vkCmdWriteTimestamp = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8498 countingStream->rewind();
8499 uint32_t opcode_vkCmdWriteTimestamp = OP_vkCmdWriteTimestamp;
8500 stream->write(&opcode_vkCmdWriteTimestamp, sizeof(uint32_t));
8501 stream->write(&packetSize_vkCmdWriteTimestamp, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008502 uint64_t cgen_var_629;
8503 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_629, 1);
8504 stream->write((uint64_t*)&cgen_var_629, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008505 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008506 uint64_t cgen_var_630;
8507 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_630, 1);
8508 stream->write((uint64_t*)&cgen_var_630, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008509 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008510}
8511
8512void VkEncoder::vkCmdCopyQueryPoolResults(
8513 VkCommandBuffer commandBuffer,
8514 VkQueryPool queryPool,
8515 uint32_t firstQuery,
8516 uint32_t queryCount,
8517 VkBuffer dstBuffer,
8518 VkDeviceSize dstOffset,
8519 VkDeviceSize stride,
8520 VkQueryResultFlags flags)
8521{
8522 auto stream = mImpl->stream();
8523 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008524 auto resources = mImpl->resources();
8525 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008526 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008527 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008528 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008529 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008530 uint32_t local_queryCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008531 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008532 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008533 VkDeviceSize local_stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008534 VkQueryResultFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008535 local_commandBuffer = commandBuffer;
8536 local_queryPool = queryPool;
8537 local_firstQuery = firstQuery;
8538 local_queryCount = queryCount;
8539 local_dstBuffer = dstBuffer;
8540 local_dstOffset = dstOffset;
8541 local_stride = stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008542 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008543 countingStream->rewind();
8544 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008545 uint64_t cgen_var_631;
8546 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_631, 1);
8547 countingStream->write((uint64_t*)&cgen_var_631, 1 * 8);
8548 uint64_t cgen_var_632;
8549 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_632, 1);
8550 countingStream->write((uint64_t*)&cgen_var_632, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008551 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8552 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008553 uint64_t cgen_var_633;
8554 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_633, 1);
8555 countingStream->write((uint64_t*)&cgen_var_633, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008556 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8557 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
8558 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008559 }
8560 uint32_t packetSize_vkCmdCopyQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8561 countingStream->rewind();
8562 uint32_t opcode_vkCmdCopyQueryPoolResults = OP_vkCmdCopyQueryPoolResults;
8563 stream->write(&opcode_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
8564 stream->write(&packetSize_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008565 uint64_t cgen_var_634;
8566 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_634, 1);
8567 stream->write((uint64_t*)&cgen_var_634, 1 * 8);
8568 uint64_t cgen_var_635;
8569 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_635, 1);
8570 stream->write((uint64_t*)&cgen_var_635, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008571 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8572 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008573 uint64_t cgen_var_636;
8574 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_636, 1);
8575 stream->write((uint64_t*)&cgen_var_636, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008576 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8577 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
8578 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008579}
8580
8581void VkEncoder::vkCmdPushConstants(
8582 VkCommandBuffer commandBuffer,
8583 VkPipelineLayout layout,
8584 VkShaderStageFlags stageFlags,
8585 uint32_t offset,
8586 uint32_t size,
8587 const void* pValues)
8588{
8589 auto stream = mImpl->stream();
8590 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008591 auto resources = mImpl->resources();
8592 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008593 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008594 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008595 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008596 VkShaderStageFlags local_stageFlags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008597 uint32_t local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008598 uint32_t local_size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008599 void* local_pValues;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008600 local_commandBuffer = commandBuffer;
8601 local_layout = layout;
8602 local_stageFlags = stageFlags;
8603 local_offset = offset;
8604 local_size = size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008605 local_pValues = nullptr;
8606 if (pValues)
8607 {
8608 local_pValues = (void*)pool->dupArray(pValues, ((size)) * sizeof(const uint8_t));
8609 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008610 countingStream->rewind();
8611 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008612 uint64_t cgen_var_637;
8613 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_637, 1);
8614 countingStream->write((uint64_t*)&cgen_var_637, 1 * 8);
8615 uint64_t cgen_var_638;
8616 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_638, 1);
8617 countingStream->write((uint64_t*)&cgen_var_638, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008618 countingStream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
8619 countingStream->write((uint32_t*)&local_offset, sizeof(uint32_t));
8620 countingStream->write((uint32_t*)&local_size, sizeof(uint32_t));
8621 countingStream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008622 }
8623 uint32_t packetSize_vkCmdPushConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8624 countingStream->rewind();
8625 uint32_t opcode_vkCmdPushConstants = OP_vkCmdPushConstants;
8626 stream->write(&opcode_vkCmdPushConstants, sizeof(uint32_t));
8627 stream->write(&packetSize_vkCmdPushConstants, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008628 uint64_t cgen_var_639;
8629 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_639, 1);
8630 stream->write((uint64_t*)&cgen_var_639, 1 * 8);
8631 uint64_t cgen_var_640;
8632 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_640, 1);
8633 stream->write((uint64_t*)&cgen_var_640, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008634 stream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
8635 stream->write((uint32_t*)&local_offset, sizeof(uint32_t));
8636 stream->write((uint32_t*)&local_size, sizeof(uint32_t));
8637 stream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008638}
8639
8640void VkEncoder::vkCmdBeginRenderPass(
8641 VkCommandBuffer commandBuffer,
8642 const VkRenderPassBeginInfo* pRenderPassBegin,
8643 VkSubpassContents contents)
8644{
8645 auto stream = mImpl->stream();
8646 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008647 auto resources = mImpl->resources();
8648 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008649 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008650 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008651 VkRenderPassBeginInfo* local_pRenderPassBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008652 VkSubpassContents local_contents;
8653 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008654 local_pRenderPassBegin = nullptr;
8655 if (pRenderPassBegin)
8656 {
8657 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
8658 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8659 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008660 local_contents = contents;
Lingfeng Yang62b23322018-12-24 12:45:47 -08008661 if (local_pRenderPassBegin)
8662 {
8663 transform_VkRenderPassBeginInfo(mImpl->resources(), (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8664 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008665 countingStream->rewind();
8666 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008667 uint64_t cgen_var_641;
8668 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_641, 1);
8669 countingStream->write((uint64_t*)&cgen_var_641, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008670 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8671 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008672 }
8673 uint32_t packetSize_vkCmdBeginRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8674 countingStream->rewind();
8675 uint32_t opcode_vkCmdBeginRenderPass = OP_vkCmdBeginRenderPass;
8676 stream->write(&opcode_vkCmdBeginRenderPass, sizeof(uint32_t));
8677 stream->write(&packetSize_vkCmdBeginRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008678 uint64_t cgen_var_642;
8679 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_642, 1);
8680 stream->write((uint64_t*)&cgen_var_642, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008681 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8682 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008683}
8684
8685void VkEncoder::vkCmdNextSubpass(
8686 VkCommandBuffer commandBuffer,
8687 VkSubpassContents contents)
8688{
8689 auto stream = mImpl->stream();
8690 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008691 auto resources = mImpl->resources();
8692 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008693 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008694 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008695 VkSubpassContents local_contents;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008696 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008697 local_contents = contents;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008698 countingStream->rewind();
8699 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008700 uint64_t cgen_var_643;
8701 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_643, 1);
8702 countingStream->write((uint64_t*)&cgen_var_643, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008703 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008704 }
8705 uint32_t packetSize_vkCmdNextSubpass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8706 countingStream->rewind();
8707 uint32_t opcode_vkCmdNextSubpass = OP_vkCmdNextSubpass;
8708 stream->write(&opcode_vkCmdNextSubpass, sizeof(uint32_t));
8709 stream->write(&packetSize_vkCmdNextSubpass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008710 uint64_t cgen_var_644;
8711 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_644, 1);
8712 stream->write((uint64_t*)&cgen_var_644, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008713 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008714}
8715
8716void VkEncoder::vkCmdEndRenderPass(
8717 VkCommandBuffer commandBuffer)
8718{
8719 auto stream = mImpl->stream();
8720 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008721 auto resources = mImpl->resources();
8722 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008723 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008724 VkCommandBuffer local_commandBuffer;
8725 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008726 countingStream->rewind();
8727 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008728 uint64_t cgen_var_645;
8729 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_645, 1);
8730 countingStream->write((uint64_t*)&cgen_var_645, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008731 }
8732 uint32_t packetSize_vkCmdEndRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8733 countingStream->rewind();
8734 uint32_t opcode_vkCmdEndRenderPass = OP_vkCmdEndRenderPass;
8735 stream->write(&opcode_vkCmdEndRenderPass, sizeof(uint32_t));
8736 stream->write(&packetSize_vkCmdEndRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008737 uint64_t cgen_var_646;
8738 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_646, 1);
8739 stream->write((uint64_t*)&cgen_var_646, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008740}
8741
8742void VkEncoder::vkCmdExecuteCommands(
8743 VkCommandBuffer commandBuffer,
8744 uint32_t commandBufferCount,
8745 const VkCommandBuffer* pCommandBuffers)
8746{
8747 auto stream = mImpl->stream();
8748 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008749 auto resources = mImpl->resources();
8750 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008751 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008752 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008753 uint32_t local_commandBufferCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008754 VkCommandBuffer* local_pCommandBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008755 local_commandBuffer = commandBuffer;
8756 local_commandBufferCount = commandBufferCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008757 local_pCommandBuffers = nullptr;
8758 if (pCommandBuffers)
8759 {
8760 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
8761 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008762 countingStream->rewind();
8763 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008764 uint64_t cgen_var_647;
8765 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_647, 1);
8766 countingStream->write((uint64_t*)&cgen_var_647, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008767 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008768 if (((commandBufferCount)))
8769 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008770 uint64_t* cgen_var_648;
8771 countingStream->alloc((void**)&cgen_var_648, ((commandBufferCount)) * 8);
8772 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_648, ((commandBufferCount)));
8773 countingStream->write((uint64_t*)cgen_var_648, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008774 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008775 }
8776 uint32_t packetSize_vkCmdExecuteCommands = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8777 countingStream->rewind();
8778 uint32_t opcode_vkCmdExecuteCommands = OP_vkCmdExecuteCommands;
8779 stream->write(&opcode_vkCmdExecuteCommands, sizeof(uint32_t));
8780 stream->write(&packetSize_vkCmdExecuteCommands, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008781 uint64_t cgen_var_649;
8782 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_649, 1);
8783 stream->write((uint64_t*)&cgen_var_649, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008784 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008785 if (((commandBufferCount)))
8786 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008787 uint64_t* cgen_var_650;
8788 stream->alloc((void**)&cgen_var_650, ((commandBufferCount)) * 8);
8789 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_650, ((commandBufferCount)));
8790 stream->write((uint64_t*)cgen_var_650, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008791 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008792}
8793
8794#endif
8795#ifdef VK_VERSION_1_1
8796VkResult VkEncoder::vkEnumerateInstanceVersion(
8797 uint32_t* pApiVersion)
8798{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008799 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08008800 vkEnumerateInstanceVersion_VkResult_return = mImpl->resources()->on_vkEnumerateInstanceVersion(this, VK_SUCCESS, pApiVersion);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008801 return vkEnumerateInstanceVersion_VkResult_return;
8802}
8803
8804VkResult VkEncoder::vkBindBufferMemory2(
8805 VkDevice device,
8806 uint32_t bindInfoCount,
8807 const VkBindBufferMemoryInfo* pBindInfos)
8808{
8809 auto stream = mImpl->stream();
8810 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008811 auto resources = mImpl->resources();
8812 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008813 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008814 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008815 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008816 VkBindBufferMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008817 local_device = device;
8818 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008819 local_pBindInfos = nullptr;
8820 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008821 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008822 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008823 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8824 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008825 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
8826 }
8827 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008828 if (local_pBindInfos)
8829 {
8830 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8831 {
8832 transform_VkBindBufferMemoryInfo(mImpl->resources(), (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
8833 }
8834 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008835 countingStream->rewind();
8836 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008837 uint64_t cgen_var_651;
8838 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_651, 1);
8839 countingStream->write((uint64_t*)&cgen_var_651, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008840 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
8841 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8842 {
8843 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008844 }
8845 }
8846 uint32_t packetSize_vkBindBufferMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8847 countingStream->rewind();
8848 uint32_t opcode_vkBindBufferMemory2 = OP_vkBindBufferMemory2;
8849 stream->write(&opcode_vkBindBufferMemory2, sizeof(uint32_t));
8850 stream->write(&packetSize_vkBindBufferMemory2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008851 uint64_t cgen_var_652;
8852 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_652, 1);
8853 stream->write((uint64_t*)&cgen_var_652, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008854 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008855 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8856 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008857 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008858 }
8859 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
8860 stream->read(&vkBindBufferMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008861 countingStream->clearPool();
8862 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008863 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008864 return vkBindBufferMemory2_VkResult_return;
8865}
8866
8867VkResult VkEncoder::vkBindImageMemory2(
8868 VkDevice device,
8869 uint32_t bindInfoCount,
8870 const VkBindImageMemoryInfo* pBindInfos)
8871{
8872 auto stream = mImpl->stream();
8873 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008874 auto resources = mImpl->resources();
8875 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008876 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008877 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008878 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008879 VkBindImageMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008880 local_device = device;
8881 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008882 local_pBindInfos = nullptr;
8883 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008884 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008885 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008886 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8887 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008888 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
8889 }
8890 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008891 if (local_pBindInfos)
8892 {
8893 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8894 {
8895 transform_VkBindImageMemoryInfo(mImpl->resources(), (VkBindImageMemoryInfo*)(local_pBindInfos + i));
8896 }
8897 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008898 countingStream->rewind();
8899 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008900 uint64_t cgen_var_653;
8901 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_653, 1);
8902 countingStream->write((uint64_t*)&cgen_var_653, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008903 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
8904 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8905 {
8906 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008907 }
8908 }
8909 uint32_t packetSize_vkBindImageMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8910 countingStream->rewind();
8911 uint32_t opcode_vkBindImageMemory2 = OP_vkBindImageMemory2;
8912 stream->write(&opcode_vkBindImageMemory2, sizeof(uint32_t));
8913 stream->write(&packetSize_vkBindImageMemory2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008914 uint64_t cgen_var_654;
8915 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_654, 1);
8916 stream->write((uint64_t*)&cgen_var_654, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008917 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008918 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8919 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008920 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008921 }
8922 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
8923 stream->read(&vkBindImageMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008924 countingStream->clearPool();
8925 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008926 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008927 return vkBindImageMemory2_VkResult_return;
8928}
8929
8930void VkEncoder::vkGetDeviceGroupPeerMemoryFeatures(
8931 VkDevice device,
8932 uint32_t heapIndex,
8933 uint32_t localDeviceIndex,
8934 uint32_t remoteDeviceIndex,
8935 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
8936{
8937 auto stream = mImpl->stream();
8938 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008939 auto resources = mImpl->resources();
8940 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008941 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008942 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008943 uint32_t local_heapIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008944 uint32_t local_localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008945 uint32_t local_remoteDeviceIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008946 local_device = device;
8947 local_heapIndex = heapIndex;
8948 local_localDeviceIndex = localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008949 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008950 countingStream->rewind();
8951 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008952 uint64_t cgen_var_655;
8953 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_655, 1);
8954 countingStream->write((uint64_t*)&cgen_var_655, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008955 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
8956 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
8957 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008958 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
8959 }
8960 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8961 countingStream->rewind();
8962 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeatures = OP_vkGetDeviceGroupPeerMemoryFeatures;
8963 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
8964 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008965 uint64_t cgen_var_656;
8966 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_656, 1);
8967 stream->write((uint64_t*)&cgen_var_656, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008968 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
8969 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
8970 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008971 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
8972 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
8973}
8974
8975void VkEncoder::vkCmdSetDeviceMask(
8976 VkCommandBuffer commandBuffer,
8977 uint32_t deviceMask)
8978{
8979 auto stream = mImpl->stream();
8980 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008981 auto resources = mImpl->resources();
8982 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008983 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008984 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008985 uint32_t local_deviceMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008986 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008987 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008988 countingStream->rewind();
8989 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008990 uint64_t cgen_var_657;
8991 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_657, 1);
8992 countingStream->write((uint64_t*)&cgen_var_657, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008993 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008994 }
8995 uint32_t packetSize_vkCmdSetDeviceMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8996 countingStream->rewind();
8997 uint32_t opcode_vkCmdSetDeviceMask = OP_vkCmdSetDeviceMask;
8998 stream->write(&opcode_vkCmdSetDeviceMask, sizeof(uint32_t));
8999 stream->write(&packetSize_vkCmdSetDeviceMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009000 uint64_t cgen_var_658;
9001 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_658, 1);
9002 stream->write((uint64_t*)&cgen_var_658, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009003 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009004}
9005
9006void VkEncoder::vkCmdDispatchBase(
9007 VkCommandBuffer commandBuffer,
9008 uint32_t baseGroupX,
9009 uint32_t baseGroupY,
9010 uint32_t baseGroupZ,
9011 uint32_t groupCountX,
9012 uint32_t groupCountY,
9013 uint32_t groupCountZ)
9014{
9015 auto stream = mImpl->stream();
9016 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009017 auto resources = mImpl->resources();
9018 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009019 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009020 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009021 uint32_t local_baseGroupX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009022 uint32_t local_baseGroupY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009023 uint32_t local_baseGroupZ;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009024 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009025 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009026 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009027 local_commandBuffer = commandBuffer;
9028 local_baseGroupX = baseGroupX;
9029 local_baseGroupY = baseGroupY;
9030 local_baseGroupZ = baseGroupZ;
9031 local_groupCountX = groupCountX;
9032 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009033 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009034 countingStream->rewind();
9035 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009036 uint64_t cgen_var_659;
9037 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_659, 1);
9038 countingStream->write((uint64_t*)&cgen_var_659, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009039 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
9040 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
9041 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
9042 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
9043 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
9044 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009045 }
9046 uint32_t packetSize_vkCmdDispatchBase = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9047 countingStream->rewind();
9048 uint32_t opcode_vkCmdDispatchBase = OP_vkCmdDispatchBase;
9049 stream->write(&opcode_vkCmdDispatchBase, sizeof(uint32_t));
9050 stream->write(&packetSize_vkCmdDispatchBase, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009051 uint64_t cgen_var_660;
9052 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_660, 1);
9053 stream->write((uint64_t*)&cgen_var_660, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009054 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
9055 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
9056 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
9057 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
9058 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
9059 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009060}
9061
9062VkResult VkEncoder::vkEnumeratePhysicalDeviceGroups(
9063 VkInstance instance,
9064 uint32_t* pPhysicalDeviceGroupCount,
9065 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
9066{
9067 auto stream = mImpl->stream();
9068 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009069 auto resources = mImpl->resources();
9070 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009071 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009072 VkInstance local_instance;
9073 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009074 countingStream->rewind();
9075 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009076 uint64_t cgen_var_661;
9077 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_661, 1);
9078 countingStream->write((uint64_t*)&cgen_var_661, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009079 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009080 uint64_t cgen_var_662 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
9081 countingStream->putBe64(cgen_var_662);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009082 if (pPhysicalDeviceGroupCount)
9083 {
9084 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
9085 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009086 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009087 uint64_t cgen_var_663 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
9088 countingStream->putBe64(cgen_var_663);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009089 if (pPhysicalDeviceGroupProperties)
9090 {
9091 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
9092 {
9093 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
9094 }
9095 }
9096 }
9097 uint32_t packetSize_vkEnumeratePhysicalDeviceGroups = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9098 countingStream->rewind();
9099 uint32_t opcode_vkEnumeratePhysicalDeviceGroups = OP_vkEnumeratePhysicalDeviceGroups;
9100 stream->write(&opcode_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
9101 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009102 uint64_t cgen_var_664;
9103 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_664, 1);
9104 stream->write((uint64_t*)&cgen_var_664, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009105 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009106 uint64_t cgen_var_665 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
9107 stream->putBe64(cgen_var_665);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009108 if (pPhysicalDeviceGroupCount)
9109 {
9110 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
9111 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009112 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009113 uint64_t cgen_var_666 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
9114 stream->putBe64(cgen_var_666);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009115 if (pPhysicalDeviceGroupProperties)
9116 {
9117 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
9118 {
9119 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
9120 }
9121 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009122 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009123 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009124 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009125 if (pPhysicalDeviceGroupCount)
9126 {
9127 if (!(check_pPhysicalDeviceGroupCount))
9128 {
9129 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
9130 }
9131 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
9132 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009133 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009134 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009135 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009136 if (pPhysicalDeviceGroupProperties)
9137 {
9138 if (!(check_pPhysicalDeviceGroupProperties))
9139 {
9140 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
9141 }
9142 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
9143 {
9144 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
9145 }
9146 }
9147 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
9148 stream->read(&vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009149 countingStream->clearPool();
9150 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009151 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009152 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
9153}
9154
9155void VkEncoder::vkGetImageMemoryRequirements2(
9156 VkDevice device,
9157 const VkImageMemoryRequirementsInfo2* pInfo,
9158 VkMemoryRequirements2* pMemoryRequirements)
9159{
9160 auto stream = mImpl->stream();
9161 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009162 auto resources = mImpl->resources();
9163 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009164 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009165 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009166 VkImageMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009167 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009168 local_pInfo = nullptr;
9169 if (pInfo)
9170 {
9171 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
9172 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
9173 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009174 if (local_pInfo)
9175 {
9176 transform_VkImageMemoryRequirementsInfo2(mImpl->resources(), (VkImageMemoryRequirementsInfo2*)(local_pInfo));
9177 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009178 countingStream->rewind();
9179 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009180 uint64_t cgen_var_669;
9181 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_669, 1);
9182 countingStream->write((uint64_t*)&cgen_var_669, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009183 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009184 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
9185 }
9186 uint32_t packetSize_vkGetImageMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9187 countingStream->rewind();
9188 uint32_t opcode_vkGetImageMemoryRequirements2 = OP_vkGetImageMemoryRequirements2;
9189 stream->write(&opcode_vkGetImageMemoryRequirements2, sizeof(uint32_t));
9190 stream->write(&packetSize_vkGetImageMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009191 uint64_t cgen_var_670;
9192 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_670, 1);
9193 stream->write((uint64_t*)&cgen_var_670, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009194 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009195 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
9196 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
9197}
9198
9199void VkEncoder::vkGetBufferMemoryRequirements2(
9200 VkDevice device,
9201 const VkBufferMemoryRequirementsInfo2* pInfo,
9202 VkMemoryRequirements2* pMemoryRequirements)
9203{
9204 auto stream = mImpl->stream();
9205 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009206 auto resources = mImpl->resources();
9207 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009208 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009209 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009210 VkBufferMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009211 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009212 local_pInfo = nullptr;
9213 if (pInfo)
9214 {
9215 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
9216 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
9217 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009218 if (local_pInfo)
9219 {
9220 transform_VkBufferMemoryRequirementsInfo2(mImpl->resources(), (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
9221 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009222 countingStream->rewind();
9223 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009224 uint64_t cgen_var_671;
9225 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_671, 1);
9226 countingStream->write((uint64_t*)&cgen_var_671, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009227 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009228 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
9229 }
9230 uint32_t packetSize_vkGetBufferMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9231 countingStream->rewind();
9232 uint32_t opcode_vkGetBufferMemoryRequirements2 = OP_vkGetBufferMemoryRequirements2;
9233 stream->write(&opcode_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
9234 stream->write(&packetSize_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009235 uint64_t cgen_var_672;
9236 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_672, 1);
9237 stream->write((uint64_t*)&cgen_var_672, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009238 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009239 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
9240 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
9241}
9242
9243void VkEncoder::vkGetImageSparseMemoryRequirements2(
9244 VkDevice device,
9245 const VkImageSparseMemoryRequirementsInfo2* pInfo,
9246 uint32_t* pSparseMemoryRequirementCount,
9247 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
9248{
9249 auto stream = mImpl->stream();
9250 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009251 auto resources = mImpl->resources();
9252 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009253 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009254 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009255 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009256 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009257 local_pInfo = nullptr;
9258 if (pInfo)
9259 {
9260 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
9261 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
9262 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009263 if (local_pInfo)
9264 {
9265 transform_VkImageSparseMemoryRequirementsInfo2(mImpl->resources(), (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
9266 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009267 countingStream->rewind();
9268 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009269 uint64_t cgen_var_673;
9270 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_673, 1);
9271 countingStream->write((uint64_t*)&cgen_var_673, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009272 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009273 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009274 uint64_t cgen_var_674 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
9275 countingStream->putBe64(cgen_var_674);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009276 if (pSparseMemoryRequirementCount)
9277 {
9278 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
9279 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009280 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009281 uint64_t cgen_var_675 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
9282 countingStream->putBe64(cgen_var_675);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009283 if (pSparseMemoryRequirements)
9284 {
9285 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
9286 {
9287 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
9288 }
9289 }
9290 }
9291 uint32_t packetSize_vkGetImageSparseMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9292 countingStream->rewind();
9293 uint32_t opcode_vkGetImageSparseMemoryRequirements2 = OP_vkGetImageSparseMemoryRequirements2;
9294 stream->write(&opcode_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
9295 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009296 uint64_t cgen_var_676;
9297 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_676, 1);
9298 stream->write((uint64_t*)&cgen_var_676, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009299 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009300 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009301 uint64_t cgen_var_677 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
9302 stream->putBe64(cgen_var_677);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009303 if (pSparseMemoryRequirementCount)
9304 {
9305 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
9306 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009307 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009308 uint64_t cgen_var_678 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
9309 stream->putBe64(cgen_var_678);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009310 if (pSparseMemoryRequirements)
9311 {
9312 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
9313 {
9314 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
9315 }
9316 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009317 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009318 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009319 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009320 if (pSparseMemoryRequirementCount)
9321 {
9322 if (!(check_pSparseMemoryRequirementCount))
9323 {
9324 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
9325 }
9326 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
9327 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009328 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009329 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009330 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009331 if (pSparseMemoryRequirements)
9332 {
9333 if (!(check_pSparseMemoryRequirements))
9334 {
9335 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
9336 }
9337 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
9338 {
9339 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
9340 }
9341 }
9342}
9343
9344void VkEncoder::vkGetPhysicalDeviceFeatures2(
9345 VkPhysicalDevice physicalDevice,
9346 VkPhysicalDeviceFeatures2* pFeatures)
9347{
9348 auto stream = mImpl->stream();
9349 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009350 auto resources = mImpl->resources();
9351 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009352 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009353 VkPhysicalDevice local_physicalDevice;
9354 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009355 countingStream->rewind();
9356 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009357 uint64_t cgen_var_681;
9358 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_681, 1);
9359 countingStream->write((uint64_t*)&cgen_var_681, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009360 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
9361 }
9362 uint32_t packetSize_vkGetPhysicalDeviceFeatures2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9363 countingStream->rewind();
9364 uint32_t opcode_vkGetPhysicalDeviceFeatures2 = OP_vkGetPhysicalDeviceFeatures2;
9365 stream->write(&opcode_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
9366 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009367 uint64_t cgen_var_682;
9368 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_682, 1);
9369 stream->write((uint64_t*)&cgen_var_682, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009370 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
9371 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
9372}
9373
9374void VkEncoder::vkGetPhysicalDeviceProperties2(
9375 VkPhysicalDevice physicalDevice,
9376 VkPhysicalDeviceProperties2* pProperties)
9377{
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08009378 mImpl->resources()->on_vkGetPhysicalDeviceProperties2(this, physicalDevice, pProperties);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009379}
9380
9381void VkEncoder::vkGetPhysicalDeviceFormatProperties2(
9382 VkPhysicalDevice physicalDevice,
9383 VkFormat format,
9384 VkFormatProperties2* pFormatProperties)
9385{
9386 auto stream = mImpl->stream();
9387 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009388 auto resources = mImpl->resources();
9389 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009390 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009391 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009392 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009393 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009394 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009395 countingStream->rewind();
9396 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009397 uint64_t cgen_var_683;
9398 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_683, 1);
9399 countingStream->write((uint64_t*)&cgen_var_683, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009400 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009401 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
9402 }
9403 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9404 countingStream->rewind();
9405 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2 = OP_vkGetPhysicalDeviceFormatProperties2;
9406 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
9407 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009408 uint64_t cgen_var_684;
9409 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_684, 1);
9410 stream->write((uint64_t*)&cgen_var_684, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009411 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009412 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
9413 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
9414}
9415
9416VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2(
9417 VkPhysicalDevice physicalDevice,
9418 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
9419 VkImageFormatProperties2* pImageFormatProperties)
9420{
9421 auto stream = mImpl->stream();
9422 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009423 auto resources = mImpl->resources();
9424 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009425 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009426 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009427 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009428 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009429 local_pImageFormatInfo = nullptr;
9430 if (pImageFormatInfo)
9431 {
9432 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
9433 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
9434 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009435 if (local_pImageFormatInfo)
9436 {
9437 transform_VkPhysicalDeviceImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
9438 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009439 countingStream->rewind();
9440 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009441 uint64_t cgen_var_685;
9442 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_685, 1);
9443 countingStream->write((uint64_t*)&cgen_var_685, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009444 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009445 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
9446 }
9447 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9448 countingStream->rewind();
9449 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2 = OP_vkGetPhysicalDeviceImageFormatProperties2;
9450 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
9451 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009452 uint64_t cgen_var_686;
9453 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_686, 1);
9454 stream->write((uint64_t*)&cgen_var_686, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009455 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009456 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
9457 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
9458 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
9459 stream->read(&vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009460 countingStream->clearPool();
9461 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009462 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009463 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
9464}
9465
9466void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2(
9467 VkPhysicalDevice physicalDevice,
9468 uint32_t* pQueueFamilyPropertyCount,
9469 VkQueueFamilyProperties2* pQueueFamilyProperties)
9470{
9471 auto stream = mImpl->stream();
9472 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009473 auto resources = mImpl->resources();
9474 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009475 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009476 VkPhysicalDevice local_physicalDevice;
9477 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009478 countingStream->rewind();
9479 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009480 uint64_t cgen_var_687;
9481 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_687, 1);
9482 countingStream->write((uint64_t*)&cgen_var_687, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009483 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009484 uint64_t cgen_var_688 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
9485 countingStream->putBe64(cgen_var_688);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009486 if (pQueueFamilyPropertyCount)
9487 {
9488 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
9489 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009490 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009491 uint64_t cgen_var_689 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
9492 countingStream->putBe64(cgen_var_689);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009493 if (pQueueFamilyProperties)
9494 {
9495 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9496 {
9497 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9498 }
9499 }
9500 }
9501 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9502 countingStream->rewind();
9503 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2 = OP_vkGetPhysicalDeviceQueueFamilyProperties2;
9504 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
9505 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009506 uint64_t cgen_var_690;
9507 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_690, 1);
9508 stream->write((uint64_t*)&cgen_var_690, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009509 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009510 uint64_t cgen_var_691 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
9511 stream->putBe64(cgen_var_691);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009512 if (pQueueFamilyPropertyCount)
9513 {
9514 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
9515 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009516 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009517 uint64_t cgen_var_692 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
9518 stream->putBe64(cgen_var_692);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009519 if (pQueueFamilyProperties)
9520 {
9521 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9522 {
9523 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9524 }
9525 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009526 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009527 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009528 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009529 if (pQueueFamilyPropertyCount)
9530 {
9531 if (!(check_pQueueFamilyPropertyCount))
9532 {
9533 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
9534 }
9535 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
9536 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009537 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009538 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009539 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009540 if (pQueueFamilyProperties)
9541 {
9542 if (!(check_pQueueFamilyProperties))
9543 {
9544 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
9545 }
9546 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9547 {
9548 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9549 }
9550 }
9551}
9552
9553void VkEncoder::vkGetPhysicalDeviceMemoryProperties2(
9554 VkPhysicalDevice physicalDevice,
9555 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
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 VkPhysicalDevice local_physicalDevice;
9563 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009564 countingStream->rewind();
9565 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009566 uint64_t cgen_var_695;
9567 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_695, 1);
9568 countingStream->write((uint64_t*)&cgen_var_695, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009569 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9570 }
9571 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9572 countingStream->rewind();
9573 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2 = OP_vkGetPhysicalDeviceMemoryProperties2;
9574 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
9575 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009576 uint64_t cgen_var_696;
9577 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_696, 1);
9578 stream->write((uint64_t*)&cgen_var_696, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009579 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9580 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9581}
9582
9583void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2(
9584 VkPhysicalDevice physicalDevice,
9585 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
9586 uint32_t* pPropertyCount,
9587 VkSparseImageFormatProperties2* pProperties)
9588{
9589 auto stream = mImpl->stream();
9590 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009591 auto resources = mImpl->resources();
9592 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009593 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009594 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009595 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009596 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009597 local_pFormatInfo = nullptr;
9598 if (pFormatInfo)
9599 {
9600 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
9601 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
9602 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009603 if (local_pFormatInfo)
9604 {
9605 transform_VkPhysicalDeviceSparseImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
9606 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009607 countingStream->rewind();
9608 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009609 uint64_t cgen_var_697;
9610 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_697, 1);
9611 countingStream->write((uint64_t*)&cgen_var_697, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009612 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009613 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009614 uint64_t cgen_var_698 = (uint64_t)(uintptr_t)pPropertyCount;
9615 countingStream->putBe64(cgen_var_698);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009616 if (pPropertyCount)
9617 {
9618 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
9619 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009620 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009621 uint64_t cgen_var_699 = (uint64_t)(uintptr_t)pProperties;
9622 countingStream->putBe64(cgen_var_699);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009623 if (pProperties)
9624 {
9625 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9626 {
9627 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
9628 }
9629 }
9630 }
9631 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9632 countingStream->rewind();
9633 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2 = OP_vkGetPhysicalDeviceSparseImageFormatProperties2;
9634 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
9635 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009636 uint64_t cgen_var_700;
9637 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_700, 1);
9638 stream->write((uint64_t*)&cgen_var_700, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009639 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009640 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009641 uint64_t cgen_var_701 = (uint64_t)(uintptr_t)pPropertyCount;
9642 stream->putBe64(cgen_var_701);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009643 if (pPropertyCount)
9644 {
9645 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
9646 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009647 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009648 uint64_t cgen_var_702 = (uint64_t)(uintptr_t)pProperties;
9649 stream->putBe64(cgen_var_702);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009650 if (pProperties)
9651 {
9652 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9653 {
9654 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
9655 }
9656 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009657 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009658 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009659 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009660 if (pPropertyCount)
9661 {
9662 if (!(check_pPropertyCount))
9663 {
9664 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
9665 }
9666 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
9667 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009668 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009669 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009670 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009671 if (pProperties)
9672 {
9673 if (!(check_pProperties))
9674 {
9675 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
9676 }
9677 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9678 {
9679 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
9680 }
9681 }
9682}
9683
9684void VkEncoder::vkTrimCommandPool(
9685 VkDevice device,
9686 VkCommandPool commandPool,
9687 VkCommandPoolTrimFlags flags)
9688{
9689 auto stream = mImpl->stream();
9690 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009691 auto resources = mImpl->resources();
9692 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009693 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009694 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009695 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009696 VkCommandPoolTrimFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009697 local_device = device;
9698 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009699 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009700 countingStream->rewind();
9701 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009702 uint64_t cgen_var_705;
9703 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_705, 1);
9704 countingStream->write((uint64_t*)&cgen_var_705, 1 * 8);
9705 uint64_t cgen_var_706;
9706 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_706, 1);
9707 countingStream->write((uint64_t*)&cgen_var_706, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009708 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009709 }
9710 uint32_t packetSize_vkTrimCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9711 countingStream->rewind();
9712 uint32_t opcode_vkTrimCommandPool = OP_vkTrimCommandPool;
9713 stream->write(&opcode_vkTrimCommandPool, sizeof(uint32_t));
9714 stream->write(&packetSize_vkTrimCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009715 uint64_t cgen_var_707;
9716 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_707, 1);
9717 stream->write((uint64_t*)&cgen_var_707, 1 * 8);
9718 uint64_t cgen_var_708;
9719 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_708, 1);
9720 stream->write((uint64_t*)&cgen_var_708, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009721 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009722}
9723
9724void VkEncoder::vkGetDeviceQueue2(
9725 VkDevice device,
9726 const VkDeviceQueueInfo2* pQueueInfo,
9727 VkQueue* pQueue)
9728{
9729 auto stream = mImpl->stream();
9730 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009731 auto resources = mImpl->resources();
9732 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009733 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009734 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009735 VkDeviceQueueInfo2* local_pQueueInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009736 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009737 local_pQueueInfo = nullptr;
9738 if (pQueueInfo)
9739 {
9740 local_pQueueInfo = (VkDeviceQueueInfo2*)pool->alloc(sizeof(const VkDeviceQueueInfo2));
9741 deepcopy_VkDeviceQueueInfo2(pool, pQueueInfo, (VkDeviceQueueInfo2*)(local_pQueueInfo));
9742 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009743 if (local_pQueueInfo)
9744 {
9745 transform_VkDeviceQueueInfo2(mImpl->resources(), (VkDeviceQueueInfo2*)(local_pQueueInfo));
9746 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009747 countingStream->rewind();
9748 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009749 uint64_t cgen_var_709;
9750 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_709, 1);
9751 countingStream->write((uint64_t*)&cgen_var_709, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009752 marshal_VkDeviceQueueInfo2(countingStream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009753 uint64_t cgen_var_710;
9754 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_710, 1);
9755 countingStream->write((uint64_t*)&cgen_var_710, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009756 }
9757 uint32_t packetSize_vkGetDeviceQueue2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9758 countingStream->rewind();
9759 uint32_t opcode_vkGetDeviceQueue2 = OP_vkGetDeviceQueue2;
9760 stream->write(&opcode_vkGetDeviceQueue2, sizeof(uint32_t));
9761 stream->write(&packetSize_vkGetDeviceQueue2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009762 uint64_t cgen_var_711;
9763 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_711, 1);
9764 stream->write((uint64_t*)&cgen_var_711, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009765 marshal_VkDeviceQueueInfo2(stream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08009766 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009767 uint64_t cgen_var_712;
9768 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_712, 1);
9769 stream->write((uint64_t*)&cgen_var_712, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009770 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009771 uint64_t cgen_var_713;
9772 stream->read((uint64_t*)&cgen_var_713, 8);
9773 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_713, (VkQueue*)pQueue, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009774}
9775
9776VkResult VkEncoder::vkCreateSamplerYcbcrConversion(
9777 VkDevice device,
9778 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
9779 const VkAllocationCallbacks* pAllocator,
9780 VkSamplerYcbcrConversion* pYcbcrConversion)
9781{
9782 auto stream = mImpl->stream();
9783 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009784 auto resources = mImpl->resources();
9785 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009786 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009787 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009788 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009789 VkAllocationCallbacks* local_pAllocator;
9790 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009791 local_pCreateInfo = nullptr;
9792 if (pCreateInfo)
9793 {
9794 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
9795 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
9796 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009797 local_pAllocator = nullptr;
9798 if (pAllocator)
9799 {
9800 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9801 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9802 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009803 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08009804 if (local_pCreateInfo)
9805 {
9806 transform_VkSamplerYcbcrConversionCreateInfo(mImpl->resources(), (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
9807 }
9808 if (local_pAllocator)
9809 {
9810 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
9811 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009812 countingStream->rewind();
9813 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009814 uint64_t cgen_var_714;
9815 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_714, 1);
9816 countingStream->write((uint64_t*)&cgen_var_714, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009817 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009818 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009819 uint64_t cgen_var_715 = (uint64_t)(uintptr_t)local_pAllocator;
9820 countingStream->putBe64(cgen_var_715);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009821 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009822 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009823 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009824 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009825 uint64_t cgen_var_716;
9826 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_716, 1);
9827 countingStream->write((uint64_t*)&cgen_var_716, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009828 }
9829 uint32_t packetSize_vkCreateSamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9830 countingStream->rewind();
9831 uint32_t opcode_vkCreateSamplerYcbcrConversion = OP_vkCreateSamplerYcbcrConversion;
9832 stream->write(&opcode_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
9833 stream->write(&packetSize_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009834 uint64_t cgen_var_717;
9835 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_717, 1);
9836 stream->write((uint64_t*)&cgen_var_717, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009837 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009838 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009839 uint64_t cgen_var_718 = (uint64_t)(uintptr_t)local_pAllocator;
9840 stream->putBe64(cgen_var_718);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009841 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009842 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009843 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009844 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08009845 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009846 uint64_t cgen_var_719;
9847 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_719, 1);
9848 stream->write((uint64_t*)&cgen_var_719, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009849 stream->setHandleMapping(resources->unwrapMapping());
9850 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009851 uint64_t cgen_var_720;
9852 stream->read((uint64_t*)&cgen_var_720, 8);
9853 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_720, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009854 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009855 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
9856 stream->read(&vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009857 countingStream->clearPool();
9858 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009859 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009860 return vkCreateSamplerYcbcrConversion_VkResult_return;
9861}
9862
9863void VkEncoder::vkDestroySamplerYcbcrConversion(
9864 VkDevice device,
9865 VkSamplerYcbcrConversion ycbcrConversion,
9866 const VkAllocationCallbacks* pAllocator)
9867{
9868 auto stream = mImpl->stream();
9869 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009870 auto resources = mImpl->resources();
9871 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009872 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009873 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009874 VkSamplerYcbcrConversion local_ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009875 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009876 local_device = device;
9877 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009878 local_pAllocator = nullptr;
9879 if (pAllocator)
9880 {
9881 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9882 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9883 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009884 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08009885 if (local_pAllocator)
9886 {
9887 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
9888 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009889 countingStream->rewind();
9890 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009891 uint64_t cgen_var_721;
9892 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_721, 1);
9893 countingStream->write((uint64_t*)&cgen_var_721, 1 * 8);
9894 uint64_t cgen_var_722;
9895 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_722, 1);
9896 countingStream->write((uint64_t*)&cgen_var_722, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009897 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009898 uint64_t cgen_var_723 = (uint64_t)(uintptr_t)local_pAllocator;
9899 countingStream->putBe64(cgen_var_723);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009900 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009901 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009902 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009903 }
9904 }
9905 uint32_t packetSize_vkDestroySamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9906 countingStream->rewind();
9907 uint32_t opcode_vkDestroySamplerYcbcrConversion = OP_vkDestroySamplerYcbcrConversion;
9908 stream->write(&opcode_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
9909 stream->write(&packetSize_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009910 uint64_t cgen_var_724;
9911 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_724, 1);
9912 stream->write((uint64_t*)&cgen_var_724, 1 * 8);
9913 uint64_t cgen_var_725;
9914 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_725, 1);
9915 stream->write((uint64_t*)&cgen_var_725, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009916 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009917 uint64_t cgen_var_726 = (uint64_t)(uintptr_t)local_pAllocator;
9918 stream->putBe64(cgen_var_726);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009919 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009920 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009921 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009922 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009923 resources->destroyMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&ycbcrConversion);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009924}
9925
9926VkResult VkEncoder::vkCreateDescriptorUpdateTemplate(
9927 VkDevice device,
9928 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
9929 const VkAllocationCallbacks* pAllocator,
9930 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
9931{
9932 auto stream = mImpl->stream();
9933 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009934 auto resources = mImpl->resources();
9935 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009936 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009937 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009938 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009939 VkAllocationCallbacks* local_pAllocator;
9940 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009941 local_pCreateInfo = nullptr;
9942 if (pCreateInfo)
9943 {
9944 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
9945 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
9946 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009947 local_pAllocator = nullptr;
9948 if (pAllocator)
9949 {
9950 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9951 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9952 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009953 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08009954 if (local_pCreateInfo)
9955 {
9956 transform_VkDescriptorUpdateTemplateCreateInfo(mImpl->resources(), (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
9957 }
9958 if (local_pAllocator)
9959 {
9960 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
9961 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009962 countingStream->rewind();
9963 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009964 uint64_t cgen_var_727;
9965 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_727, 1);
9966 countingStream->write((uint64_t*)&cgen_var_727, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009967 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009968 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009969 uint64_t cgen_var_728 = (uint64_t)(uintptr_t)local_pAllocator;
9970 countingStream->putBe64(cgen_var_728);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009971 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009972 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009973 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009974 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009975 uint64_t cgen_var_729;
9976 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_729, 1);
9977 countingStream->write((uint64_t*)&cgen_var_729, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009978 }
9979 uint32_t packetSize_vkCreateDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9980 countingStream->rewind();
9981 uint32_t opcode_vkCreateDescriptorUpdateTemplate = OP_vkCreateDescriptorUpdateTemplate;
9982 stream->write(&opcode_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
9983 stream->write(&packetSize_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009984 uint64_t cgen_var_730;
9985 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_730, 1);
9986 stream->write((uint64_t*)&cgen_var_730, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009987 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009988 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009989 uint64_t cgen_var_731 = (uint64_t)(uintptr_t)local_pAllocator;
9990 stream->putBe64(cgen_var_731);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009991 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009992 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009993 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009994 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08009995 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009996 uint64_t cgen_var_732;
9997 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_732, 1);
9998 stream->write((uint64_t*)&cgen_var_732, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009999 stream->setHandleMapping(resources->unwrapMapping());
10000 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010001 uint64_t cgen_var_733;
10002 stream->read((uint64_t*)&cgen_var_733, 8);
10003 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_733, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010004 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010005 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
10006 stream->read(&vkCreateDescriptorUpdateTemplate_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010007 countingStream->clearPool();
10008 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010009 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010010 return vkCreateDescriptorUpdateTemplate_VkResult_return;
10011}
10012
10013void VkEncoder::vkDestroyDescriptorUpdateTemplate(
10014 VkDevice device,
10015 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
10016 const VkAllocationCallbacks* pAllocator)
10017{
10018 auto stream = mImpl->stream();
10019 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010020 auto resources = mImpl->resources();
10021 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010022 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010023 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010024 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010025 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010026 local_device = device;
10027 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010028 local_pAllocator = nullptr;
10029 if (pAllocator)
10030 {
10031 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10032 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10033 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010034 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010035 if (local_pAllocator)
10036 {
10037 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
10038 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010039 countingStream->rewind();
10040 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010041 uint64_t cgen_var_734;
10042 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_734, 1);
10043 countingStream->write((uint64_t*)&cgen_var_734, 1 * 8);
10044 uint64_t cgen_var_735;
10045 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_735, 1);
10046 countingStream->write((uint64_t*)&cgen_var_735, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010047 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010048 uint64_t cgen_var_736 = (uint64_t)(uintptr_t)local_pAllocator;
10049 countingStream->putBe64(cgen_var_736);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010050 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010051 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010052 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010053 }
10054 }
10055 uint32_t packetSize_vkDestroyDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10056 countingStream->rewind();
10057 uint32_t opcode_vkDestroyDescriptorUpdateTemplate = OP_vkDestroyDescriptorUpdateTemplate;
10058 stream->write(&opcode_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
10059 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010060 uint64_t cgen_var_737;
10061 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_737, 1);
10062 stream->write((uint64_t*)&cgen_var_737, 1 * 8);
10063 uint64_t cgen_var_738;
10064 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_738, 1);
10065 stream->write((uint64_t*)&cgen_var_738, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010066 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010067 uint64_t cgen_var_739 = (uint64_t)(uintptr_t)local_pAllocator;
10068 stream->putBe64(cgen_var_739);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010069 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010070 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010071 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010072 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010073 resources->destroyMapping()->mapHandles_VkDescriptorUpdateTemplate((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010074}
10075
10076void VkEncoder::vkUpdateDescriptorSetWithTemplate(
10077 VkDevice device,
10078 VkDescriptorSet descriptorSet,
10079 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
10080 const void* pData)
10081{
10082 auto stream = mImpl->stream();
10083 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010084 auto resources = mImpl->resources();
10085 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010086 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010087 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010088 VkDescriptorSet local_descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010089 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010090 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010091 local_device = device;
10092 local_descriptorSet = descriptorSet;
10093 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010094 local_pData = nullptr;
10095 if (pData)
10096 {
10097 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
10098 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010099 countingStream->rewind();
10100 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010101 uint64_t cgen_var_740;
10102 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_740, 1);
10103 countingStream->write((uint64_t*)&cgen_var_740, 1 * 8);
10104 uint64_t cgen_var_741;
10105 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_741, 1);
10106 countingStream->write((uint64_t*)&cgen_var_741, 1 * 8);
10107 uint64_t cgen_var_742;
10108 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_742, 1);
10109 countingStream->write((uint64_t*)&cgen_var_742, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010110 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010111 uint64_t cgen_var_743 = (uint64_t)(uintptr_t)local_pData;
10112 countingStream->putBe64(cgen_var_743);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010113 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010114 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010115 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010116 }
10117 }
10118 uint32_t packetSize_vkUpdateDescriptorSetWithTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10119 countingStream->rewind();
10120 uint32_t opcode_vkUpdateDescriptorSetWithTemplate = OP_vkUpdateDescriptorSetWithTemplate;
10121 stream->write(&opcode_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
10122 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010123 uint64_t cgen_var_744;
10124 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_744, 1);
10125 stream->write((uint64_t*)&cgen_var_744, 1 * 8);
10126 uint64_t cgen_var_745;
10127 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_745, 1);
10128 stream->write((uint64_t*)&cgen_var_745, 1 * 8);
10129 uint64_t cgen_var_746;
10130 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_746, 1);
10131 stream->write((uint64_t*)&cgen_var_746, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010132 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010133 uint64_t cgen_var_747 = (uint64_t)(uintptr_t)local_pData;
10134 stream->putBe64(cgen_var_747);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010135 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010136 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010137 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010138 }
10139}
10140
10141void VkEncoder::vkGetPhysicalDeviceExternalBufferProperties(
10142 VkPhysicalDevice physicalDevice,
10143 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
10144 VkExternalBufferProperties* pExternalBufferProperties)
10145{
10146 auto stream = mImpl->stream();
10147 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010148 auto resources = mImpl->resources();
10149 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010150 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010151 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010152 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010153 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010154 local_pExternalBufferInfo = nullptr;
10155 if (pExternalBufferInfo)
10156 {
10157 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
10158 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
10159 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010160 if (local_pExternalBufferInfo)
10161 {
10162 transform_VkPhysicalDeviceExternalBufferInfo(mImpl->resources(), (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
10163 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010164 countingStream->rewind();
10165 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010166 uint64_t cgen_var_748;
10167 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_748, 1);
10168 countingStream->write((uint64_t*)&cgen_var_748, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010169 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010170 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
10171 }
10172 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10173 countingStream->rewind();
10174 uint32_t opcode_vkGetPhysicalDeviceExternalBufferProperties = OP_vkGetPhysicalDeviceExternalBufferProperties;
10175 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
10176 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010177 uint64_t cgen_var_749;
10178 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_749, 1);
10179 stream->write((uint64_t*)&cgen_var_749, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010180 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010181 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
10182 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
10183}
10184
10185void VkEncoder::vkGetPhysicalDeviceExternalFenceProperties(
10186 VkPhysicalDevice physicalDevice,
10187 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
10188 VkExternalFenceProperties* pExternalFenceProperties)
10189{
10190 auto stream = mImpl->stream();
10191 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010192 auto resources = mImpl->resources();
10193 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010194 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010195 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010196 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010197 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010198 local_pExternalFenceInfo = nullptr;
10199 if (pExternalFenceInfo)
10200 {
10201 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
10202 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
10203 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010204 if (local_pExternalFenceInfo)
10205 {
10206 transform_VkPhysicalDeviceExternalFenceInfo(mImpl->resources(), (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
10207 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010208 countingStream->rewind();
10209 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010210 uint64_t cgen_var_750;
10211 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_750, 1);
10212 countingStream->write((uint64_t*)&cgen_var_750, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010213 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010214 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
10215 }
10216 uint32_t packetSize_vkGetPhysicalDeviceExternalFenceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10217 countingStream->rewind();
10218 uint32_t opcode_vkGetPhysicalDeviceExternalFenceProperties = OP_vkGetPhysicalDeviceExternalFenceProperties;
10219 stream->write(&opcode_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
10220 stream->write(&packetSize_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010221 uint64_t cgen_var_751;
10222 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_751, 1);
10223 stream->write((uint64_t*)&cgen_var_751, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010224 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010225 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
10226 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
10227}
10228
10229void VkEncoder::vkGetPhysicalDeviceExternalSemaphoreProperties(
10230 VkPhysicalDevice physicalDevice,
10231 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
10232 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
10233{
10234 auto stream = mImpl->stream();
10235 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010236 auto resources = mImpl->resources();
10237 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010238 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010239 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010240 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010241 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010242 local_pExternalSemaphoreInfo = nullptr;
10243 if (pExternalSemaphoreInfo)
10244 {
10245 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
10246 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
10247 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010248 if (local_pExternalSemaphoreInfo)
10249 {
10250 transform_VkPhysicalDeviceExternalSemaphoreInfo(mImpl->resources(), (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
10251 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010252 countingStream->rewind();
10253 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010254 uint64_t cgen_var_752;
10255 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_752, 1);
10256 countingStream->write((uint64_t*)&cgen_var_752, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010257 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010258 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
10259 }
10260 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10261 countingStream->rewind();
10262 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphoreProperties = OP_vkGetPhysicalDeviceExternalSemaphoreProperties;
10263 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
10264 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010265 uint64_t cgen_var_753;
10266 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_753, 1);
10267 stream->write((uint64_t*)&cgen_var_753, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010268 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010269 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
10270 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
10271}
10272
10273void VkEncoder::vkGetDescriptorSetLayoutSupport(
10274 VkDevice device,
10275 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
10276 VkDescriptorSetLayoutSupport* pSupport)
10277{
10278 auto stream = mImpl->stream();
10279 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010280 auto resources = mImpl->resources();
10281 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010282 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010283 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010284 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010285 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010286 local_pCreateInfo = nullptr;
10287 if (pCreateInfo)
10288 {
10289 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
10290 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
10291 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010292 if (local_pCreateInfo)
10293 {
10294 transform_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
10295 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010296 countingStream->rewind();
10297 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010298 uint64_t cgen_var_754;
10299 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_754, 1);
10300 countingStream->write((uint64_t*)&cgen_var_754, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010301 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010302 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
10303 }
10304 uint32_t packetSize_vkGetDescriptorSetLayoutSupport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10305 countingStream->rewind();
10306 uint32_t opcode_vkGetDescriptorSetLayoutSupport = OP_vkGetDescriptorSetLayoutSupport;
10307 stream->write(&opcode_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
10308 stream->write(&packetSize_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010309 uint64_t cgen_var_755;
10310 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_755, 1);
10311 stream->write((uint64_t*)&cgen_var_755, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010312 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010313 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
10314 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
10315}
10316
10317#endif
10318#ifdef VK_KHR_surface
10319void VkEncoder::vkDestroySurfaceKHR(
10320 VkInstance instance,
10321 VkSurfaceKHR surface,
10322 const VkAllocationCallbacks* pAllocator)
10323{
10324 auto stream = mImpl->stream();
10325 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010326 auto resources = mImpl->resources();
10327 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010328 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010329 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010330 VkSurfaceKHR local_surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010331 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010332 local_instance = instance;
10333 local_surface = surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010334 local_pAllocator = nullptr;
10335 if (pAllocator)
10336 {
10337 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10338 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10339 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010340 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010341 if (local_pAllocator)
10342 {
10343 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
10344 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010345 countingStream->rewind();
10346 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010347 uint64_t cgen_var_756;
10348 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_756, 1);
10349 countingStream->write((uint64_t*)&cgen_var_756, 1 * 8);
10350 uint64_t cgen_var_757;
10351 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_757, 1);
10352 countingStream->write((uint64_t*)&cgen_var_757, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010353 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010354 uint64_t cgen_var_758 = (uint64_t)(uintptr_t)local_pAllocator;
10355 countingStream->putBe64(cgen_var_758);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010356 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010357 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010358 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010359 }
10360 }
10361 uint32_t packetSize_vkDestroySurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10362 countingStream->rewind();
10363 uint32_t opcode_vkDestroySurfaceKHR = OP_vkDestroySurfaceKHR;
10364 stream->write(&opcode_vkDestroySurfaceKHR, sizeof(uint32_t));
10365 stream->write(&packetSize_vkDestroySurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010366 uint64_t cgen_var_759;
10367 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_759, 1);
10368 stream->write((uint64_t*)&cgen_var_759, 1 * 8);
10369 uint64_t cgen_var_760;
10370 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_760, 1);
10371 stream->write((uint64_t*)&cgen_var_760, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010372 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010373 uint64_t cgen_var_761 = (uint64_t)(uintptr_t)local_pAllocator;
10374 stream->putBe64(cgen_var_761);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010375 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010376 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010377 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010378 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010379 resources->destroyMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&surface);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010380}
10381
10382VkResult VkEncoder::vkGetPhysicalDeviceSurfaceSupportKHR(
10383 VkPhysicalDevice physicalDevice,
10384 uint32_t queueFamilyIndex,
10385 VkSurfaceKHR surface,
10386 VkBool32* pSupported)
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 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010394 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010395 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010396 local_physicalDevice = physicalDevice;
10397 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010398 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010399 countingStream->rewind();
10400 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010401 uint64_t cgen_var_762;
10402 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_762, 1);
10403 countingStream->write((uint64_t*)&cgen_var_762, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010404 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010405 uint64_t cgen_var_763;
10406 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_763, 1);
10407 countingStream->write((uint64_t*)&cgen_var_763, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010408 countingStream->write((VkBool32*)pSupported, sizeof(VkBool32));
10409 }
10410 uint32_t packetSize_vkGetPhysicalDeviceSurfaceSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10411 countingStream->rewind();
10412 uint32_t opcode_vkGetPhysicalDeviceSurfaceSupportKHR = OP_vkGetPhysicalDeviceSurfaceSupportKHR;
10413 stream->write(&opcode_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
10414 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010415 uint64_t cgen_var_764;
10416 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_764, 1);
10417 stream->write((uint64_t*)&cgen_var_764, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010418 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010419 uint64_t cgen_var_765;
10420 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_765, 1);
10421 stream->write((uint64_t*)&cgen_var_765, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010422 stream->write((VkBool32*)pSupported, sizeof(VkBool32));
10423 stream->read((VkBool32*)pSupported, sizeof(VkBool32));
10424 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
10425 stream->read(&vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010426 countingStream->clearPool();
10427 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010428 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010429 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
10430}
10431
10432VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
10433 VkPhysicalDevice physicalDevice,
10434 VkSurfaceKHR surface,
10435 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
10436{
10437 auto stream = mImpl->stream();
10438 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010439 auto resources = mImpl->resources();
10440 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010441 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010442 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010443 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010444 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010445 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010446 countingStream->rewind();
10447 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010448 uint64_t cgen_var_766;
10449 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_766, 1);
10450 countingStream->write((uint64_t*)&cgen_var_766, 1 * 8);
10451 uint64_t cgen_var_767;
10452 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_767, 1);
10453 countingStream->write((uint64_t*)&cgen_var_767, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010454 marshal_VkSurfaceCapabilitiesKHR(countingStream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
10455 }
10456 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10457 countingStream->rewind();
10458 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
10459 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
10460 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010461 uint64_t cgen_var_768;
10462 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_768, 1);
10463 stream->write((uint64_t*)&cgen_var_768, 1 * 8);
10464 uint64_t cgen_var_769;
10465 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_769, 1);
10466 stream->write((uint64_t*)&cgen_var_769, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010467 marshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
10468 unmarshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
10469 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
10470 stream->read(&vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010471 countingStream->clearPool();
10472 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010473 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010474 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
10475}
10476
10477VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormatsKHR(
10478 VkPhysicalDevice physicalDevice,
10479 VkSurfaceKHR surface,
10480 uint32_t* pSurfaceFormatCount,
10481 VkSurfaceFormatKHR* pSurfaceFormats)
10482{
10483 auto stream = mImpl->stream();
10484 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010485 auto resources = mImpl->resources();
10486 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010487 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010488 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010489 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010490 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010491 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010492 countingStream->rewind();
10493 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010494 uint64_t cgen_var_770;
10495 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_770, 1);
10496 countingStream->write((uint64_t*)&cgen_var_770, 1 * 8);
10497 uint64_t cgen_var_771;
10498 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_771, 1);
10499 countingStream->write((uint64_t*)&cgen_var_771, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010500 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010501 uint64_t cgen_var_772 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
10502 countingStream->putBe64(cgen_var_772);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010503 if (pSurfaceFormatCount)
10504 {
10505 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
10506 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010507 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010508 uint64_t cgen_var_773 = (uint64_t)(uintptr_t)pSurfaceFormats;
10509 countingStream->putBe64(cgen_var_773);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010510 if (pSurfaceFormats)
10511 {
10512 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
10513 {
10514 marshal_VkSurfaceFormatKHR(countingStream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
10515 }
10516 }
10517 }
10518 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10519 countingStream->rewind();
10520 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormatsKHR = OP_vkGetPhysicalDeviceSurfaceFormatsKHR;
10521 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
10522 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010523 uint64_t cgen_var_774;
10524 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_774, 1);
10525 stream->write((uint64_t*)&cgen_var_774, 1 * 8);
10526 uint64_t cgen_var_775;
10527 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_775, 1);
10528 stream->write((uint64_t*)&cgen_var_775, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010529 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010530 uint64_t cgen_var_776 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
10531 stream->putBe64(cgen_var_776);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010532 if (pSurfaceFormatCount)
10533 {
10534 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
10535 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010536 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010537 uint64_t cgen_var_777 = (uint64_t)(uintptr_t)pSurfaceFormats;
10538 stream->putBe64(cgen_var_777);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010539 if (pSurfaceFormats)
10540 {
10541 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
10542 {
10543 marshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
10544 }
10545 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010546 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010547 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010548 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010549 if (pSurfaceFormatCount)
10550 {
10551 if (!(check_pSurfaceFormatCount))
10552 {
10553 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
10554 }
10555 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
10556 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010557 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010558 VkSurfaceFormatKHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010559 check_pSurfaceFormats = (VkSurfaceFormatKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010560 if (pSurfaceFormats)
10561 {
10562 if (!(check_pSurfaceFormats))
10563 {
10564 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
10565 }
10566 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
10567 {
10568 unmarshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
10569 }
10570 }
10571 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
10572 stream->read(&vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010573 countingStream->clearPool();
10574 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010575 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010576 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
10577}
10578
10579VkResult VkEncoder::vkGetPhysicalDeviceSurfacePresentModesKHR(
10580 VkPhysicalDevice physicalDevice,
10581 VkSurfaceKHR surface,
10582 uint32_t* pPresentModeCount,
10583 VkPresentModeKHR* pPresentModes)
10584{
10585 auto stream = mImpl->stream();
10586 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010587 auto resources = mImpl->resources();
10588 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010589 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010590 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010591 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010592 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010593 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010594 countingStream->rewind();
10595 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010596 uint64_t cgen_var_780;
10597 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_780, 1);
10598 countingStream->write((uint64_t*)&cgen_var_780, 1 * 8);
10599 uint64_t cgen_var_781;
10600 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_781, 1);
10601 countingStream->write((uint64_t*)&cgen_var_781, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010602 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010603 uint64_t cgen_var_782 = (uint64_t)(uintptr_t)pPresentModeCount;
10604 countingStream->putBe64(cgen_var_782);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010605 if (pPresentModeCount)
10606 {
10607 countingStream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10608 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010609 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010610 uint64_t cgen_var_783 = (uint64_t)(uintptr_t)pPresentModes;
10611 countingStream->putBe64(cgen_var_783);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010612 if (pPresentModes)
10613 {
10614 countingStream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10615 }
10616 }
10617 uint32_t packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10618 countingStream->rewind();
10619 uint32_t opcode_vkGetPhysicalDeviceSurfacePresentModesKHR = OP_vkGetPhysicalDeviceSurfacePresentModesKHR;
10620 stream->write(&opcode_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
10621 stream->write(&packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010622 uint64_t cgen_var_784;
10623 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_784, 1);
10624 stream->write((uint64_t*)&cgen_var_784, 1 * 8);
10625 uint64_t cgen_var_785;
10626 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_785, 1);
10627 stream->write((uint64_t*)&cgen_var_785, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010628 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010629 uint64_t cgen_var_786 = (uint64_t)(uintptr_t)pPresentModeCount;
10630 stream->putBe64(cgen_var_786);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010631 if (pPresentModeCount)
10632 {
10633 stream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10634 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010635 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010636 uint64_t cgen_var_787 = (uint64_t)(uintptr_t)pPresentModes;
10637 stream->putBe64(cgen_var_787);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010638 if (pPresentModes)
10639 {
10640 stream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10641 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010642 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010643 uint32_t* check_pPresentModeCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010644 check_pPresentModeCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010645 if (pPresentModeCount)
10646 {
10647 if (!(check_pPresentModeCount))
10648 {
10649 fprintf(stderr, "fatal: pPresentModeCount inconsistent between guest and host\n");
10650 }
10651 stream->read((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10652 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010653 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010654 VkPresentModeKHR* check_pPresentModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010655 check_pPresentModes = (VkPresentModeKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010656 if (pPresentModes)
10657 {
10658 if (!(check_pPresentModes))
10659 {
10660 fprintf(stderr, "fatal: pPresentModes inconsistent between guest and host\n");
10661 }
10662 stream->read((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10663 }
10664 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
10665 stream->read(&vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010666 countingStream->clearPool();
10667 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010668 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010669 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
10670}
10671
10672#endif
10673#ifdef VK_KHR_swapchain
10674VkResult VkEncoder::vkCreateSwapchainKHR(
10675 VkDevice device,
10676 const VkSwapchainCreateInfoKHR* pCreateInfo,
10677 const VkAllocationCallbacks* pAllocator,
10678 VkSwapchainKHR* pSwapchain)
10679{
10680 auto stream = mImpl->stream();
10681 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010682 auto resources = mImpl->resources();
10683 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010684 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010685 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010686 VkSwapchainCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010687 VkAllocationCallbacks* local_pAllocator;
10688 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010689 local_pCreateInfo = nullptr;
10690 if (pCreateInfo)
10691 {
10692 local_pCreateInfo = (VkSwapchainCreateInfoKHR*)pool->alloc(sizeof(const VkSwapchainCreateInfoKHR));
10693 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfo, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
10694 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010695 local_pAllocator = nullptr;
10696 if (pAllocator)
10697 {
10698 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10699 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10700 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010701 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010702 if (local_pCreateInfo)
10703 {
10704 transform_VkSwapchainCreateInfoKHR(mImpl->resources(), (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
10705 }
10706 if (local_pAllocator)
10707 {
10708 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
10709 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010710 countingStream->rewind();
10711 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010712 uint64_t cgen_var_790;
10713 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_790, 1);
10714 countingStream->write((uint64_t*)&cgen_var_790, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010715 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010716 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010717 uint64_t cgen_var_791 = (uint64_t)(uintptr_t)local_pAllocator;
10718 countingStream->putBe64(cgen_var_791);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010719 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010720 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010721 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010722 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010723 uint64_t cgen_var_792;
10724 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_792, 1);
10725 countingStream->write((uint64_t*)&cgen_var_792, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010726 }
10727 uint32_t packetSize_vkCreateSwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10728 countingStream->rewind();
10729 uint32_t opcode_vkCreateSwapchainKHR = OP_vkCreateSwapchainKHR;
10730 stream->write(&opcode_vkCreateSwapchainKHR, sizeof(uint32_t));
10731 stream->write(&packetSize_vkCreateSwapchainKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010732 uint64_t cgen_var_793;
10733 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_793, 1);
10734 stream->write((uint64_t*)&cgen_var_793, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010735 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010736 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010737 uint64_t cgen_var_794 = (uint64_t)(uintptr_t)local_pAllocator;
10738 stream->putBe64(cgen_var_794);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010739 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010740 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010741 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010742 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010743 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010744 uint64_t cgen_var_795;
10745 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_795, 1);
10746 stream->write((uint64_t*)&cgen_var_795, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010747 stream->setHandleMapping(resources->unwrapMapping());
10748 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010749 uint64_t cgen_var_796;
10750 stream->read((uint64_t*)&cgen_var_796, 8);
10751 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(&cgen_var_796, (VkSwapchainKHR*)pSwapchain, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010752 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010753 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
10754 stream->read(&vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010755 countingStream->clearPool();
10756 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010757 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010758 return vkCreateSwapchainKHR_VkResult_return;
10759}
10760
10761void VkEncoder::vkDestroySwapchainKHR(
10762 VkDevice device,
10763 VkSwapchainKHR swapchain,
10764 const VkAllocationCallbacks* pAllocator)
10765{
10766 auto stream = mImpl->stream();
10767 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010768 auto resources = mImpl->resources();
10769 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010770 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010771 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010772 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010773 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010774 local_device = device;
10775 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010776 local_pAllocator = nullptr;
10777 if (pAllocator)
10778 {
10779 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10780 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10781 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010782 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010783 if (local_pAllocator)
10784 {
10785 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
10786 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010787 countingStream->rewind();
10788 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010789 uint64_t cgen_var_797;
10790 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_797, 1);
10791 countingStream->write((uint64_t*)&cgen_var_797, 1 * 8);
10792 uint64_t cgen_var_798;
10793 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_798, 1);
10794 countingStream->write((uint64_t*)&cgen_var_798, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010795 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010796 uint64_t cgen_var_799 = (uint64_t)(uintptr_t)local_pAllocator;
10797 countingStream->putBe64(cgen_var_799);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010798 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010799 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010800 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010801 }
10802 }
10803 uint32_t packetSize_vkDestroySwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10804 countingStream->rewind();
10805 uint32_t opcode_vkDestroySwapchainKHR = OP_vkDestroySwapchainKHR;
10806 stream->write(&opcode_vkDestroySwapchainKHR, sizeof(uint32_t));
10807 stream->write(&packetSize_vkDestroySwapchainKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010808 uint64_t cgen_var_800;
10809 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_800, 1);
10810 stream->write((uint64_t*)&cgen_var_800, 1 * 8);
10811 uint64_t cgen_var_801;
10812 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_801, 1);
10813 stream->write((uint64_t*)&cgen_var_801, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010814 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010815 uint64_t cgen_var_802 = (uint64_t)(uintptr_t)local_pAllocator;
10816 stream->putBe64(cgen_var_802);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010817 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010818 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010819 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010820 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010821 resources->destroyMapping()->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&swapchain);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010822}
10823
10824VkResult VkEncoder::vkGetSwapchainImagesKHR(
10825 VkDevice device,
10826 VkSwapchainKHR swapchain,
10827 uint32_t* pSwapchainImageCount,
10828 VkImage* pSwapchainImages)
10829{
10830 auto stream = mImpl->stream();
10831 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010832 auto resources = mImpl->resources();
10833 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010834 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010835 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010836 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010837 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010838 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010839 countingStream->rewind();
10840 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010841 uint64_t cgen_var_803;
10842 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_803, 1);
10843 countingStream->write((uint64_t*)&cgen_var_803, 1 * 8);
10844 uint64_t cgen_var_804;
10845 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_804, 1);
10846 countingStream->write((uint64_t*)&cgen_var_804, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010847 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010848 uint64_t cgen_var_805 = (uint64_t)(uintptr_t)pSwapchainImageCount;
10849 countingStream->putBe64(cgen_var_805);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010850 if (pSwapchainImageCount)
10851 {
10852 countingStream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
10853 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010854 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010855 uint64_t cgen_var_806 = (uint64_t)(uintptr_t)pSwapchainImages;
10856 countingStream->putBe64(cgen_var_806);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010857 if (pSwapchainImages)
10858 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010859 if ((*(pSwapchainImageCount)))
10860 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010861 uint64_t* cgen_var_807;
10862 countingStream->alloc((void**)&cgen_var_807, (*(pSwapchainImageCount)) * 8);
10863 countingStream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_807, (*(pSwapchainImageCount)));
10864 countingStream->write((uint64_t*)cgen_var_807, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010865 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010866 }
10867 }
10868 uint32_t packetSize_vkGetSwapchainImagesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10869 countingStream->rewind();
10870 uint32_t opcode_vkGetSwapchainImagesKHR = OP_vkGetSwapchainImagesKHR;
10871 stream->write(&opcode_vkGetSwapchainImagesKHR, sizeof(uint32_t));
10872 stream->write(&packetSize_vkGetSwapchainImagesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010873 uint64_t cgen_var_808;
10874 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_808, 1);
10875 stream->write((uint64_t*)&cgen_var_808, 1 * 8);
10876 uint64_t cgen_var_809;
10877 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_809, 1);
10878 stream->write((uint64_t*)&cgen_var_809, 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_810 = (uint64_t)(uintptr_t)pSwapchainImageCount;
10881 stream->putBe64(cgen_var_810);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010882 if (pSwapchainImageCount)
10883 {
10884 stream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
10885 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010886 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010887 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010888 uint64_t cgen_var_811 = (uint64_t)(uintptr_t)pSwapchainImages;
10889 stream->putBe64(cgen_var_811);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010890 if (pSwapchainImages)
10891 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010892 if ((*(pSwapchainImageCount)))
10893 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010894 uint64_t* cgen_var_812;
10895 stream->alloc((void**)&cgen_var_812, (*(pSwapchainImageCount)) * 8);
10896 stream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_812, (*(pSwapchainImageCount)));
10897 stream->write((uint64_t*)cgen_var_812, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010898 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010899 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010900 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010901 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010902 uint32_t* check_pSwapchainImageCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010903 check_pSwapchainImageCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010904 if (pSwapchainImageCount)
10905 {
10906 if (!(check_pSwapchainImageCount))
10907 {
10908 fprintf(stderr, "fatal: pSwapchainImageCount inconsistent between guest and host\n");
10909 }
10910 stream->read((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
10911 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010912 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010913 VkImage* check_pSwapchainImages;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010914 check_pSwapchainImages = (VkImage*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010915 if (pSwapchainImages)
10916 {
10917 if (!(check_pSwapchainImages))
10918 {
10919 fprintf(stderr, "fatal: pSwapchainImages inconsistent between guest and host\n");
10920 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080010921 if ((*(pSwapchainImageCount)))
10922 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010923 uint64_t* cgen_var_815;
10924 stream->alloc((void**)&cgen_var_815, (*(pSwapchainImageCount)) * 8);
10925 stream->read((uint64_t*)cgen_var_815, (*(pSwapchainImageCount)) * 8);
10926 stream->handleMapping()->mapHandles_u64_VkImage(cgen_var_815, (VkImage*)pSwapchainImages, (*(pSwapchainImageCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010927 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010928 }
10929 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
10930 stream->read(&vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010931 countingStream->clearPool();
10932 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010933 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010934 return vkGetSwapchainImagesKHR_VkResult_return;
10935}
10936
10937VkResult VkEncoder::vkAcquireNextImageKHR(
10938 VkDevice device,
10939 VkSwapchainKHR swapchain,
10940 uint64_t timeout,
10941 VkSemaphore semaphore,
10942 VkFence fence,
10943 uint32_t* pImageIndex)
10944{
10945 auto stream = mImpl->stream();
10946 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010947 auto resources = mImpl->resources();
10948 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010949 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010950 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010951 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010952 uint64_t local_timeout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010953 VkSemaphore local_semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010954 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010955 local_device = device;
10956 local_swapchain = swapchain;
10957 local_timeout = timeout;
10958 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010959 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010960 countingStream->rewind();
10961 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010962 uint64_t cgen_var_816;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010963 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_816, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010964 countingStream->write((uint64_t*)&cgen_var_816, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010965 uint64_t cgen_var_817;
10966 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_817, 1);
10967 countingStream->write((uint64_t*)&cgen_var_817, 1 * 8);
10968 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
10969 uint64_t cgen_var_818;
10970 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_818, 1);
10971 countingStream->write((uint64_t*)&cgen_var_818, 1 * 8);
10972 uint64_t cgen_var_819;
10973 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_819, 1);
10974 countingStream->write((uint64_t*)&cgen_var_819, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010975 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10976 }
10977 uint32_t packetSize_vkAcquireNextImageKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10978 countingStream->rewind();
10979 uint32_t opcode_vkAcquireNextImageKHR = OP_vkAcquireNextImageKHR;
10980 stream->write(&opcode_vkAcquireNextImageKHR, sizeof(uint32_t));
10981 stream->write(&packetSize_vkAcquireNextImageKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010982 uint64_t cgen_var_820;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010983 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_820, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010984 stream->write((uint64_t*)&cgen_var_820, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010985 uint64_t cgen_var_821;
10986 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_821, 1);
10987 stream->write((uint64_t*)&cgen_var_821, 1 * 8);
10988 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
10989 uint64_t cgen_var_822;
10990 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_822, 1);
10991 stream->write((uint64_t*)&cgen_var_822, 1 * 8);
10992 uint64_t cgen_var_823;
10993 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_823, 1);
10994 stream->write((uint64_t*)&cgen_var_823, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010995 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10996 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
10997 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
10998 stream->read(&vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010999 countingStream->clearPool();
11000 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011001 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011002 return vkAcquireNextImageKHR_VkResult_return;
11003}
11004
11005VkResult VkEncoder::vkQueuePresentKHR(
11006 VkQueue queue,
11007 const VkPresentInfoKHR* pPresentInfo)
11008{
11009 auto stream = mImpl->stream();
11010 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011011 auto resources = mImpl->resources();
11012 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011013 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011014 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011015 VkPresentInfoKHR* local_pPresentInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011016 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011017 local_pPresentInfo = nullptr;
11018 if (pPresentInfo)
11019 {
11020 local_pPresentInfo = (VkPresentInfoKHR*)pool->alloc(sizeof(const VkPresentInfoKHR));
11021 deepcopy_VkPresentInfoKHR(pool, pPresentInfo, (VkPresentInfoKHR*)(local_pPresentInfo));
11022 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080011023 if (local_pPresentInfo)
11024 {
11025 transform_VkPresentInfoKHR(mImpl->resources(), (VkPresentInfoKHR*)(local_pPresentInfo));
11026 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011027 countingStream->rewind();
11028 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011029 uint64_t cgen_var_824;
11030 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_824, 1);
11031 countingStream->write((uint64_t*)&cgen_var_824, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011032 marshal_VkPresentInfoKHR(countingStream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011033 }
11034 uint32_t packetSize_vkQueuePresentKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11035 countingStream->rewind();
11036 uint32_t opcode_vkQueuePresentKHR = OP_vkQueuePresentKHR;
11037 stream->write(&opcode_vkQueuePresentKHR, sizeof(uint32_t));
11038 stream->write(&packetSize_vkQueuePresentKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011039 uint64_t cgen_var_825;
11040 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_825, 1);
11041 stream->write((uint64_t*)&cgen_var_825, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011042 marshal_VkPresentInfoKHR(stream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011043 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
11044 stream->read(&vkQueuePresentKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011045 countingStream->clearPool();
11046 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011047 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011048 return vkQueuePresentKHR_VkResult_return;
11049}
11050
11051VkResult VkEncoder::vkGetDeviceGroupPresentCapabilitiesKHR(
11052 VkDevice device,
11053 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
11054{
11055 auto stream = mImpl->stream();
11056 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011057 auto resources = mImpl->resources();
11058 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011059 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011060 VkDevice local_device;
11061 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011062 countingStream->rewind();
11063 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011064 uint64_t cgen_var_826;
11065 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_826, 1);
11066 countingStream->write((uint64_t*)&cgen_var_826, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011067 marshal_VkDeviceGroupPresentCapabilitiesKHR(countingStream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
11068 }
11069 uint32_t packetSize_vkGetDeviceGroupPresentCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11070 countingStream->rewind();
11071 uint32_t opcode_vkGetDeviceGroupPresentCapabilitiesKHR = OP_vkGetDeviceGroupPresentCapabilitiesKHR;
11072 stream->write(&opcode_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
11073 stream->write(&packetSize_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011074 uint64_t cgen_var_827;
11075 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_827, 1);
11076 stream->write((uint64_t*)&cgen_var_827, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011077 marshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
11078 unmarshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
11079 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
11080 stream->read(&vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011081 countingStream->clearPool();
11082 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011083 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011084 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
11085}
11086
11087VkResult VkEncoder::vkGetDeviceGroupSurfacePresentModesKHR(
11088 VkDevice device,
11089 VkSurfaceKHR surface,
11090 VkDeviceGroupPresentModeFlagsKHR* pModes)
11091{
11092 auto stream = mImpl->stream();
11093 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011094 auto resources = mImpl->resources();
11095 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011096 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011097 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011098 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011099 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011100 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011101 countingStream->rewind();
11102 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011103 uint64_t cgen_var_828;
11104 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_828, 1);
11105 countingStream->write((uint64_t*)&cgen_var_828, 1 * 8);
11106 uint64_t cgen_var_829;
11107 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_829, 1);
11108 countingStream->write((uint64_t*)&cgen_var_829, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011109 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011110 uint64_t cgen_var_830 = (uint64_t)(uintptr_t)pModes;
11111 countingStream->putBe64(cgen_var_830);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011112 if (pModes)
11113 {
11114 countingStream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
11115 }
11116 }
11117 uint32_t packetSize_vkGetDeviceGroupSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11118 countingStream->rewind();
11119 uint32_t opcode_vkGetDeviceGroupSurfacePresentModesKHR = OP_vkGetDeviceGroupSurfacePresentModesKHR;
11120 stream->write(&opcode_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
11121 stream->write(&packetSize_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011122 uint64_t cgen_var_831;
11123 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_831, 1);
11124 stream->write((uint64_t*)&cgen_var_831, 1 * 8);
11125 uint64_t cgen_var_832;
11126 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_832, 1);
11127 stream->write((uint64_t*)&cgen_var_832, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011128 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011129 uint64_t cgen_var_833 = (uint64_t)(uintptr_t)pModes;
11130 stream->putBe64(cgen_var_833);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011131 if (pModes)
11132 {
11133 stream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
11134 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011135 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011136 VkDeviceGroupPresentModeFlagsKHR* check_pModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011137 check_pModes = (VkDeviceGroupPresentModeFlagsKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011138 if (pModes)
11139 {
11140 if (!(check_pModes))
11141 {
11142 fprintf(stderr, "fatal: pModes inconsistent between guest and host\n");
11143 }
11144 stream->read((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
11145 }
11146 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
11147 stream->read(&vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011148 countingStream->clearPool();
11149 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011150 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011151 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
11152}
11153
11154VkResult VkEncoder::vkGetPhysicalDevicePresentRectanglesKHR(
11155 VkPhysicalDevice physicalDevice,
11156 VkSurfaceKHR surface,
11157 uint32_t* pRectCount,
11158 VkRect2D* pRects)
11159{
11160 auto stream = mImpl->stream();
11161 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011162 auto resources = mImpl->resources();
11163 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011164 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011165 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011166 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011167 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011168 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011169 countingStream->rewind();
11170 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011171 uint64_t cgen_var_835;
11172 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_835, 1);
11173 countingStream->write((uint64_t*)&cgen_var_835, 1 * 8);
11174 uint64_t cgen_var_836;
11175 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_836, 1);
11176 countingStream->write((uint64_t*)&cgen_var_836, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011177 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011178 uint64_t cgen_var_837 = (uint64_t)(uintptr_t)pRectCount;
11179 countingStream->putBe64(cgen_var_837);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011180 if (pRectCount)
11181 {
11182 countingStream->write((uint32_t*)pRectCount, sizeof(uint32_t));
11183 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011184 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011185 uint64_t cgen_var_838 = (uint64_t)(uintptr_t)pRects;
11186 countingStream->putBe64(cgen_var_838);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011187 if (pRects)
11188 {
11189 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11190 {
11191 marshal_VkRect2D(countingStream, (VkRect2D*)(pRects + i));
11192 }
11193 }
11194 }
11195 uint32_t packetSize_vkGetPhysicalDevicePresentRectanglesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11196 countingStream->rewind();
11197 uint32_t opcode_vkGetPhysicalDevicePresentRectanglesKHR = OP_vkGetPhysicalDevicePresentRectanglesKHR;
11198 stream->write(&opcode_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
11199 stream->write(&packetSize_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011200 uint64_t cgen_var_839;
11201 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_839, 1);
11202 stream->write((uint64_t*)&cgen_var_839, 1 * 8);
11203 uint64_t cgen_var_840;
11204 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_840, 1);
11205 stream->write((uint64_t*)&cgen_var_840, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011206 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011207 uint64_t cgen_var_841 = (uint64_t)(uintptr_t)pRectCount;
11208 stream->putBe64(cgen_var_841);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011209 if (pRectCount)
11210 {
11211 stream->write((uint32_t*)pRectCount, sizeof(uint32_t));
11212 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011213 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011214 uint64_t cgen_var_842 = (uint64_t)(uintptr_t)pRects;
11215 stream->putBe64(cgen_var_842);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011216 if (pRects)
11217 {
11218 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11219 {
11220 marshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
11221 }
11222 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011223 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011224 uint32_t* check_pRectCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011225 check_pRectCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011226 if (pRectCount)
11227 {
11228 if (!(check_pRectCount))
11229 {
11230 fprintf(stderr, "fatal: pRectCount inconsistent between guest and host\n");
11231 }
11232 stream->read((uint32_t*)pRectCount, sizeof(uint32_t));
11233 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011234 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011235 VkRect2D* check_pRects;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011236 check_pRects = (VkRect2D*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011237 if (pRects)
11238 {
11239 if (!(check_pRects))
11240 {
11241 fprintf(stderr, "fatal: pRects inconsistent between guest and host\n");
11242 }
11243 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11244 {
11245 unmarshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
11246 }
11247 }
11248 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
11249 stream->read(&vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011250 countingStream->clearPool();
11251 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011252 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011253 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
11254}
11255
11256VkResult VkEncoder::vkAcquireNextImage2KHR(
11257 VkDevice device,
11258 const VkAcquireNextImageInfoKHR* pAcquireInfo,
11259 uint32_t* pImageIndex)
11260{
11261 auto stream = mImpl->stream();
11262 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011263 auto resources = mImpl->resources();
11264 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011265 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011266 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011267 VkAcquireNextImageInfoKHR* local_pAcquireInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011268 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011269 local_pAcquireInfo = nullptr;
11270 if (pAcquireInfo)
11271 {
11272 local_pAcquireInfo = (VkAcquireNextImageInfoKHR*)pool->alloc(sizeof(const VkAcquireNextImageInfoKHR));
11273 deepcopy_VkAcquireNextImageInfoKHR(pool, pAcquireInfo, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
11274 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080011275 if (local_pAcquireInfo)
11276 {
11277 transform_VkAcquireNextImageInfoKHR(mImpl->resources(), (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
11278 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011279 countingStream->rewind();
11280 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011281 uint64_t cgen_var_845;
11282 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_845, 1);
11283 countingStream->write((uint64_t*)&cgen_var_845, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011284 marshal_VkAcquireNextImageInfoKHR(countingStream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011285 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
11286 }
11287 uint32_t packetSize_vkAcquireNextImage2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11288 countingStream->rewind();
11289 uint32_t opcode_vkAcquireNextImage2KHR = OP_vkAcquireNextImage2KHR;
11290 stream->write(&opcode_vkAcquireNextImage2KHR, sizeof(uint32_t));
11291 stream->write(&packetSize_vkAcquireNextImage2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011292 uint64_t cgen_var_846;
11293 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_846, 1);
11294 stream->write((uint64_t*)&cgen_var_846, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011295 marshal_VkAcquireNextImageInfoKHR(stream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011296 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
11297 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
11298 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
11299 stream->read(&vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011300 countingStream->clearPool();
11301 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011302 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011303 return vkAcquireNextImage2KHR_VkResult_return;
11304}
11305
11306#endif
11307#ifdef VK_KHR_display
11308VkResult VkEncoder::vkGetPhysicalDeviceDisplayPropertiesKHR(
11309 VkPhysicalDevice physicalDevice,
11310 uint32_t* pPropertyCount,
11311 VkDisplayPropertiesKHR* pProperties)
11312{
11313 auto stream = mImpl->stream();
11314 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011315 auto resources = mImpl->resources();
11316 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011317 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011318 VkPhysicalDevice local_physicalDevice;
11319 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011320 countingStream->rewind();
11321 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011322 uint64_t cgen_var_847;
11323 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_847, 1);
11324 countingStream->write((uint64_t*)&cgen_var_847, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011325 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011326 uint64_t cgen_var_848 = (uint64_t)(uintptr_t)pPropertyCount;
11327 countingStream->putBe64(cgen_var_848);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011328 if (pPropertyCount)
11329 {
11330 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11331 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011332 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011333 uint64_t cgen_var_849 = (uint64_t)(uintptr_t)pProperties;
11334 countingStream->putBe64(cgen_var_849);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011335 if (pProperties)
11336 {
11337 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11338 {
11339 marshal_VkDisplayPropertiesKHR(countingStream, (VkDisplayPropertiesKHR*)(pProperties + i));
11340 }
11341 }
11342 }
11343 uint32_t packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11344 countingStream->rewind();
11345 uint32_t opcode_vkGetPhysicalDeviceDisplayPropertiesKHR = OP_vkGetPhysicalDeviceDisplayPropertiesKHR;
11346 stream->write(&opcode_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
11347 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011348 uint64_t cgen_var_850;
11349 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_850, 1);
11350 stream->write((uint64_t*)&cgen_var_850, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011351 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011352 uint64_t cgen_var_851 = (uint64_t)(uintptr_t)pPropertyCount;
11353 stream->putBe64(cgen_var_851);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011354 if (pPropertyCount)
11355 {
11356 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11357 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011358 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011359 uint64_t cgen_var_852 = (uint64_t)(uintptr_t)pProperties;
11360 stream->putBe64(cgen_var_852);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011361 if (pProperties)
11362 {
11363 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11364 {
11365 marshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
11366 }
11367 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011368 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011369 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011370 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011371 if (pPropertyCount)
11372 {
11373 if (!(check_pPropertyCount))
11374 {
11375 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
11376 }
11377 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
11378 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011379 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011380 VkDisplayPropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011381 check_pProperties = (VkDisplayPropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011382 if (pProperties)
11383 {
11384 if (!(check_pProperties))
11385 {
11386 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
11387 }
11388 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11389 {
11390 unmarshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
11391 }
11392 }
11393 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
11394 stream->read(&vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011395 countingStream->clearPool();
11396 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011397 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011398 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
11399}
11400
11401VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
11402 VkPhysicalDevice physicalDevice,
11403 uint32_t* pPropertyCount,
11404 VkDisplayPlanePropertiesKHR* pProperties)
11405{
11406 auto stream = mImpl->stream();
11407 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011408 auto resources = mImpl->resources();
11409 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011410 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011411 VkPhysicalDevice local_physicalDevice;
11412 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011413 countingStream->rewind();
11414 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011415 uint64_t cgen_var_855;
11416 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_855, 1);
11417 countingStream->write((uint64_t*)&cgen_var_855, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011418 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011419 uint64_t cgen_var_856 = (uint64_t)(uintptr_t)pPropertyCount;
11420 countingStream->putBe64(cgen_var_856);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011421 if (pPropertyCount)
11422 {
11423 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11424 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011425 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011426 uint64_t cgen_var_857 = (uint64_t)(uintptr_t)pProperties;
11427 countingStream->putBe64(cgen_var_857);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011428 if (pProperties)
11429 {
11430 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11431 {
11432 marshal_VkDisplayPlanePropertiesKHR(countingStream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
11433 }
11434 }
11435 }
11436 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11437 countingStream->rewind();
11438 uint32_t opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = OP_vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
11439 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
11440 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011441 uint64_t cgen_var_858;
11442 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_858, 1);
11443 stream->write((uint64_t*)&cgen_var_858, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011444 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011445 uint64_t cgen_var_859 = (uint64_t)(uintptr_t)pPropertyCount;
11446 stream->putBe64(cgen_var_859);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011447 if (pPropertyCount)
11448 {
11449 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11450 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011451 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011452 uint64_t cgen_var_860 = (uint64_t)(uintptr_t)pProperties;
11453 stream->putBe64(cgen_var_860);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011454 if (pProperties)
11455 {
11456 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11457 {
11458 marshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
11459 }
11460 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011461 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011462 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011463 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011464 if (pPropertyCount)
11465 {
11466 if (!(check_pPropertyCount))
11467 {
11468 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
11469 }
11470 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
11471 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011472 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011473 VkDisplayPlanePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011474 check_pProperties = (VkDisplayPlanePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011475 if (pProperties)
11476 {
11477 if (!(check_pProperties))
11478 {
11479 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
11480 }
11481 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11482 {
11483 unmarshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
11484 }
11485 }
11486 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
11487 stream->read(&vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011488 countingStream->clearPool();
11489 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011490 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011491 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
11492}
11493
11494VkResult VkEncoder::vkGetDisplayPlaneSupportedDisplaysKHR(
11495 VkPhysicalDevice physicalDevice,
11496 uint32_t planeIndex,
11497 uint32_t* pDisplayCount,
11498 VkDisplayKHR* pDisplays)
11499{
11500 auto stream = mImpl->stream();
11501 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011502 auto resources = mImpl->resources();
11503 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011504 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011505 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011506 uint32_t local_planeIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011507 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011508 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011509 countingStream->rewind();
11510 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011511 uint64_t cgen_var_863;
11512 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_863, 1);
11513 countingStream->write((uint64_t*)&cgen_var_863, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011514 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011515 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011516 uint64_t cgen_var_864 = (uint64_t)(uintptr_t)pDisplayCount;
11517 countingStream->putBe64(cgen_var_864);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011518 if (pDisplayCount)
11519 {
11520 countingStream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
11521 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011522 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011523 uint64_t cgen_var_865 = (uint64_t)(uintptr_t)pDisplays;
11524 countingStream->putBe64(cgen_var_865);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011525 if (pDisplays)
11526 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080011527 if ((*(pDisplayCount)))
11528 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011529 uint64_t* cgen_var_866;
11530 countingStream->alloc((void**)&cgen_var_866, (*(pDisplayCount)) * 8);
11531 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_866, (*(pDisplayCount)));
11532 countingStream->write((uint64_t*)cgen_var_866, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011533 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011534 }
11535 }
11536 uint32_t packetSize_vkGetDisplayPlaneSupportedDisplaysKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11537 countingStream->rewind();
11538 uint32_t opcode_vkGetDisplayPlaneSupportedDisplaysKHR = OP_vkGetDisplayPlaneSupportedDisplaysKHR;
11539 stream->write(&opcode_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
11540 stream->write(&packetSize_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011541 uint64_t cgen_var_867;
11542 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_867, 1);
11543 stream->write((uint64_t*)&cgen_var_867, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011544 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011545 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011546 uint64_t cgen_var_868 = (uint64_t)(uintptr_t)pDisplayCount;
11547 stream->putBe64(cgen_var_868);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011548 if (pDisplayCount)
11549 {
11550 stream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
11551 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011552 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011553 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011554 uint64_t cgen_var_869 = (uint64_t)(uintptr_t)pDisplays;
11555 stream->putBe64(cgen_var_869);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011556 if (pDisplays)
11557 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080011558 if ((*(pDisplayCount)))
11559 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011560 uint64_t* cgen_var_870;
11561 stream->alloc((void**)&cgen_var_870, (*(pDisplayCount)) * 8);
11562 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_870, (*(pDisplayCount)));
11563 stream->write((uint64_t*)cgen_var_870, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011564 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011565 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011566 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011567 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011568 uint32_t* check_pDisplayCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011569 check_pDisplayCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011570 if (pDisplayCount)
11571 {
11572 if (!(check_pDisplayCount))
11573 {
11574 fprintf(stderr, "fatal: pDisplayCount inconsistent between guest and host\n");
11575 }
11576 stream->read((uint32_t*)pDisplayCount, sizeof(uint32_t));
11577 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011578 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011579 VkDisplayKHR* check_pDisplays;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011580 check_pDisplays = (VkDisplayKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011581 if (pDisplays)
11582 {
11583 if (!(check_pDisplays))
11584 {
11585 fprintf(stderr, "fatal: pDisplays inconsistent between guest and host\n");
11586 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080011587 if ((*(pDisplayCount)))
11588 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011589 uint64_t* cgen_var_873;
11590 stream->alloc((void**)&cgen_var_873, (*(pDisplayCount)) * 8);
11591 stream->read((uint64_t*)cgen_var_873, (*(pDisplayCount)) * 8);
11592 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(cgen_var_873, (VkDisplayKHR*)pDisplays, (*(pDisplayCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011593 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011594 }
11595 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
11596 stream->read(&vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011597 countingStream->clearPool();
11598 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011599 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011600 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
11601}
11602
11603VkResult VkEncoder::vkGetDisplayModePropertiesKHR(
11604 VkPhysicalDevice physicalDevice,
11605 VkDisplayKHR display,
11606 uint32_t* pPropertyCount,
11607 VkDisplayModePropertiesKHR* pProperties)
11608{
11609 auto stream = mImpl->stream();
11610 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011611 auto resources = mImpl->resources();
11612 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011613 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011614 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011615 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011616 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011617 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011618 countingStream->rewind();
11619 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011620 uint64_t cgen_var_874;
11621 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_874, 1);
11622 countingStream->write((uint64_t*)&cgen_var_874, 1 * 8);
11623 uint64_t cgen_var_875;
11624 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_875, 1);
11625 countingStream->write((uint64_t*)&cgen_var_875, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011626 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011627 uint64_t cgen_var_876 = (uint64_t)(uintptr_t)pPropertyCount;
11628 countingStream->putBe64(cgen_var_876);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011629 if (pPropertyCount)
11630 {
11631 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11632 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011633 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011634 uint64_t cgen_var_877 = (uint64_t)(uintptr_t)pProperties;
11635 countingStream->putBe64(cgen_var_877);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011636 if (pProperties)
11637 {
11638 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11639 {
11640 marshal_VkDisplayModePropertiesKHR(countingStream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11641 }
11642 }
11643 }
11644 uint32_t packetSize_vkGetDisplayModePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11645 countingStream->rewind();
11646 uint32_t opcode_vkGetDisplayModePropertiesKHR = OP_vkGetDisplayModePropertiesKHR;
11647 stream->write(&opcode_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
11648 stream->write(&packetSize_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011649 uint64_t cgen_var_878;
11650 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_878, 1);
11651 stream->write((uint64_t*)&cgen_var_878, 1 * 8);
11652 uint64_t cgen_var_879;
11653 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_879, 1);
11654 stream->write((uint64_t*)&cgen_var_879, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011655 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011656 uint64_t cgen_var_880 = (uint64_t)(uintptr_t)pPropertyCount;
11657 stream->putBe64(cgen_var_880);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011658 if (pPropertyCount)
11659 {
11660 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11661 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011662 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011663 uint64_t cgen_var_881 = (uint64_t)(uintptr_t)pProperties;
11664 stream->putBe64(cgen_var_881);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011665 if (pProperties)
11666 {
11667 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11668 {
11669 marshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11670 }
11671 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011672 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011673 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011674 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011675 if (pPropertyCount)
11676 {
11677 if (!(check_pPropertyCount))
11678 {
11679 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
11680 }
11681 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
11682 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011683 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011684 VkDisplayModePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011685 check_pProperties = (VkDisplayModePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011686 if (pProperties)
11687 {
11688 if (!(check_pProperties))
11689 {
11690 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
11691 }
11692 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11693 {
11694 unmarshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11695 }
11696 }
11697 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
11698 stream->read(&vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011699 countingStream->clearPool();
11700 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011701 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011702 return vkGetDisplayModePropertiesKHR_VkResult_return;
11703}
11704
11705VkResult VkEncoder::vkCreateDisplayModeKHR(
11706 VkPhysicalDevice physicalDevice,
11707 VkDisplayKHR display,
11708 const VkDisplayModeCreateInfoKHR* pCreateInfo,
11709 const VkAllocationCallbacks* pAllocator,
11710 VkDisplayModeKHR* pMode)
11711{
11712 auto stream = mImpl->stream();
11713 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011714 auto resources = mImpl->resources();
11715 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011716 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011717 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011718 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011719 VkDisplayModeCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011720 VkAllocationCallbacks* local_pAllocator;
11721 local_physicalDevice = physicalDevice;
11722 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011723 local_pCreateInfo = nullptr;
11724 if (pCreateInfo)
11725 {
11726 local_pCreateInfo = (VkDisplayModeCreateInfoKHR*)pool->alloc(sizeof(const VkDisplayModeCreateInfoKHR));
11727 deepcopy_VkDisplayModeCreateInfoKHR(pool, pCreateInfo, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
11728 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011729 local_pAllocator = nullptr;
11730 if (pAllocator)
11731 {
11732 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11733 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11734 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011735 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080011736 if (local_pCreateInfo)
11737 {
11738 transform_VkDisplayModeCreateInfoKHR(mImpl->resources(), (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
11739 }
11740 if (local_pAllocator)
11741 {
11742 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
11743 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011744 countingStream->rewind();
11745 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011746 uint64_t cgen_var_884;
11747 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_884, 1);
11748 countingStream->write((uint64_t*)&cgen_var_884, 1 * 8);
11749 uint64_t cgen_var_885;
11750 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_885, 1);
11751 countingStream->write((uint64_t*)&cgen_var_885, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011752 marshal_VkDisplayModeCreateInfoKHR(countingStream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011753 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011754 uint64_t cgen_var_886 = (uint64_t)(uintptr_t)local_pAllocator;
11755 countingStream->putBe64(cgen_var_886);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011756 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011757 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011758 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011759 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011760 uint64_t cgen_var_887;
11761 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_887, 1);
11762 countingStream->write((uint64_t*)&cgen_var_887, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011763 }
11764 uint32_t packetSize_vkCreateDisplayModeKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11765 countingStream->rewind();
11766 uint32_t opcode_vkCreateDisplayModeKHR = OP_vkCreateDisplayModeKHR;
11767 stream->write(&opcode_vkCreateDisplayModeKHR, sizeof(uint32_t));
11768 stream->write(&packetSize_vkCreateDisplayModeKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011769 uint64_t cgen_var_888;
11770 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_888, 1);
11771 stream->write((uint64_t*)&cgen_var_888, 1 * 8);
11772 uint64_t cgen_var_889;
11773 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_889, 1);
11774 stream->write((uint64_t*)&cgen_var_889, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011775 marshal_VkDisplayModeCreateInfoKHR(stream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011776 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011777 uint64_t cgen_var_890 = (uint64_t)(uintptr_t)local_pAllocator;
11778 stream->putBe64(cgen_var_890);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011779 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011780 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011781 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011782 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011783 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011784 uint64_t cgen_var_891;
11785 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_891, 1);
11786 stream->write((uint64_t*)&cgen_var_891, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011787 stream->setHandleMapping(resources->unwrapMapping());
11788 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011789 uint64_t cgen_var_892;
11790 stream->read((uint64_t*)&cgen_var_892, 8);
11791 stream->handleMapping()->mapHandles_u64_VkDisplayModeKHR(&cgen_var_892, (VkDisplayModeKHR*)pMode, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011792 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011793 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
11794 stream->read(&vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011795 countingStream->clearPool();
11796 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011797 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011798 return vkCreateDisplayModeKHR_VkResult_return;
11799}
11800
11801VkResult VkEncoder::vkGetDisplayPlaneCapabilitiesKHR(
11802 VkPhysicalDevice physicalDevice,
11803 VkDisplayModeKHR mode,
11804 uint32_t planeIndex,
11805 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
11806{
11807 auto stream = mImpl->stream();
11808 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011809 auto resources = mImpl->resources();
11810 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011811 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011812 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011813 VkDisplayModeKHR local_mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011814 uint32_t local_planeIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011815 local_physicalDevice = physicalDevice;
11816 local_mode = mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011817 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011818 countingStream->rewind();
11819 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011820 uint64_t cgen_var_893;
11821 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_893, 1);
11822 countingStream->write((uint64_t*)&cgen_var_893, 1 * 8);
11823 uint64_t cgen_var_894;
11824 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_894, 1);
11825 countingStream->write((uint64_t*)&cgen_var_894, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011826 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011827 marshal_VkDisplayPlaneCapabilitiesKHR(countingStream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
11828 }
11829 uint32_t packetSize_vkGetDisplayPlaneCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11830 countingStream->rewind();
11831 uint32_t opcode_vkGetDisplayPlaneCapabilitiesKHR = OP_vkGetDisplayPlaneCapabilitiesKHR;
11832 stream->write(&opcode_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
11833 stream->write(&packetSize_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011834 uint64_t cgen_var_895;
11835 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_895, 1);
11836 stream->write((uint64_t*)&cgen_var_895, 1 * 8);
11837 uint64_t cgen_var_896;
11838 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_896, 1);
11839 stream->write((uint64_t*)&cgen_var_896, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011840 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011841 marshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
11842 unmarshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
11843 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
11844 stream->read(&vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011845 countingStream->clearPool();
11846 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011847 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011848 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
11849}
11850
11851VkResult VkEncoder::vkCreateDisplayPlaneSurfaceKHR(
11852 VkInstance instance,
11853 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
11854 const VkAllocationCallbacks* pAllocator,
11855 VkSurfaceKHR* pSurface)
11856{
11857 auto stream = mImpl->stream();
11858 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011859 auto resources = mImpl->resources();
11860 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011861 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011862 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011863 VkDisplaySurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011864 VkAllocationCallbacks* local_pAllocator;
11865 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011866 local_pCreateInfo = nullptr;
11867 if (pCreateInfo)
11868 {
11869 local_pCreateInfo = (VkDisplaySurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkDisplaySurfaceCreateInfoKHR));
11870 deepcopy_VkDisplaySurfaceCreateInfoKHR(pool, pCreateInfo, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
11871 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011872 local_pAllocator = nullptr;
11873 if (pAllocator)
11874 {
11875 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11876 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11877 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011878 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080011879 if (local_pCreateInfo)
11880 {
11881 transform_VkDisplaySurfaceCreateInfoKHR(mImpl->resources(), (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
11882 }
11883 if (local_pAllocator)
11884 {
11885 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
11886 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011887 countingStream->rewind();
11888 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011889 uint64_t cgen_var_897;
11890 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_897, 1);
11891 countingStream->write((uint64_t*)&cgen_var_897, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011892 marshal_VkDisplaySurfaceCreateInfoKHR(countingStream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011893 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011894 uint64_t cgen_var_898 = (uint64_t)(uintptr_t)local_pAllocator;
11895 countingStream->putBe64(cgen_var_898);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011896 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011897 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011898 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011899 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011900 uint64_t cgen_var_899;
11901 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_899, 1);
11902 countingStream->write((uint64_t*)&cgen_var_899, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011903 }
11904 uint32_t packetSize_vkCreateDisplayPlaneSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11905 countingStream->rewind();
11906 uint32_t opcode_vkCreateDisplayPlaneSurfaceKHR = OP_vkCreateDisplayPlaneSurfaceKHR;
11907 stream->write(&opcode_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
11908 stream->write(&packetSize_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011909 uint64_t cgen_var_900;
11910 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_900, 1);
11911 stream->write((uint64_t*)&cgen_var_900, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011912 marshal_VkDisplaySurfaceCreateInfoKHR(stream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011913 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011914 uint64_t cgen_var_901 = (uint64_t)(uintptr_t)local_pAllocator;
11915 stream->putBe64(cgen_var_901);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011916 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011917 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011918 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011919 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011920 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011921 uint64_t cgen_var_902;
11922 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_902, 1);
11923 stream->write((uint64_t*)&cgen_var_902, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011924 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011925 uint64_t cgen_var_903;
11926 stream->read((uint64_t*)&cgen_var_903, 8);
11927 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_903, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011928 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
11929 stream->read(&vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011930 countingStream->clearPool();
11931 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011932 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011933 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
11934}
11935
11936#endif
11937#ifdef VK_KHR_display_swapchain
11938VkResult VkEncoder::vkCreateSharedSwapchainsKHR(
11939 VkDevice device,
11940 uint32_t swapchainCount,
11941 const VkSwapchainCreateInfoKHR* pCreateInfos,
11942 const VkAllocationCallbacks* pAllocator,
11943 VkSwapchainKHR* pSwapchains)
11944{
11945 auto stream = mImpl->stream();
11946 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011947 auto resources = mImpl->resources();
11948 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011949 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011950 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011951 uint32_t local_swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011952 VkSwapchainCreateInfoKHR* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011953 VkAllocationCallbacks* local_pAllocator;
11954 local_device = device;
11955 local_swapchainCount = swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011956 local_pCreateInfos = nullptr;
11957 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011958 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011959 local_pCreateInfos = (VkSwapchainCreateInfoKHR*)pool->alloc(((swapchainCount)) * sizeof(const VkSwapchainCreateInfoKHR));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011960 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
11961 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011962 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfos + i, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011963 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011964 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011965 local_pAllocator = nullptr;
11966 if (pAllocator)
11967 {
11968 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11969 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11970 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011971 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080011972 if (local_pCreateInfos)
11973 {
11974 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
11975 {
11976 transform_VkSwapchainCreateInfoKHR(mImpl->resources(), (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
11977 }
11978 }
11979 if (local_pAllocator)
11980 {
11981 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
11982 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011983 countingStream->rewind();
11984 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011985 uint64_t cgen_var_904;
11986 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_904, 1);
11987 countingStream->write((uint64_t*)&cgen_var_904, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011988 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
11989 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
11990 {
11991 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
11992 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011993 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011994 uint64_t cgen_var_905 = (uint64_t)(uintptr_t)local_pAllocator;
11995 countingStream->putBe64(cgen_var_905);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011996 if (local_pAllocator)
11997 {
11998 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011999 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080012000 if (((swapchainCount)))
12001 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012002 uint64_t* cgen_var_906;
12003 countingStream->alloc((void**)&cgen_var_906, ((swapchainCount)) * 8);
12004 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_906, ((swapchainCount)));
12005 countingStream->write((uint64_t*)cgen_var_906, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012006 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012007 }
12008 uint32_t packetSize_vkCreateSharedSwapchainsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12009 countingStream->rewind();
12010 uint32_t opcode_vkCreateSharedSwapchainsKHR = OP_vkCreateSharedSwapchainsKHR;
12011 stream->write(&opcode_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
12012 stream->write(&packetSize_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012013 uint64_t cgen_var_907;
12014 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_907, 1);
12015 stream->write((uint64_t*)&cgen_var_907, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012016 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012017 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
12018 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012019 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012020 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012021 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012022 uint64_t cgen_var_908 = (uint64_t)(uintptr_t)local_pAllocator;
12023 stream->putBe64(cgen_var_908);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012024 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012025 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012026 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012027 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012028 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -080012029 if (((swapchainCount)))
12030 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012031 uint64_t* cgen_var_909;
12032 stream->alloc((void**)&cgen_var_909, ((swapchainCount)) * 8);
12033 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_909, ((swapchainCount)));
12034 stream->write((uint64_t*)cgen_var_909, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012035 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012036 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -080012037 if (((swapchainCount)))
12038 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012039 uint64_t* cgen_var_910;
12040 stream->alloc((void**)&cgen_var_910, ((swapchainCount)) * 8);
12041 stream->read((uint64_t*)cgen_var_910, ((swapchainCount)) * 8);
12042 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(cgen_var_910, (VkSwapchainKHR*)pSwapchains, ((swapchainCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012043 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012044 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
12045 stream->read(&vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012046 countingStream->clearPool();
12047 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012048 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012049 return vkCreateSharedSwapchainsKHR_VkResult_return;
12050}
12051
12052#endif
12053#ifdef VK_KHR_xlib_surface
12054VkResult VkEncoder::vkCreateXlibSurfaceKHR(
12055 VkInstance instance,
12056 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
12057 const VkAllocationCallbacks* pAllocator,
12058 VkSurfaceKHR* pSurface)
12059{
12060 auto stream = mImpl->stream();
12061 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012062 auto resources = mImpl->resources();
12063 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012064 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012065 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012066 VkXlibSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012067 VkAllocationCallbacks* local_pAllocator;
12068 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012069 local_pCreateInfo = nullptr;
12070 if (pCreateInfo)
12071 {
12072 local_pCreateInfo = (VkXlibSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXlibSurfaceCreateInfoKHR));
12073 deepcopy_VkXlibSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
12074 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012075 local_pAllocator = nullptr;
12076 if (pAllocator)
12077 {
12078 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12079 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12080 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012081 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012082 if (local_pCreateInfo)
12083 {
12084 transform_VkXlibSurfaceCreateInfoKHR(mImpl->resources(), (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
12085 }
12086 if (local_pAllocator)
12087 {
12088 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
12089 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012090 countingStream->rewind();
12091 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012092 uint64_t cgen_var_911;
12093 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_911, 1);
12094 countingStream->write((uint64_t*)&cgen_var_911, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012095 marshal_VkXlibSurfaceCreateInfoKHR(countingStream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012096 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012097 uint64_t cgen_var_912 = (uint64_t)(uintptr_t)local_pAllocator;
12098 countingStream->putBe64(cgen_var_912);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012099 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012100 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012101 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012102 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012103 uint64_t cgen_var_913;
12104 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_913, 1);
12105 countingStream->write((uint64_t*)&cgen_var_913, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012106 }
12107 uint32_t packetSize_vkCreateXlibSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12108 countingStream->rewind();
12109 uint32_t opcode_vkCreateXlibSurfaceKHR = OP_vkCreateXlibSurfaceKHR;
12110 stream->write(&opcode_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
12111 stream->write(&packetSize_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012112 uint64_t cgen_var_914;
12113 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_914, 1);
12114 stream->write((uint64_t*)&cgen_var_914, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012115 marshal_VkXlibSurfaceCreateInfoKHR(stream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012116 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012117 uint64_t cgen_var_915 = (uint64_t)(uintptr_t)local_pAllocator;
12118 stream->putBe64(cgen_var_915);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012119 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012120 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012121 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012122 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012123 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012124 uint64_t cgen_var_916;
12125 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_916, 1);
12126 stream->write((uint64_t*)&cgen_var_916, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012127 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012128 uint64_t cgen_var_917;
12129 stream->read((uint64_t*)&cgen_var_917, 8);
12130 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_917, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012131 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
12132 stream->read(&vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012133 countingStream->clearPool();
12134 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012135 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012136 return vkCreateXlibSurfaceKHR_VkResult_return;
12137}
12138
12139VkBool32 VkEncoder::vkGetPhysicalDeviceXlibPresentationSupportKHR(
12140 VkPhysicalDevice physicalDevice,
12141 uint32_t queueFamilyIndex,
12142 Display* dpy,
12143 VisualID visualID)
12144{
12145 auto stream = mImpl->stream();
12146 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012147 auto resources = mImpl->resources();
12148 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012149 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012150 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012151 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012152 VisualID local_visualID;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012153 local_physicalDevice = physicalDevice;
12154 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012155 local_visualID = visualID;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012156 countingStream->rewind();
12157 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012158 uint64_t cgen_var_918;
12159 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_918, 1);
12160 countingStream->write((uint64_t*)&cgen_var_918, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012161 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012162 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012163 countingStream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012164 }
12165 uint32_t packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12166 countingStream->rewind();
12167 uint32_t opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR = OP_vkGetPhysicalDeviceXlibPresentationSupportKHR;
12168 stream->write(&opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
12169 stream->write(&packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012170 uint64_t cgen_var_919;
12171 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_919, 1);
12172 stream->write((uint64_t*)&cgen_var_919, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012173 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012174 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012175 stream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012176 stream->read((Display*)dpy, sizeof(Display));
12177 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
12178 stream->read(&vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012179 countingStream->clearPool();
12180 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012181 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012182 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
12183}
12184
12185#endif
12186#ifdef VK_KHR_xcb_surface
12187VkResult VkEncoder::vkCreateXcbSurfaceKHR(
12188 VkInstance instance,
12189 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
12190 const VkAllocationCallbacks* pAllocator,
12191 VkSurfaceKHR* pSurface)
12192{
12193 auto stream = mImpl->stream();
12194 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012195 auto resources = mImpl->resources();
12196 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012197 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012198 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012199 VkXcbSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012200 VkAllocationCallbacks* local_pAllocator;
12201 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012202 local_pCreateInfo = nullptr;
12203 if (pCreateInfo)
12204 {
12205 local_pCreateInfo = (VkXcbSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXcbSurfaceCreateInfoKHR));
12206 deepcopy_VkXcbSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
12207 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012208 local_pAllocator = nullptr;
12209 if (pAllocator)
12210 {
12211 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12212 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12213 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012214 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012215 if (local_pCreateInfo)
12216 {
12217 transform_VkXcbSurfaceCreateInfoKHR(mImpl->resources(), (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
12218 }
12219 if (local_pAllocator)
12220 {
12221 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
12222 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012223 countingStream->rewind();
12224 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012225 uint64_t cgen_var_920;
12226 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_920, 1);
12227 countingStream->write((uint64_t*)&cgen_var_920, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012228 marshal_VkXcbSurfaceCreateInfoKHR(countingStream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012229 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012230 uint64_t cgen_var_921 = (uint64_t)(uintptr_t)local_pAllocator;
12231 countingStream->putBe64(cgen_var_921);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012232 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012233 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012234 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012235 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012236 uint64_t cgen_var_922;
12237 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_922, 1);
12238 countingStream->write((uint64_t*)&cgen_var_922, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012239 }
12240 uint32_t packetSize_vkCreateXcbSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12241 countingStream->rewind();
12242 uint32_t opcode_vkCreateXcbSurfaceKHR = OP_vkCreateXcbSurfaceKHR;
12243 stream->write(&opcode_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
12244 stream->write(&packetSize_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012245 uint64_t cgen_var_923;
12246 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_923, 1);
12247 stream->write((uint64_t*)&cgen_var_923, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012248 marshal_VkXcbSurfaceCreateInfoKHR(stream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012249 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012250 uint64_t cgen_var_924 = (uint64_t)(uintptr_t)local_pAllocator;
12251 stream->putBe64(cgen_var_924);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012252 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012253 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012254 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012255 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012256 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012257 uint64_t cgen_var_925;
12258 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_925, 1);
12259 stream->write((uint64_t*)&cgen_var_925, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012260 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012261 uint64_t cgen_var_926;
12262 stream->read((uint64_t*)&cgen_var_926, 8);
12263 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_926, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012264 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
12265 stream->read(&vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012266 countingStream->clearPool();
12267 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012268 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012269 return vkCreateXcbSurfaceKHR_VkResult_return;
12270}
12271
12272VkBool32 VkEncoder::vkGetPhysicalDeviceXcbPresentationSupportKHR(
12273 VkPhysicalDevice physicalDevice,
12274 uint32_t queueFamilyIndex,
12275 xcb_connection_t* connection,
12276 xcb_visualid_t visual_id)
12277{
12278 auto stream = mImpl->stream();
12279 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012280 auto resources = mImpl->resources();
12281 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012282 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012283 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012284 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012285 xcb_visualid_t local_visual_id;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012286 local_physicalDevice = physicalDevice;
12287 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012288 local_visual_id = visual_id;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012289 countingStream->rewind();
12290 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012291 uint64_t cgen_var_927;
12292 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_927, 1);
12293 countingStream->write((uint64_t*)&cgen_var_927, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012294 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012295 countingStream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012296 countingStream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012297 }
12298 uint32_t packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12299 countingStream->rewind();
12300 uint32_t opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR = OP_vkGetPhysicalDeviceXcbPresentationSupportKHR;
12301 stream->write(&opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
12302 stream->write(&packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012303 uint64_t cgen_var_928;
12304 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_928, 1);
12305 stream->write((uint64_t*)&cgen_var_928, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012306 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012307 stream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012308 stream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012309 stream->read((xcb_connection_t*)connection, sizeof(xcb_connection_t));
12310 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
12311 stream->read(&vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012312 countingStream->clearPool();
12313 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012314 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012315 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
12316}
12317
12318#endif
12319#ifdef VK_KHR_wayland_surface
12320VkResult VkEncoder::vkCreateWaylandSurfaceKHR(
12321 VkInstance instance,
12322 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
12323 const VkAllocationCallbacks* pAllocator,
12324 VkSurfaceKHR* pSurface)
12325{
12326 auto stream = mImpl->stream();
12327 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012328 auto resources = mImpl->resources();
12329 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012330 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012331 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012332 VkWaylandSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012333 VkAllocationCallbacks* local_pAllocator;
12334 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012335 local_pCreateInfo = nullptr;
12336 if (pCreateInfo)
12337 {
12338 local_pCreateInfo = (VkWaylandSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWaylandSurfaceCreateInfoKHR));
12339 deepcopy_VkWaylandSurfaceCreateInfoKHR(pool, pCreateInfo, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
12340 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012341 local_pAllocator = nullptr;
12342 if (pAllocator)
12343 {
12344 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12345 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12346 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012347 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012348 if (local_pCreateInfo)
12349 {
12350 transform_VkWaylandSurfaceCreateInfoKHR(mImpl->resources(), (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
12351 }
12352 if (local_pAllocator)
12353 {
12354 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
12355 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012356 countingStream->rewind();
12357 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012358 uint64_t cgen_var_929;
12359 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_929, 1);
12360 countingStream->write((uint64_t*)&cgen_var_929, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012361 marshal_VkWaylandSurfaceCreateInfoKHR(countingStream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012362 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012363 uint64_t cgen_var_930 = (uint64_t)(uintptr_t)local_pAllocator;
12364 countingStream->putBe64(cgen_var_930);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012365 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012366 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012367 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012368 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012369 uint64_t cgen_var_931;
12370 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_931, 1);
12371 countingStream->write((uint64_t*)&cgen_var_931, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012372 }
12373 uint32_t packetSize_vkCreateWaylandSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12374 countingStream->rewind();
12375 uint32_t opcode_vkCreateWaylandSurfaceKHR = OP_vkCreateWaylandSurfaceKHR;
12376 stream->write(&opcode_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
12377 stream->write(&packetSize_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012378 uint64_t cgen_var_932;
12379 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_932, 1);
12380 stream->write((uint64_t*)&cgen_var_932, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012381 marshal_VkWaylandSurfaceCreateInfoKHR(stream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012382 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012383 uint64_t cgen_var_933 = (uint64_t)(uintptr_t)local_pAllocator;
12384 stream->putBe64(cgen_var_933);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012385 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012386 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012387 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012388 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012389 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012390 uint64_t cgen_var_934;
12391 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_934, 1);
12392 stream->write((uint64_t*)&cgen_var_934, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012393 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012394 uint64_t cgen_var_935;
12395 stream->read((uint64_t*)&cgen_var_935, 8);
12396 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_935, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012397 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
12398 stream->read(&vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012399 countingStream->clearPool();
12400 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012401 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012402 return vkCreateWaylandSurfaceKHR_VkResult_return;
12403}
12404
12405VkBool32 VkEncoder::vkGetPhysicalDeviceWaylandPresentationSupportKHR(
12406 VkPhysicalDevice physicalDevice,
12407 uint32_t queueFamilyIndex,
12408 wl_display* display)
12409{
12410 auto stream = mImpl->stream();
12411 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012412 auto resources = mImpl->resources();
12413 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012414 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012415 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012416 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012417 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012418 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012419 countingStream->rewind();
12420 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012421 uint64_t cgen_var_936;
12422 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_936, 1);
12423 countingStream->write((uint64_t*)&cgen_var_936, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012424 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012425 countingStream->write((wl_display*)display, sizeof(wl_display));
12426 }
12427 uint32_t packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12428 countingStream->rewind();
12429 uint32_t opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR = OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR;
12430 stream->write(&opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
12431 stream->write(&packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012432 uint64_t cgen_var_937;
12433 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_937, 1);
12434 stream->write((uint64_t*)&cgen_var_937, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012435 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012436 stream->write((wl_display*)display, sizeof(wl_display));
12437 stream->read((wl_display*)display, sizeof(wl_display));
12438 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
12439 stream->read(&vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012440 countingStream->clearPool();
12441 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012442 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012443 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
12444}
12445
12446#endif
12447#ifdef VK_KHR_mir_surface
12448VkResult VkEncoder::vkCreateMirSurfaceKHR(
12449 VkInstance instance,
12450 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
12451 const VkAllocationCallbacks* pAllocator,
12452 VkSurfaceKHR* pSurface)
12453{
12454 auto stream = mImpl->stream();
12455 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012456 auto resources = mImpl->resources();
12457 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012458 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012459 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012460 VkMirSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012461 VkAllocationCallbacks* local_pAllocator;
12462 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012463 local_pCreateInfo = nullptr;
12464 if (pCreateInfo)
12465 {
12466 local_pCreateInfo = (VkMirSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkMirSurfaceCreateInfoKHR));
12467 deepcopy_VkMirSurfaceCreateInfoKHR(pool, pCreateInfo, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
12468 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012469 local_pAllocator = nullptr;
12470 if (pAllocator)
12471 {
12472 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12473 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12474 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012475 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012476 if (local_pCreateInfo)
12477 {
12478 transform_VkMirSurfaceCreateInfoKHR(mImpl->resources(), (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
12479 }
12480 if (local_pAllocator)
12481 {
12482 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
12483 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012484 countingStream->rewind();
12485 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012486 uint64_t cgen_var_938;
12487 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_938, 1);
12488 countingStream->write((uint64_t*)&cgen_var_938, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012489 marshal_VkMirSurfaceCreateInfoKHR(countingStream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012490 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012491 uint64_t cgen_var_939 = (uint64_t)(uintptr_t)local_pAllocator;
12492 countingStream->putBe64(cgen_var_939);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012493 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012494 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012495 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012496 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012497 uint64_t cgen_var_940;
12498 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_940, 1);
12499 countingStream->write((uint64_t*)&cgen_var_940, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012500 }
12501 uint32_t packetSize_vkCreateMirSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12502 countingStream->rewind();
12503 uint32_t opcode_vkCreateMirSurfaceKHR = OP_vkCreateMirSurfaceKHR;
12504 stream->write(&opcode_vkCreateMirSurfaceKHR, sizeof(uint32_t));
12505 stream->write(&packetSize_vkCreateMirSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012506 uint64_t cgen_var_941;
12507 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_941, 1);
12508 stream->write((uint64_t*)&cgen_var_941, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012509 marshal_VkMirSurfaceCreateInfoKHR(stream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012510 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012511 uint64_t cgen_var_942 = (uint64_t)(uintptr_t)local_pAllocator;
12512 stream->putBe64(cgen_var_942);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012513 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012514 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012515 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012516 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012517 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012518 uint64_t cgen_var_943;
12519 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_943, 1);
12520 stream->write((uint64_t*)&cgen_var_943, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012521 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012522 uint64_t cgen_var_944;
12523 stream->read((uint64_t*)&cgen_var_944, 8);
12524 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_944, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012525 VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
12526 stream->read(&vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012527 countingStream->clearPool();
12528 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012529 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012530 return vkCreateMirSurfaceKHR_VkResult_return;
12531}
12532
12533VkBool32 VkEncoder::vkGetPhysicalDeviceMirPresentationSupportKHR(
12534 VkPhysicalDevice physicalDevice,
12535 uint32_t queueFamilyIndex,
12536 MirConnection* connection)
12537{
12538 auto stream = mImpl->stream();
12539 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012540 auto resources = mImpl->resources();
12541 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012542 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012543 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012544 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012545 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012546 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012547 countingStream->rewind();
12548 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012549 uint64_t cgen_var_945;
12550 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_945, 1);
12551 countingStream->write((uint64_t*)&cgen_var_945, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012552 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012553 countingStream->write((MirConnection*)connection, sizeof(MirConnection));
12554 }
12555 uint32_t packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12556 countingStream->rewind();
12557 uint32_t opcode_vkGetPhysicalDeviceMirPresentationSupportKHR = OP_vkGetPhysicalDeviceMirPresentationSupportKHR;
12558 stream->write(&opcode_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
12559 stream->write(&packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012560 uint64_t cgen_var_946;
12561 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_946, 1);
12562 stream->write((uint64_t*)&cgen_var_946, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012563 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012564 stream->write((MirConnection*)connection, sizeof(MirConnection));
12565 stream->read((MirConnection*)connection, sizeof(MirConnection));
12566 VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
12567 stream->read(&vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012568 countingStream->clearPool();
12569 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012570 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012571 return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
12572}
12573
12574#endif
12575#ifdef VK_KHR_android_surface
12576VkResult VkEncoder::vkCreateAndroidSurfaceKHR(
12577 VkInstance instance,
12578 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
12579 const VkAllocationCallbacks* pAllocator,
12580 VkSurfaceKHR* pSurface)
12581{
12582 auto stream = mImpl->stream();
12583 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012584 auto resources = mImpl->resources();
12585 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012586 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012587 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012588 VkAndroidSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012589 VkAllocationCallbacks* local_pAllocator;
12590 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012591 local_pCreateInfo = nullptr;
12592 if (pCreateInfo)
12593 {
12594 local_pCreateInfo = (VkAndroidSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkAndroidSurfaceCreateInfoKHR));
12595 deepcopy_VkAndroidSurfaceCreateInfoKHR(pool, pCreateInfo, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
12596 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012597 local_pAllocator = nullptr;
12598 if (pAllocator)
12599 {
12600 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12601 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12602 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012603 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012604 if (local_pCreateInfo)
12605 {
12606 transform_VkAndroidSurfaceCreateInfoKHR(mImpl->resources(), (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
12607 }
12608 if (local_pAllocator)
12609 {
12610 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
12611 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012612 countingStream->rewind();
12613 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012614 uint64_t cgen_var_947;
12615 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_947, 1);
12616 countingStream->write((uint64_t*)&cgen_var_947, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012617 marshal_VkAndroidSurfaceCreateInfoKHR(countingStream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012618 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012619 uint64_t cgen_var_948 = (uint64_t)(uintptr_t)local_pAllocator;
12620 countingStream->putBe64(cgen_var_948);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012621 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012622 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012623 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012624 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012625 uint64_t cgen_var_949;
12626 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_949, 1);
12627 countingStream->write((uint64_t*)&cgen_var_949, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012628 }
12629 uint32_t packetSize_vkCreateAndroidSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12630 countingStream->rewind();
12631 uint32_t opcode_vkCreateAndroidSurfaceKHR = OP_vkCreateAndroidSurfaceKHR;
12632 stream->write(&opcode_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
12633 stream->write(&packetSize_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012634 uint64_t cgen_var_950;
12635 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_950, 1);
12636 stream->write((uint64_t*)&cgen_var_950, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012637 marshal_VkAndroidSurfaceCreateInfoKHR(stream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012638 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012639 uint64_t cgen_var_951 = (uint64_t)(uintptr_t)local_pAllocator;
12640 stream->putBe64(cgen_var_951);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012641 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012642 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012643 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012644 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012645 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012646 uint64_t cgen_var_952;
12647 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_952, 1);
12648 stream->write((uint64_t*)&cgen_var_952, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012649 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012650 uint64_t cgen_var_953;
12651 stream->read((uint64_t*)&cgen_var_953, 8);
12652 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_953, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012653 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
12654 stream->read(&vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012655 countingStream->clearPool();
12656 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012657 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012658 return vkCreateAndroidSurfaceKHR_VkResult_return;
12659}
12660
12661#endif
12662#ifdef VK_KHR_win32_surface
12663VkResult VkEncoder::vkCreateWin32SurfaceKHR(
12664 VkInstance instance,
12665 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
12666 const VkAllocationCallbacks* pAllocator,
12667 VkSurfaceKHR* pSurface)
12668{
12669 auto stream = mImpl->stream();
12670 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012671 auto resources = mImpl->resources();
12672 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012673 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012674 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012675 VkWin32SurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012676 VkAllocationCallbacks* local_pAllocator;
12677 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012678 local_pCreateInfo = nullptr;
12679 if (pCreateInfo)
12680 {
12681 local_pCreateInfo = (VkWin32SurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWin32SurfaceCreateInfoKHR));
12682 deepcopy_VkWin32SurfaceCreateInfoKHR(pool, pCreateInfo, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
12683 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012684 local_pAllocator = nullptr;
12685 if (pAllocator)
12686 {
12687 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12688 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12689 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012690 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012691 if (local_pCreateInfo)
12692 {
12693 transform_VkWin32SurfaceCreateInfoKHR(mImpl->resources(), (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
12694 }
12695 if (local_pAllocator)
12696 {
12697 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
12698 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012699 countingStream->rewind();
12700 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012701 uint64_t cgen_var_954;
12702 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_954, 1);
12703 countingStream->write((uint64_t*)&cgen_var_954, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012704 marshal_VkWin32SurfaceCreateInfoKHR(countingStream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012705 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012706 uint64_t cgen_var_955 = (uint64_t)(uintptr_t)local_pAllocator;
12707 countingStream->putBe64(cgen_var_955);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012708 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012709 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012710 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012711 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012712 uint64_t cgen_var_956;
12713 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_956, 1);
12714 countingStream->write((uint64_t*)&cgen_var_956, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012715 }
12716 uint32_t packetSize_vkCreateWin32SurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12717 countingStream->rewind();
12718 uint32_t opcode_vkCreateWin32SurfaceKHR = OP_vkCreateWin32SurfaceKHR;
12719 stream->write(&opcode_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
12720 stream->write(&packetSize_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012721 uint64_t cgen_var_957;
12722 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_957, 1);
12723 stream->write((uint64_t*)&cgen_var_957, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012724 marshal_VkWin32SurfaceCreateInfoKHR(stream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012725 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012726 uint64_t cgen_var_958 = (uint64_t)(uintptr_t)local_pAllocator;
12727 stream->putBe64(cgen_var_958);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012728 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012729 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012730 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012731 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012732 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012733 uint64_t cgen_var_959;
12734 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_959, 1);
12735 stream->write((uint64_t*)&cgen_var_959, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012736 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012737 uint64_t cgen_var_960;
12738 stream->read((uint64_t*)&cgen_var_960, 8);
12739 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_960, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012740 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
12741 stream->read(&vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012742 countingStream->clearPool();
12743 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012744 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012745 return vkCreateWin32SurfaceKHR_VkResult_return;
12746}
12747
12748VkBool32 VkEncoder::vkGetPhysicalDeviceWin32PresentationSupportKHR(
12749 VkPhysicalDevice physicalDevice,
12750 uint32_t queueFamilyIndex)
12751{
12752 auto stream = mImpl->stream();
12753 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012754 auto resources = mImpl->resources();
12755 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012756 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012757 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012758 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012759 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012760 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012761 countingStream->rewind();
12762 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012763 uint64_t cgen_var_961;
12764 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_961, 1);
12765 countingStream->write((uint64_t*)&cgen_var_961, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012766 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012767 }
12768 uint32_t packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12769 countingStream->rewind();
12770 uint32_t opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR = OP_vkGetPhysicalDeviceWin32PresentationSupportKHR;
12771 stream->write(&opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
12772 stream->write(&packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012773 uint64_t cgen_var_962;
12774 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_962, 1);
12775 stream->write((uint64_t*)&cgen_var_962, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012776 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012777 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
12778 stream->read(&vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012779 countingStream->clearPool();
12780 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012781 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012782 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
12783}
12784
12785#endif
12786#ifdef VK_KHR_sampler_mirror_clamp_to_edge
12787#endif
12788#ifdef VK_KHR_multiview
12789#endif
12790#ifdef VK_KHR_get_physical_device_properties2
12791void VkEncoder::vkGetPhysicalDeviceFeatures2KHR(
12792 VkPhysicalDevice physicalDevice,
12793 VkPhysicalDeviceFeatures2* pFeatures)
12794{
12795 auto stream = mImpl->stream();
12796 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012797 auto resources = mImpl->resources();
12798 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012799 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012800 VkPhysicalDevice local_physicalDevice;
12801 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012802 countingStream->rewind();
12803 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012804 uint64_t cgen_var_963;
12805 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_963, 1);
12806 countingStream->write((uint64_t*)&cgen_var_963, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012807 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
12808 }
12809 uint32_t packetSize_vkGetPhysicalDeviceFeatures2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12810 countingStream->rewind();
12811 uint32_t opcode_vkGetPhysicalDeviceFeatures2KHR = OP_vkGetPhysicalDeviceFeatures2KHR;
12812 stream->write(&opcode_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
12813 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012814 uint64_t cgen_var_964;
12815 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_964, 1);
12816 stream->write((uint64_t*)&cgen_var_964, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012817 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
12818 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
12819}
12820
12821void VkEncoder::vkGetPhysicalDeviceProperties2KHR(
12822 VkPhysicalDevice physicalDevice,
12823 VkPhysicalDeviceProperties2* pProperties)
12824{
12825 auto stream = mImpl->stream();
12826 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012827 auto resources = mImpl->resources();
12828 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012829 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012830 VkPhysicalDevice local_physicalDevice;
12831 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012832 countingStream->rewind();
12833 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012834 uint64_t cgen_var_965;
12835 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_965, 1);
12836 countingStream->write((uint64_t*)&cgen_var_965, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012837 marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
12838 }
12839 uint32_t packetSize_vkGetPhysicalDeviceProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12840 countingStream->rewind();
12841 uint32_t opcode_vkGetPhysicalDeviceProperties2KHR = OP_vkGetPhysicalDeviceProperties2KHR;
12842 stream->write(&opcode_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
12843 stream->write(&packetSize_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012844 uint64_t cgen_var_966;
12845 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_966, 1);
12846 stream->write((uint64_t*)&cgen_var_966, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012847 marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
12848 unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
12849}
12850
12851void VkEncoder::vkGetPhysicalDeviceFormatProperties2KHR(
12852 VkPhysicalDevice physicalDevice,
12853 VkFormat format,
12854 VkFormatProperties2* pFormatProperties)
12855{
12856 auto stream = mImpl->stream();
12857 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012858 auto resources = mImpl->resources();
12859 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012860 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012861 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012862 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012863 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012864 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012865 countingStream->rewind();
12866 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012867 uint64_t cgen_var_967;
12868 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_967, 1);
12869 countingStream->write((uint64_t*)&cgen_var_967, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012870 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012871 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
12872 }
12873 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12874 countingStream->rewind();
12875 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2KHR = OP_vkGetPhysicalDeviceFormatProperties2KHR;
12876 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
12877 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012878 uint64_t cgen_var_968;
12879 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_968, 1);
12880 stream->write((uint64_t*)&cgen_var_968, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012881 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012882 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
12883 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
12884}
12885
12886VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2KHR(
12887 VkPhysicalDevice physicalDevice,
12888 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
12889 VkImageFormatProperties2* pImageFormatProperties)
12890{
12891 auto stream = mImpl->stream();
12892 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012893 auto resources = mImpl->resources();
12894 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012895 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012896 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012897 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012898 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012899 local_pImageFormatInfo = nullptr;
12900 if (pImageFormatInfo)
12901 {
12902 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
12903 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
12904 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080012905 if (local_pImageFormatInfo)
12906 {
12907 transform_VkPhysicalDeviceImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
12908 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012909 countingStream->rewind();
12910 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012911 uint64_t cgen_var_969;
12912 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_969, 1);
12913 countingStream->write((uint64_t*)&cgen_var_969, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012914 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012915 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
12916 }
12917 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12918 countingStream->rewind();
12919 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2KHR = OP_vkGetPhysicalDeviceImageFormatProperties2KHR;
12920 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
12921 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012922 uint64_t cgen_var_970;
12923 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_970, 1);
12924 stream->write((uint64_t*)&cgen_var_970, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012925 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012926 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
12927 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
12928 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
12929 stream->read(&vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012930 countingStream->clearPool();
12931 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012932 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012933 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
12934}
12935
12936void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2KHR(
12937 VkPhysicalDevice physicalDevice,
12938 uint32_t* pQueueFamilyPropertyCount,
12939 VkQueueFamilyProperties2* pQueueFamilyProperties)
12940{
12941 auto stream = mImpl->stream();
12942 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012943 auto resources = mImpl->resources();
12944 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012945 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012946 VkPhysicalDevice local_physicalDevice;
12947 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012948 countingStream->rewind();
12949 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012950 uint64_t cgen_var_971;
12951 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_971, 1);
12952 countingStream->write((uint64_t*)&cgen_var_971, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012953 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012954 uint64_t cgen_var_972 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
12955 countingStream->putBe64(cgen_var_972);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012956 if (pQueueFamilyPropertyCount)
12957 {
12958 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
12959 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012960 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012961 uint64_t cgen_var_973 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
12962 countingStream->putBe64(cgen_var_973);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012963 if (pQueueFamilyProperties)
12964 {
12965 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
12966 {
12967 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
12968 }
12969 }
12970 }
12971 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12972 countingStream->rewind();
12973 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR = OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR;
12974 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
12975 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012976 uint64_t cgen_var_974;
12977 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_974, 1);
12978 stream->write((uint64_t*)&cgen_var_974, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012979 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012980 uint64_t cgen_var_975 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
12981 stream->putBe64(cgen_var_975);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012982 if (pQueueFamilyPropertyCount)
12983 {
12984 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
12985 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012986 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012987 uint64_t cgen_var_976 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
12988 stream->putBe64(cgen_var_976);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012989 if (pQueueFamilyProperties)
12990 {
12991 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
12992 {
12993 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
12994 }
12995 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012996 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012997 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012998 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012999 if (pQueueFamilyPropertyCount)
13000 {
13001 if (!(check_pQueueFamilyPropertyCount))
13002 {
13003 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
13004 }
13005 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
13006 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013007 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013008 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013009 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013010 if (pQueueFamilyProperties)
13011 {
13012 if (!(check_pQueueFamilyProperties))
13013 {
13014 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
13015 }
13016 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
13017 {
13018 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
13019 }
13020 }
13021}
13022
13023void VkEncoder::vkGetPhysicalDeviceMemoryProperties2KHR(
13024 VkPhysicalDevice physicalDevice,
13025 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
13026{
13027 auto stream = mImpl->stream();
13028 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013029 auto resources = mImpl->resources();
13030 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013031 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013032 VkPhysicalDevice local_physicalDevice;
13033 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013034 countingStream->rewind();
13035 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013036 uint64_t cgen_var_979;
13037 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_979, 1);
13038 countingStream->write((uint64_t*)&cgen_var_979, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013039 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
13040 }
13041 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13042 countingStream->rewind();
13043 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2KHR = OP_vkGetPhysicalDeviceMemoryProperties2KHR;
13044 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
13045 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013046 uint64_t cgen_var_980;
13047 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_980, 1);
13048 stream->write((uint64_t*)&cgen_var_980, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013049 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
13050 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
13051}
13052
13053void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
13054 VkPhysicalDevice physicalDevice,
13055 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
13056 uint32_t* pPropertyCount,
13057 VkSparseImageFormatProperties2* pProperties)
13058{
13059 auto stream = mImpl->stream();
13060 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013061 auto resources = mImpl->resources();
13062 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013063 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013064 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013065 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013066 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013067 local_pFormatInfo = nullptr;
13068 if (pFormatInfo)
13069 {
13070 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
13071 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
13072 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013073 if (local_pFormatInfo)
13074 {
13075 transform_VkPhysicalDeviceSparseImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
13076 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013077 countingStream->rewind();
13078 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013079 uint64_t cgen_var_981;
13080 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_981, 1);
13081 countingStream->write((uint64_t*)&cgen_var_981, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013082 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013083 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013084 uint64_t cgen_var_982 = (uint64_t)(uintptr_t)pPropertyCount;
13085 countingStream->putBe64(cgen_var_982);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013086 if (pPropertyCount)
13087 {
13088 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
13089 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013090 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013091 uint64_t cgen_var_983 = (uint64_t)(uintptr_t)pProperties;
13092 countingStream->putBe64(cgen_var_983);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013093 if (pProperties)
13094 {
13095 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13096 {
13097 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
13098 }
13099 }
13100 }
13101 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13102 countingStream->rewind();
13103 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
13104 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
13105 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013106 uint64_t cgen_var_984;
13107 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_984, 1);
13108 stream->write((uint64_t*)&cgen_var_984, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013109 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013110 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013111 uint64_t cgen_var_985 = (uint64_t)(uintptr_t)pPropertyCount;
13112 stream->putBe64(cgen_var_985);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013113 if (pPropertyCount)
13114 {
13115 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
13116 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013117 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013118 uint64_t cgen_var_986 = (uint64_t)(uintptr_t)pProperties;
13119 stream->putBe64(cgen_var_986);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013120 if (pProperties)
13121 {
13122 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13123 {
13124 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
13125 }
13126 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013127 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013128 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013129 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013130 if (pPropertyCount)
13131 {
13132 if (!(check_pPropertyCount))
13133 {
13134 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
13135 }
13136 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
13137 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013138 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013139 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013140 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013141 if (pProperties)
13142 {
13143 if (!(check_pProperties))
13144 {
13145 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
13146 }
13147 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13148 {
13149 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
13150 }
13151 }
13152}
13153
13154#endif
13155#ifdef VK_KHR_device_group
13156void VkEncoder::vkGetDeviceGroupPeerMemoryFeaturesKHR(
13157 VkDevice device,
13158 uint32_t heapIndex,
13159 uint32_t localDeviceIndex,
13160 uint32_t remoteDeviceIndex,
13161 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
13162{
13163 auto stream = mImpl->stream();
13164 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013165 auto resources = mImpl->resources();
13166 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013167 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013168 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013169 uint32_t local_heapIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013170 uint32_t local_localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013171 uint32_t local_remoteDeviceIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013172 local_device = device;
13173 local_heapIndex = heapIndex;
13174 local_localDeviceIndex = localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013175 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013176 countingStream->rewind();
13177 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013178 uint64_t cgen_var_989;
13179 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_989, 1);
13180 countingStream->write((uint64_t*)&cgen_var_989, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013181 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
13182 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
13183 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013184 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
13185 }
13186 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13187 countingStream->rewind();
13188 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR = OP_vkGetDeviceGroupPeerMemoryFeaturesKHR;
13189 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
13190 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013191 uint64_t cgen_var_990;
13192 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_990, 1);
13193 stream->write((uint64_t*)&cgen_var_990, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013194 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
13195 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
13196 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013197 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
13198 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
13199}
13200
13201void VkEncoder::vkCmdSetDeviceMaskKHR(
13202 VkCommandBuffer commandBuffer,
13203 uint32_t deviceMask)
13204{
13205 auto stream = mImpl->stream();
13206 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013207 auto resources = mImpl->resources();
13208 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013209 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013210 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013211 uint32_t local_deviceMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013212 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013213 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013214 countingStream->rewind();
13215 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013216 uint64_t cgen_var_991;
13217 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_991, 1);
13218 countingStream->write((uint64_t*)&cgen_var_991, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013219 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013220 }
13221 uint32_t packetSize_vkCmdSetDeviceMaskKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13222 countingStream->rewind();
13223 uint32_t opcode_vkCmdSetDeviceMaskKHR = OP_vkCmdSetDeviceMaskKHR;
13224 stream->write(&opcode_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
13225 stream->write(&packetSize_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013226 uint64_t cgen_var_992;
13227 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_992, 1);
13228 stream->write((uint64_t*)&cgen_var_992, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013229 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013230}
13231
13232void VkEncoder::vkCmdDispatchBaseKHR(
13233 VkCommandBuffer commandBuffer,
13234 uint32_t baseGroupX,
13235 uint32_t baseGroupY,
13236 uint32_t baseGroupZ,
13237 uint32_t groupCountX,
13238 uint32_t groupCountY,
13239 uint32_t groupCountZ)
13240{
13241 auto stream = mImpl->stream();
13242 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013243 auto resources = mImpl->resources();
13244 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013245 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013246 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013247 uint32_t local_baseGroupX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013248 uint32_t local_baseGroupY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013249 uint32_t local_baseGroupZ;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013250 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013251 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013252 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013253 local_commandBuffer = commandBuffer;
13254 local_baseGroupX = baseGroupX;
13255 local_baseGroupY = baseGroupY;
13256 local_baseGroupZ = baseGroupZ;
13257 local_groupCountX = groupCountX;
13258 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013259 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013260 countingStream->rewind();
13261 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013262 uint64_t cgen_var_993;
13263 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_993, 1);
13264 countingStream->write((uint64_t*)&cgen_var_993, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013265 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
13266 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
13267 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
13268 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
13269 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
13270 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013271 }
13272 uint32_t packetSize_vkCmdDispatchBaseKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13273 countingStream->rewind();
13274 uint32_t opcode_vkCmdDispatchBaseKHR = OP_vkCmdDispatchBaseKHR;
13275 stream->write(&opcode_vkCmdDispatchBaseKHR, sizeof(uint32_t));
13276 stream->write(&packetSize_vkCmdDispatchBaseKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013277 uint64_t cgen_var_994;
13278 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_994, 1);
13279 stream->write((uint64_t*)&cgen_var_994, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013280 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
13281 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
13282 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
13283 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
13284 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
13285 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013286}
13287
13288#endif
13289#ifdef VK_KHR_shader_draw_parameters
13290#endif
13291#ifdef VK_KHR_maintenance1
13292void VkEncoder::vkTrimCommandPoolKHR(
13293 VkDevice device,
13294 VkCommandPool commandPool,
13295 VkCommandPoolTrimFlags flags)
13296{
13297 auto stream = mImpl->stream();
13298 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013299 auto resources = mImpl->resources();
13300 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013301 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013302 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013303 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013304 VkCommandPoolTrimFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013305 local_device = device;
13306 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013307 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013308 countingStream->rewind();
13309 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013310 uint64_t cgen_var_995;
13311 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_995, 1);
13312 countingStream->write((uint64_t*)&cgen_var_995, 1 * 8);
13313 uint64_t cgen_var_996;
13314 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_996, 1);
13315 countingStream->write((uint64_t*)&cgen_var_996, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013316 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013317 }
13318 uint32_t packetSize_vkTrimCommandPoolKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13319 countingStream->rewind();
13320 uint32_t opcode_vkTrimCommandPoolKHR = OP_vkTrimCommandPoolKHR;
13321 stream->write(&opcode_vkTrimCommandPoolKHR, sizeof(uint32_t));
13322 stream->write(&packetSize_vkTrimCommandPoolKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013323 uint64_t cgen_var_997;
13324 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_997, 1);
13325 stream->write((uint64_t*)&cgen_var_997, 1 * 8);
13326 uint64_t cgen_var_998;
13327 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_998, 1);
13328 stream->write((uint64_t*)&cgen_var_998, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013329 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013330}
13331
13332#endif
13333#ifdef VK_KHR_device_group_creation
13334VkResult VkEncoder::vkEnumeratePhysicalDeviceGroupsKHR(
13335 VkInstance instance,
13336 uint32_t* pPhysicalDeviceGroupCount,
13337 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
13338{
13339 auto stream = mImpl->stream();
13340 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013341 auto resources = mImpl->resources();
13342 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013343 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013344 VkInstance local_instance;
13345 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013346 countingStream->rewind();
13347 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013348 uint64_t cgen_var_999;
13349 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_999, 1);
13350 countingStream->write((uint64_t*)&cgen_var_999, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013351 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013352 uint64_t cgen_var_1000 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
13353 countingStream->putBe64(cgen_var_1000);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013354 if (pPhysicalDeviceGroupCount)
13355 {
13356 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
13357 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013358 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013359 uint64_t cgen_var_1001 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
13360 countingStream->putBe64(cgen_var_1001);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013361 if (pPhysicalDeviceGroupProperties)
13362 {
13363 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
13364 {
13365 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
13366 }
13367 }
13368 }
13369 uint32_t packetSize_vkEnumeratePhysicalDeviceGroupsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13370 countingStream->rewind();
13371 uint32_t opcode_vkEnumeratePhysicalDeviceGroupsKHR = OP_vkEnumeratePhysicalDeviceGroupsKHR;
13372 stream->write(&opcode_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
13373 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013374 uint64_t cgen_var_1002;
13375 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1002, 1);
13376 stream->write((uint64_t*)&cgen_var_1002, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013377 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013378 uint64_t cgen_var_1003 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
13379 stream->putBe64(cgen_var_1003);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013380 if (pPhysicalDeviceGroupCount)
13381 {
13382 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
13383 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013384 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013385 uint64_t cgen_var_1004 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
13386 stream->putBe64(cgen_var_1004);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013387 if (pPhysicalDeviceGroupProperties)
13388 {
13389 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
13390 {
13391 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
13392 }
13393 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013394 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013395 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013396 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013397 if (pPhysicalDeviceGroupCount)
13398 {
13399 if (!(check_pPhysicalDeviceGroupCount))
13400 {
13401 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
13402 }
13403 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
13404 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013405 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013406 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013407 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013408 if (pPhysicalDeviceGroupProperties)
13409 {
13410 if (!(check_pPhysicalDeviceGroupProperties))
13411 {
13412 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
13413 }
13414 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
13415 {
13416 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
13417 }
13418 }
13419 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
13420 stream->read(&vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013421 countingStream->clearPool();
13422 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013423 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013424 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
13425}
13426
13427#endif
13428#ifdef VK_KHR_external_memory_capabilities
13429void VkEncoder::vkGetPhysicalDeviceExternalBufferPropertiesKHR(
13430 VkPhysicalDevice physicalDevice,
13431 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
13432 VkExternalBufferProperties* pExternalBufferProperties)
13433{
13434 auto stream = mImpl->stream();
13435 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013436 auto resources = mImpl->resources();
13437 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013438 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013439 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013440 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013441 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013442 local_pExternalBufferInfo = nullptr;
13443 if (pExternalBufferInfo)
13444 {
13445 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
13446 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
13447 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013448 if (local_pExternalBufferInfo)
13449 {
13450 transform_VkPhysicalDeviceExternalBufferInfo(mImpl->resources(), (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
13451 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013452 countingStream->rewind();
13453 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013454 uint64_t cgen_var_1007;
13455 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1007, 1);
13456 countingStream->write((uint64_t*)&cgen_var_1007, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013457 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013458 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
13459 }
13460 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13461 countingStream->rewind();
13462 uint32_t opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR = OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR;
13463 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
13464 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013465 uint64_t cgen_var_1008;
13466 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1008, 1);
13467 stream->write((uint64_t*)&cgen_var_1008, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013468 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013469 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
13470 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
13471}
13472
13473#endif
13474#ifdef VK_KHR_external_memory
13475#endif
13476#ifdef VK_KHR_external_memory_win32
13477VkResult VkEncoder::vkGetMemoryWin32HandleKHR(
13478 VkDevice device,
13479 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
13480 HANDLE* pHandle)
13481{
13482 auto stream = mImpl->stream();
13483 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013484 auto resources = mImpl->resources();
13485 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013486 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013487 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013488 VkMemoryGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013489 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013490 local_pGetWin32HandleInfo = nullptr;
13491 if (pGetWin32HandleInfo)
13492 {
13493 local_pGetWin32HandleInfo = (VkMemoryGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkMemoryGetWin32HandleInfoKHR));
13494 deepcopy_VkMemoryGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
13495 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013496 if (local_pGetWin32HandleInfo)
13497 {
13498 transform_VkMemoryGetWin32HandleInfoKHR(mImpl->resources(), (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
13499 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013500 countingStream->rewind();
13501 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013502 uint64_t cgen_var_1009;
13503 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1009, 1);
13504 countingStream->write((uint64_t*)&cgen_var_1009, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013505 marshal_VkMemoryGetWin32HandleInfoKHR(countingStream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013506 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
13507 }
13508 uint32_t packetSize_vkGetMemoryWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13509 countingStream->rewind();
13510 uint32_t opcode_vkGetMemoryWin32HandleKHR = OP_vkGetMemoryWin32HandleKHR;
13511 stream->write(&opcode_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
13512 stream->write(&packetSize_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013513 uint64_t cgen_var_1010;
13514 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1010, 1);
13515 stream->write((uint64_t*)&cgen_var_1010, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013516 marshal_VkMemoryGetWin32HandleInfoKHR(stream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013517 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
13518 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
13519 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
13520 stream->read(&vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013521 countingStream->clearPool();
13522 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013523 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013524 return vkGetMemoryWin32HandleKHR_VkResult_return;
13525}
13526
13527VkResult VkEncoder::vkGetMemoryWin32HandlePropertiesKHR(
13528 VkDevice device,
13529 VkExternalMemoryHandleTypeFlagBits handleType,
13530 HANDLE handle,
13531 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
13532{
13533 auto stream = mImpl->stream();
13534 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013535 auto resources = mImpl->resources();
13536 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013537 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013538 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013539 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013540 HANDLE local_handle;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013541 local_device = device;
13542 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013543 local_handle = handle;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013544 countingStream->rewind();
13545 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013546 uint64_t cgen_var_1011;
13547 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1011, 1);
13548 countingStream->write((uint64_t*)&cgen_var_1011, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013549 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
13550 countingStream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013551 marshal_VkMemoryWin32HandlePropertiesKHR(countingStream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
13552 }
13553 uint32_t packetSize_vkGetMemoryWin32HandlePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13554 countingStream->rewind();
13555 uint32_t opcode_vkGetMemoryWin32HandlePropertiesKHR = OP_vkGetMemoryWin32HandlePropertiesKHR;
13556 stream->write(&opcode_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
13557 stream->write(&packetSize_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013558 uint64_t cgen_var_1012;
13559 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1012, 1);
13560 stream->write((uint64_t*)&cgen_var_1012, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013561 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
13562 stream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013563 marshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
13564 unmarshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
13565 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
13566 stream->read(&vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013567 countingStream->clearPool();
13568 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013569 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013570 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
13571}
13572
13573#endif
13574#ifdef VK_KHR_external_memory_fd
13575VkResult VkEncoder::vkGetMemoryFdKHR(
13576 VkDevice device,
13577 const VkMemoryGetFdInfoKHR* pGetFdInfo,
13578 int* pFd)
13579{
13580 auto stream = mImpl->stream();
13581 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013582 auto resources = mImpl->resources();
13583 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013584 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013585 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013586 VkMemoryGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013587 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013588 local_pGetFdInfo = nullptr;
13589 if (pGetFdInfo)
13590 {
13591 local_pGetFdInfo = (VkMemoryGetFdInfoKHR*)pool->alloc(sizeof(const VkMemoryGetFdInfoKHR));
13592 deepcopy_VkMemoryGetFdInfoKHR(pool, pGetFdInfo, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
13593 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013594 if (local_pGetFdInfo)
13595 {
13596 transform_VkMemoryGetFdInfoKHR(mImpl->resources(), (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
13597 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013598 countingStream->rewind();
13599 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013600 uint64_t cgen_var_1013;
13601 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1013, 1);
13602 countingStream->write((uint64_t*)&cgen_var_1013, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013603 marshal_VkMemoryGetFdInfoKHR(countingStream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013604 countingStream->write((int*)pFd, sizeof(int));
13605 }
13606 uint32_t packetSize_vkGetMemoryFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13607 countingStream->rewind();
13608 uint32_t opcode_vkGetMemoryFdKHR = OP_vkGetMemoryFdKHR;
13609 stream->write(&opcode_vkGetMemoryFdKHR, sizeof(uint32_t));
13610 stream->write(&packetSize_vkGetMemoryFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013611 uint64_t cgen_var_1014;
13612 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1014, 1);
13613 stream->write((uint64_t*)&cgen_var_1014, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013614 marshal_VkMemoryGetFdInfoKHR(stream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013615 stream->write((int*)pFd, sizeof(int));
13616 stream->read((int*)pFd, sizeof(int));
13617 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
13618 stream->read(&vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013619 countingStream->clearPool();
13620 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013621 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013622 return vkGetMemoryFdKHR_VkResult_return;
13623}
13624
13625VkResult VkEncoder::vkGetMemoryFdPropertiesKHR(
13626 VkDevice device,
13627 VkExternalMemoryHandleTypeFlagBits handleType,
13628 int fd,
13629 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
13630{
13631 auto stream = mImpl->stream();
13632 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013633 auto resources = mImpl->resources();
13634 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013635 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013636 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013637 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013638 int local_fd;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013639 local_device = device;
13640 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013641 local_fd = fd;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013642 countingStream->rewind();
13643 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013644 uint64_t cgen_var_1015;
13645 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1015, 1);
13646 countingStream->write((uint64_t*)&cgen_var_1015, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013647 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
13648 countingStream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013649 marshal_VkMemoryFdPropertiesKHR(countingStream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
13650 }
13651 uint32_t packetSize_vkGetMemoryFdPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13652 countingStream->rewind();
13653 uint32_t opcode_vkGetMemoryFdPropertiesKHR = OP_vkGetMemoryFdPropertiesKHR;
13654 stream->write(&opcode_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
13655 stream->write(&packetSize_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013656 uint64_t cgen_var_1016;
13657 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1016, 1);
13658 stream->write((uint64_t*)&cgen_var_1016, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013659 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
13660 stream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013661 marshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
13662 unmarshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
13663 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
13664 stream->read(&vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013665 countingStream->clearPool();
13666 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013667 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013668 return vkGetMemoryFdPropertiesKHR_VkResult_return;
13669}
13670
13671#endif
13672#ifdef VK_KHR_win32_keyed_mutex
13673#endif
13674#ifdef VK_KHR_external_semaphore_capabilities
13675void VkEncoder::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
13676 VkPhysicalDevice physicalDevice,
13677 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
13678 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
13679{
13680 auto stream = mImpl->stream();
13681 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013682 auto resources = mImpl->resources();
13683 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013684 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013685 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013686 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013687 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013688 local_pExternalSemaphoreInfo = nullptr;
13689 if (pExternalSemaphoreInfo)
13690 {
13691 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
13692 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
13693 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013694 if (local_pExternalSemaphoreInfo)
13695 {
13696 transform_VkPhysicalDeviceExternalSemaphoreInfo(mImpl->resources(), (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
13697 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013698 countingStream->rewind();
13699 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013700 uint64_t cgen_var_1017;
13701 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1017, 1);
13702 countingStream->write((uint64_t*)&cgen_var_1017, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013703 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013704 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13705 }
13706 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13707 countingStream->rewind();
13708 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
13709 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
13710 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013711 uint64_t cgen_var_1018;
13712 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1018, 1);
13713 stream->write((uint64_t*)&cgen_var_1018, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013714 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013715 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13716 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13717}
13718
13719#endif
13720#ifdef VK_KHR_external_semaphore
13721#endif
13722#ifdef VK_KHR_external_semaphore_win32
13723VkResult VkEncoder::vkImportSemaphoreWin32HandleKHR(
13724 VkDevice device,
13725 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
13726{
13727 auto stream = mImpl->stream();
13728 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013729 auto resources = mImpl->resources();
13730 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013731 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013732 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013733 VkImportSemaphoreWin32HandleInfoKHR* local_pImportSemaphoreWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013734 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013735 local_pImportSemaphoreWin32HandleInfo = nullptr;
13736 if (pImportSemaphoreWin32HandleInfo)
13737 {
13738 local_pImportSemaphoreWin32HandleInfo = (VkImportSemaphoreWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreWin32HandleInfoKHR));
13739 deepcopy_VkImportSemaphoreWin32HandleInfoKHR(pool, pImportSemaphoreWin32HandleInfo, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
13740 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013741 if (local_pImportSemaphoreWin32HandleInfo)
13742 {
13743 transform_VkImportSemaphoreWin32HandleInfoKHR(mImpl->resources(), (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
13744 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013745 countingStream->rewind();
13746 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013747 uint64_t cgen_var_1019;
13748 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1019, 1);
13749 countingStream->write((uint64_t*)&cgen_var_1019, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013750 marshal_VkImportSemaphoreWin32HandleInfoKHR(countingStream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013751 }
13752 uint32_t packetSize_vkImportSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13753 countingStream->rewind();
13754 uint32_t opcode_vkImportSemaphoreWin32HandleKHR = OP_vkImportSemaphoreWin32HandleKHR;
13755 stream->write(&opcode_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
13756 stream->write(&packetSize_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013757 uint64_t cgen_var_1020;
13758 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1020, 1);
13759 stream->write((uint64_t*)&cgen_var_1020, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013760 marshal_VkImportSemaphoreWin32HandleInfoKHR(stream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013761 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
13762 stream->read(&vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013763 countingStream->clearPool();
13764 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013765 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013766 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
13767}
13768
13769VkResult VkEncoder::vkGetSemaphoreWin32HandleKHR(
13770 VkDevice device,
13771 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
13772 HANDLE* pHandle)
13773{
13774 auto stream = mImpl->stream();
13775 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013776 auto resources = mImpl->resources();
13777 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013778 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013779 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013780 VkSemaphoreGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013781 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013782 local_pGetWin32HandleInfo = nullptr;
13783 if (pGetWin32HandleInfo)
13784 {
13785 local_pGetWin32HandleInfo = (VkSemaphoreGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetWin32HandleInfoKHR));
13786 deepcopy_VkSemaphoreGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
13787 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013788 if (local_pGetWin32HandleInfo)
13789 {
13790 transform_VkSemaphoreGetWin32HandleInfoKHR(mImpl->resources(), (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
13791 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013792 countingStream->rewind();
13793 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013794 uint64_t cgen_var_1021;
13795 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1021, 1);
13796 countingStream->write((uint64_t*)&cgen_var_1021, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013797 marshal_VkSemaphoreGetWin32HandleInfoKHR(countingStream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013798 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
13799 }
13800 uint32_t packetSize_vkGetSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13801 countingStream->rewind();
13802 uint32_t opcode_vkGetSemaphoreWin32HandleKHR = OP_vkGetSemaphoreWin32HandleKHR;
13803 stream->write(&opcode_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
13804 stream->write(&packetSize_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013805 uint64_t cgen_var_1022;
13806 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1022, 1);
13807 stream->write((uint64_t*)&cgen_var_1022, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013808 marshal_VkSemaphoreGetWin32HandleInfoKHR(stream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013809 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
13810 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
13811 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
13812 stream->read(&vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013813 countingStream->clearPool();
13814 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013815 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013816 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
13817}
13818
13819#endif
13820#ifdef VK_KHR_external_semaphore_fd
13821VkResult VkEncoder::vkImportSemaphoreFdKHR(
13822 VkDevice device,
13823 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
13824{
13825 auto stream = mImpl->stream();
13826 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013827 auto resources = mImpl->resources();
13828 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013829 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013830 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013831 VkImportSemaphoreFdInfoKHR* local_pImportSemaphoreFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013832 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013833 local_pImportSemaphoreFdInfo = nullptr;
13834 if (pImportSemaphoreFdInfo)
13835 {
13836 local_pImportSemaphoreFdInfo = (VkImportSemaphoreFdInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreFdInfoKHR));
13837 deepcopy_VkImportSemaphoreFdInfoKHR(pool, pImportSemaphoreFdInfo, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
13838 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013839 if (local_pImportSemaphoreFdInfo)
13840 {
13841 transform_VkImportSemaphoreFdInfoKHR(mImpl->resources(), (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
13842 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013843 countingStream->rewind();
13844 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013845 uint64_t cgen_var_1023;
13846 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1023, 1);
13847 countingStream->write((uint64_t*)&cgen_var_1023, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013848 marshal_VkImportSemaphoreFdInfoKHR(countingStream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013849 }
13850 uint32_t packetSize_vkImportSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13851 countingStream->rewind();
13852 uint32_t opcode_vkImportSemaphoreFdKHR = OP_vkImportSemaphoreFdKHR;
13853 stream->write(&opcode_vkImportSemaphoreFdKHR, sizeof(uint32_t));
13854 stream->write(&packetSize_vkImportSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013855 uint64_t cgen_var_1024;
13856 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1024, 1);
13857 stream->write((uint64_t*)&cgen_var_1024, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013858 marshal_VkImportSemaphoreFdInfoKHR(stream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013859 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
13860 stream->read(&vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013861 countingStream->clearPool();
13862 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013863 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013864 return vkImportSemaphoreFdKHR_VkResult_return;
13865}
13866
13867VkResult VkEncoder::vkGetSemaphoreFdKHR(
13868 VkDevice device,
13869 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
13870 int* pFd)
13871{
13872 auto stream = mImpl->stream();
13873 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013874 auto resources = mImpl->resources();
13875 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013876 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013877 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013878 VkSemaphoreGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013879 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013880 local_pGetFdInfo = nullptr;
13881 if (pGetFdInfo)
13882 {
13883 local_pGetFdInfo = (VkSemaphoreGetFdInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetFdInfoKHR));
13884 deepcopy_VkSemaphoreGetFdInfoKHR(pool, pGetFdInfo, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
13885 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013886 if (local_pGetFdInfo)
13887 {
13888 transform_VkSemaphoreGetFdInfoKHR(mImpl->resources(), (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
13889 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013890 countingStream->rewind();
13891 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013892 uint64_t cgen_var_1025;
13893 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1025, 1);
13894 countingStream->write((uint64_t*)&cgen_var_1025, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013895 marshal_VkSemaphoreGetFdInfoKHR(countingStream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013896 countingStream->write((int*)pFd, sizeof(int));
13897 }
13898 uint32_t packetSize_vkGetSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13899 countingStream->rewind();
13900 uint32_t opcode_vkGetSemaphoreFdKHR = OP_vkGetSemaphoreFdKHR;
13901 stream->write(&opcode_vkGetSemaphoreFdKHR, sizeof(uint32_t));
13902 stream->write(&packetSize_vkGetSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013903 uint64_t cgen_var_1026;
13904 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1026, 1);
13905 stream->write((uint64_t*)&cgen_var_1026, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013906 marshal_VkSemaphoreGetFdInfoKHR(stream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013907 stream->write((int*)pFd, sizeof(int));
13908 stream->read((int*)pFd, sizeof(int));
13909 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
13910 stream->read(&vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013911 countingStream->clearPool();
13912 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013913 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013914 return vkGetSemaphoreFdKHR_VkResult_return;
13915}
13916
13917#endif
13918#ifdef VK_KHR_push_descriptor
13919void VkEncoder::vkCmdPushDescriptorSetKHR(
13920 VkCommandBuffer commandBuffer,
13921 VkPipelineBindPoint pipelineBindPoint,
13922 VkPipelineLayout layout,
13923 uint32_t set,
13924 uint32_t descriptorWriteCount,
13925 const VkWriteDescriptorSet* pDescriptorWrites)
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 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013933 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013934 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013935 uint32_t local_set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013936 uint32_t local_descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013937 VkWriteDescriptorSet* local_pDescriptorWrites;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013938 local_commandBuffer = commandBuffer;
13939 local_pipelineBindPoint = pipelineBindPoint;
13940 local_layout = layout;
13941 local_set = set;
13942 local_descriptorWriteCount = descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013943 local_pDescriptorWrites = nullptr;
13944 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013945 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013946 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013947 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
13948 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013949 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
13950 }
13951 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013952 if (local_pDescriptorWrites)
13953 {
13954 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
13955 {
13956 transform_VkWriteDescriptorSet(mImpl->resources(), (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
13957 }
13958 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013959 countingStream->rewind();
13960 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013961 uint64_t cgen_var_1027;
13962 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1027, 1);
13963 countingStream->write((uint64_t*)&cgen_var_1027, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013964 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013965 uint64_t cgen_var_1028;
13966 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1028, 1);
13967 countingStream->write((uint64_t*)&cgen_var_1028, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013968 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
13969 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
13970 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
13971 {
13972 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013973 }
13974 }
13975 uint32_t packetSize_vkCmdPushDescriptorSetKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13976 countingStream->rewind();
13977 uint32_t opcode_vkCmdPushDescriptorSetKHR = OP_vkCmdPushDescriptorSetKHR;
13978 stream->write(&opcode_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
13979 stream->write(&packetSize_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013980 uint64_t cgen_var_1029;
13981 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1029, 1);
13982 stream->write((uint64_t*)&cgen_var_1029, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013983 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013984 uint64_t cgen_var_1030;
13985 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1030, 1);
13986 stream->write((uint64_t*)&cgen_var_1030, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013987 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
13988 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013989 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
13990 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013991 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013992 }
13993}
13994
13995void VkEncoder::vkCmdPushDescriptorSetWithTemplateKHR(
13996 VkCommandBuffer commandBuffer,
13997 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
13998 VkPipelineLayout layout,
13999 uint32_t set,
14000 const void* pData)
14001{
14002 auto stream = mImpl->stream();
14003 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014004 auto resources = mImpl->resources();
14005 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014006 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014007 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014008 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014009 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014010 uint32_t local_set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014011 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014012 local_commandBuffer = commandBuffer;
14013 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
14014 local_layout = layout;
14015 local_set = set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014016 local_pData = nullptr;
14017 if (pData)
14018 {
14019 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
14020 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014021 countingStream->rewind();
14022 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014023 uint64_t cgen_var_1031;
14024 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1031, 1);
14025 countingStream->write((uint64_t*)&cgen_var_1031, 1 * 8);
14026 uint64_t cgen_var_1032;
14027 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1032, 1);
14028 countingStream->write((uint64_t*)&cgen_var_1032, 1 * 8);
14029 uint64_t cgen_var_1033;
14030 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1033, 1);
14031 countingStream->write((uint64_t*)&cgen_var_1033, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014032 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014033 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014034 uint64_t cgen_var_1034 = (uint64_t)(uintptr_t)local_pData;
14035 countingStream->putBe64(cgen_var_1034);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014036 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014037 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014038 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014039 }
14040 }
14041 uint32_t packetSize_vkCmdPushDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14042 countingStream->rewind();
14043 uint32_t opcode_vkCmdPushDescriptorSetWithTemplateKHR = OP_vkCmdPushDescriptorSetWithTemplateKHR;
14044 stream->write(&opcode_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
14045 stream->write(&packetSize_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014046 uint64_t cgen_var_1035;
14047 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1035, 1);
14048 stream->write((uint64_t*)&cgen_var_1035, 1 * 8);
14049 uint64_t cgen_var_1036;
14050 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1036, 1);
14051 stream->write((uint64_t*)&cgen_var_1036, 1 * 8);
14052 uint64_t cgen_var_1037;
14053 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1037, 1);
14054 stream->write((uint64_t*)&cgen_var_1037, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014055 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014056 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014057 uint64_t cgen_var_1038 = (uint64_t)(uintptr_t)local_pData;
14058 stream->putBe64(cgen_var_1038);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014059 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014060 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014061 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014062 }
14063}
14064
14065#endif
14066#ifdef VK_KHR_16bit_storage
14067#endif
14068#ifdef VK_KHR_incremental_present
14069#endif
14070#ifdef VK_KHR_descriptor_update_template
14071VkResult VkEncoder::vkCreateDescriptorUpdateTemplateKHR(
14072 VkDevice device,
14073 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
14074 const VkAllocationCallbacks* pAllocator,
14075 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
14076{
14077 auto stream = mImpl->stream();
14078 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014079 auto resources = mImpl->resources();
14080 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014081 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014082 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014083 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014084 VkAllocationCallbacks* local_pAllocator;
14085 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014086 local_pCreateInfo = nullptr;
14087 if (pCreateInfo)
14088 {
14089 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
14090 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
14091 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014092 local_pAllocator = nullptr;
14093 if (pAllocator)
14094 {
14095 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14096 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14097 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014098 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080014099 if (local_pCreateInfo)
14100 {
14101 transform_VkDescriptorUpdateTemplateCreateInfo(mImpl->resources(), (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
14102 }
14103 if (local_pAllocator)
14104 {
14105 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
14106 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014107 countingStream->rewind();
14108 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014109 uint64_t cgen_var_1039;
14110 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1039, 1);
14111 countingStream->write((uint64_t*)&cgen_var_1039, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014112 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014113 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014114 uint64_t cgen_var_1040 = (uint64_t)(uintptr_t)local_pAllocator;
14115 countingStream->putBe64(cgen_var_1040);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014116 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014117 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014118 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014119 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014120 uint64_t cgen_var_1041;
14121 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1041, 1);
14122 countingStream->write((uint64_t*)&cgen_var_1041, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014123 }
14124 uint32_t packetSize_vkCreateDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14125 countingStream->rewind();
14126 uint32_t opcode_vkCreateDescriptorUpdateTemplateKHR = OP_vkCreateDescriptorUpdateTemplateKHR;
14127 stream->write(&opcode_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
14128 stream->write(&packetSize_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014129 uint64_t cgen_var_1042;
14130 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1042, 1);
14131 stream->write((uint64_t*)&cgen_var_1042, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014132 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014133 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014134 uint64_t cgen_var_1043 = (uint64_t)(uintptr_t)local_pAllocator;
14135 stream->putBe64(cgen_var_1043);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014136 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014137 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014138 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014139 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080014140 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014141 uint64_t cgen_var_1044;
14142 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1044, 1);
14143 stream->write((uint64_t*)&cgen_var_1044, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080014144 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014145 uint64_t cgen_var_1045;
14146 stream->read((uint64_t*)&cgen_var_1045, 8);
14147 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_1045, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014148 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
14149 stream->read(&vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014150 countingStream->clearPool();
14151 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014152 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014153 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
14154}
14155
14156void VkEncoder::vkDestroyDescriptorUpdateTemplateKHR(
14157 VkDevice device,
14158 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
14159 const VkAllocationCallbacks* pAllocator)
14160{
14161 auto stream = mImpl->stream();
14162 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014163 auto resources = mImpl->resources();
14164 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014165 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014166 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014167 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014168 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014169 local_device = device;
14170 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014171 local_pAllocator = nullptr;
14172 if (pAllocator)
14173 {
14174 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14175 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14176 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014177 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080014178 if (local_pAllocator)
14179 {
14180 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
14181 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014182 countingStream->rewind();
14183 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014184 uint64_t cgen_var_1046;
14185 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1046, 1);
14186 countingStream->write((uint64_t*)&cgen_var_1046, 1 * 8);
14187 uint64_t cgen_var_1047;
14188 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1047, 1);
14189 countingStream->write((uint64_t*)&cgen_var_1047, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014190 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014191 uint64_t cgen_var_1048 = (uint64_t)(uintptr_t)local_pAllocator;
14192 countingStream->putBe64(cgen_var_1048);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014193 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014194 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014195 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014196 }
14197 }
14198 uint32_t packetSize_vkDestroyDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14199 countingStream->rewind();
14200 uint32_t opcode_vkDestroyDescriptorUpdateTemplateKHR = OP_vkDestroyDescriptorUpdateTemplateKHR;
14201 stream->write(&opcode_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
14202 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014203 uint64_t cgen_var_1049;
14204 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1049, 1);
14205 stream->write((uint64_t*)&cgen_var_1049, 1 * 8);
14206 uint64_t cgen_var_1050;
14207 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1050, 1);
14208 stream->write((uint64_t*)&cgen_var_1050, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014209 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014210 uint64_t cgen_var_1051 = (uint64_t)(uintptr_t)local_pAllocator;
14211 stream->putBe64(cgen_var_1051);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014212 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014213 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014214 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014215 }
14216}
14217
14218void VkEncoder::vkUpdateDescriptorSetWithTemplateKHR(
14219 VkDevice device,
14220 VkDescriptorSet descriptorSet,
14221 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
14222 const void* pData)
14223{
14224 auto stream = mImpl->stream();
14225 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014226 auto resources = mImpl->resources();
14227 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014228 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014229 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014230 VkDescriptorSet local_descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014231 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014232 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014233 local_device = device;
14234 local_descriptorSet = descriptorSet;
14235 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014236 local_pData = nullptr;
14237 if (pData)
14238 {
14239 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
14240 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014241 countingStream->rewind();
14242 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014243 uint64_t cgen_var_1052;
14244 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1052, 1);
14245 countingStream->write((uint64_t*)&cgen_var_1052, 1 * 8);
14246 uint64_t cgen_var_1053;
14247 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1053, 1);
14248 countingStream->write((uint64_t*)&cgen_var_1053, 1 * 8);
14249 uint64_t cgen_var_1054;
14250 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1054, 1);
14251 countingStream->write((uint64_t*)&cgen_var_1054, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014252 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014253 uint64_t cgen_var_1055 = (uint64_t)(uintptr_t)local_pData;
14254 countingStream->putBe64(cgen_var_1055);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014255 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014256 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014257 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014258 }
14259 }
14260 uint32_t packetSize_vkUpdateDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14261 countingStream->rewind();
14262 uint32_t opcode_vkUpdateDescriptorSetWithTemplateKHR = OP_vkUpdateDescriptorSetWithTemplateKHR;
14263 stream->write(&opcode_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
14264 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014265 uint64_t cgen_var_1056;
14266 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1056, 1);
14267 stream->write((uint64_t*)&cgen_var_1056, 1 * 8);
14268 uint64_t cgen_var_1057;
14269 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1057, 1);
14270 stream->write((uint64_t*)&cgen_var_1057, 1 * 8);
14271 uint64_t cgen_var_1058;
14272 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1058, 1);
14273 stream->write((uint64_t*)&cgen_var_1058, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014274 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014275 uint64_t cgen_var_1059 = (uint64_t)(uintptr_t)local_pData;
14276 stream->putBe64(cgen_var_1059);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014277 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014278 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014279 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014280 }
14281}
14282
14283#endif
14284#ifdef VK_KHR_create_renderpass2
14285VkResult VkEncoder::vkCreateRenderPass2KHR(
14286 VkDevice device,
14287 const VkRenderPassCreateInfo2KHR* pCreateInfo,
14288 const VkAllocationCallbacks* pAllocator,
14289 VkRenderPass* pRenderPass)
14290{
14291 auto stream = mImpl->stream();
14292 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014293 auto resources = mImpl->resources();
14294 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014295 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014296 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014297 VkRenderPassCreateInfo2KHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014298 VkAllocationCallbacks* local_pAllocator;
14299 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014300 local_pCreateInfo = nullptr;
14301 if (pCreateInfo)
14302 {
14303 local_pCreateInfo = (VkRenderPassCreateInfo2KHR*)pool->alloc(sizeof(const VkRenderPassCreateInfo2KHR));
14304 deepcopy_VkRenderPassCreateInfo2KHR(pool, pCreateInfo, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
14305 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014306 local_pAllocator = nullptr;
14307 if (pAllocator)
14308 {
14309 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14310 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14311 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014312 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080014313 if (local_pCreateInfo)
14314 {
14315 transform_VkRenderPassCreateInfo2KHR(mImpl->resources(), (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
14316 }
14317 if (local_pAllocator)
14318 {
14319 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
14320 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014321 countingStream->rewind();
14322 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014323 uint64_t cgen_var_1060;
14324 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1060, 1);
14325 countingStream->write((uint64_t*)&cgen_var_1060, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014326 marshal_VkRenderPassCreateInfo2KHR(countingStream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014327 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014328 uint64_t cgen_var_1061 = (uint64_t)(uintptr_t)local_pAllocator;
14329 countingStream->putBe64(cgen_var_1061);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014330 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014331 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014332 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014333 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014334 uint64_t cgen_var_1062;
14335 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1062, 1);
14336 countingStream->write((uint64_t*)&cgen_var_1062, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014337 }
14338 uint32_t packetSize_vkCreateRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14339 countingStream->rewind();
14340 uint32_t opcode_vkCreateRenderPass2KHR = OP_vkCreateRenderPass2KHR;
14341 stream->write(&opcode_vkCreateRenderPass2KHR, sizeof(uint32_t));
14342 stream->write(&packetSize_vkCreateRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014343 uint64_t cgen_var_1063;
14344 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1063, 1);
14345 stream->write((uint64_t*)&cgen_var_1063, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014346 marshal_VkRenderPassCreateInfo2KHR(stream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014347 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014348 uint64_t cgen_var_1064 = (uint64_t)(uintptr_t)local_pAllocator;
14349 stream->putBe64(cgen_var_1064);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014350 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014351 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014352 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014353 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080014354 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014355 uint64_t cgen_var_1065;
14356 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1065, 1);
14357 stream->write((uint64_t*)&cgen_var_1065, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080014358 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014359 uint64_t cgen_var_1066;
14360 stream->read((uint64_t*)&cgen_var_1066, 8);
14361 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_1066, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014362 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
14363 stream->read(&vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014364 countingStream->clearPool();
14365 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014366 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014367 return vkCreateRenderPass2KHR_VkResult_return;
14368}
14369
14370void VkEncoder::vkCmdBeginRenderPass2KHR(
14371 VkCommandBuffer commandBuffer,
14372 const VkRenderPassBeginInfo* pRenderPassBegin,
14373 const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
14374{
14375 auto stream = mImpl->stream();
14376 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014377 auto resources = mImpl->resources();
14378 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014379 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014380 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014381 VkRenderPassBeginInfo* local_pRenderPassBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014382 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
14383 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014384 local_pRenderPassBegin = nullptr;
14385 if (pRenderPassBegin)
14386 {
14387 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
14388 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
14389 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014390 local_pSubpassBeginInfo = nullptr;
14391 if (pSubpassBeginInfo)
14392 {
14393 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
14394 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
14395 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014396 if (local_pRenderPassBegin)
14397 {
14398 transform_VkRenderPassBeginInfo(mImpl->resources(), (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
14399 }
14400 if (local_pSubpassBeginInfo)
14401 {
14402 transform_VkSubpassBeginInfoKHR(mImpl->resources(), (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
14403 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014404 countingStream->rewind();
14405 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014406 uint64_t cgen_var_1067;
14407 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1067, 1);
14408 countingStream->write((uint64_t*)&cgen_var_1067, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014409 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
14410 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014411 }
14412 uint32_t packetSize_vkCmdBeginRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14413 countingStream->rewind();
14414 uint32_t opcode_vkCmdBeginRenderPass2KHR = OP_vkCmdBeginRenderPass2KHR;
14415 stream->write(&opcode_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
14416 stream->write(&packetSize_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014417 uint64_t cgen_var_1068;
14418 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1068, 1);
14419 stream->write((uint64_t*)&cgen_var_1068, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014420 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
14421 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014422}
14423
14424void VkEncoder::vkCmdNextSubpass2KHR(
14425 VkCommandBuffer commandBuffer,
14426 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
14427 const VkSubpassEndInfoKHR* pSubpassEndInfo)
14428{
14429 auto stream = mImpl->stream();
14430 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014431 auto resources = mImpl->resources();
14432 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014433 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014434 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014435 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014436 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
14437 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014438 local_pSubpassBeginInfo = nullptr;
14439 if (pSubpassBeginInfo)
14440 {
14441 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
14442 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
14443 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014444 local_pSubpassEndInfo = nullptr;
14445 if (pSubpassEndInfo)
14446 {
14447 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
14448 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
14449 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014450 if (local_pSubpassBeginInfo)
14451 {
14452 transform_VkSubpassBeginInfoKHR(mImpl->resources(), (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
14453 }
14454 if (local_pSubpassEndInfo)
14455 {
14456 transform_VkSubpassEndInfoKHR(mImpl->resources(), (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
14457 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014458 countingStream->rewind();
14459 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014460 uint64_t cgen_var_1069;
14461 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1069, 1);
14462 countingStream->write((uint64_t*)&cgen_var_1069, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014463 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
14464 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014465 }
14466 uint32_t packetSize_vkCmdNextSubpass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14467 countingStream->rewind();
14468 uint32_t opcode_vkCmdNextSubpass2KHR = OP_vkCmdNextSubpass2KHR;
14469 stream->write(&opcode_vkCmdNextSubpass2KHR, sizeof(uint32_t));
14470 stream->write(&packetSize_vkCmdNextSubpass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014471 uint64_t cgen_var_1070;
14472 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1070, 1);
14473 stream->write((uint64_t*)&cgen_var_1070, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014474 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
14475 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014476}
14477
14478void VkEncoder::vkCmdEndRenderPass2KHR(
14479 VkCommandBuffer commandBuffer,
14480 const VkSubpassEndInfoKHR* pSubpassEndInfo)
14481{
14482 auto stream = mImpl->stream();
14483 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014484 auto resources = mImpl->resources();
14485 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014486 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014487 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014488 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014489 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014490 local_pSubpassEndInfo = nullptr;
14491 if (pSubpassEndInfo)
14492 {
14493 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
14494 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
14495 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014496 if (local_pSubpassEndInfo)
14497 {
14498 transform_VkSubpassEndInfoKHR(mImpl->resources(), (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
14499 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014500 countingStream->rewind();
14501 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014502 uint64_t cgen_var_1071;
14503 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1071, 1);
14504 countingStream->write((uint64_t*)&cgen_var_1071, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014505 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014506 }
14507 uint32_t packetSize_vkCmdEndRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14508 countingStream->rewind();
14509 uint32_t opcode_vkCmdEndRenderPass2KHR = OP_vkCmdEndRenderPass2KHR;
14510 stream->write(&opcode_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
14511 stream->write(&packetSize_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014512 uint64_t cgen_var_1072;
14513 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1072, 1);
14514 stream->write((uint64_t*)&cgen_var_1072, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014515 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014516}
14517
14518#endif
14519#ifdef VK_KHR_shared_presentable_image
14520VkResult VkEncoder::vkGetSwapchainStatusKHR(
14521 VkDevice device,
14522 VkSwapchainKHR swapchain)
14523{
14524 auto stream = mImpl->stream();
14525 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014526 auto resources = mImpl->resources();
14527 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014528 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014529 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014530 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014531 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014532 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014533 countingStream->rewind();
14534 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014535 uint64_t cgen_var_1073;
14536 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1073, 1);
14537 countingStream->write((uint64_t*)&cgen_var_1073, 1 * 8);
14538 uint64_t cgen_var_1074;
14539 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1074, 1);
14540 countingStream->write((uint64_t*)&cgen_var_1074, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014541 }
14542 uint32_t packetSize_vkGetSwapchainStatusKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14543 countingStream->rewind();
14544 uint32_t opcode_vkGetSwapchainStatusKHR = OP_vkGetSwapchainStatusKHR;
14545 stream->write(&opcode_vkGetSwapchainStatusKHR, sizeof(uint32_t));
14546 stream->write(&packetSize_vkGetSwapchainStatusKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014547 uint64_t cgen_var_1075;
14548 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1075, 1);
14549 stream->write((uint64_t*)&cgen_var_1075, 1 * 8);
14550 uint64_t cgen_var_1076;
14551 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1076, 1);
14552 stream->write((uint64_t*)&cgen_var_1076, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014553 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
14554 stream->read(&vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014555 countingStream->clearPool();
14556 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014557 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014558 return vkGetSwapchainStatusKHR_VkResult_return;
14559}
14560
14561#endif
14562#ifdef VK_KHR_external_fence_capabilities
14563void VkEncoder::vkGetPhysicalDeviceExternalFencePropertiesKHR(
14564 VkPhysicalDevice physicalDevice,
14565 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
14566 VkExternalFenceProperties* pExternalFenceProperties)
14567{
14568 auto stream = mImpl->stream();
14569 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014570 auto resources = mImpl->resources();
14571 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014572 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014573 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014574 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014575 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014576 local_pExternalFenceInfo = nullptr;
14577 if (pExternalFenceInfo)
14578 {
14579 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
14580 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
14581 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014582 if (local_pExternalFenceInfo)
14583 {
14584 transform_VkPhysicalDeviceExternalFenceInfo(mImpl->resources(), (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
14585 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014586 countingStream->rewind();
14587 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014588 uint64_t cgen_var_1077;
14589 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1077, 1);
14590 countingStream->write((uint64_t*)&cgen_var_1077, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014591 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014592 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
14593 }
14594 uint32_t packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14595 countingStream->rewind();
14596 uint32_t opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR = OP_vkGetPhysicalDeviceExternalFencePropertiesKHR;
14597 stream->write(&opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
14598 stream->write(&packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014599 uint64_t cgen_var_1078;
14600 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1078, 1);
14601 stream->write((uint64_t*)&cgen_var_1078, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014602 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014603 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
14604 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
14605}
14606
14607#endif
14608#ifdef VK_KHR_external_fence
14609#endif
14610#ifdef VK_KHR_external_fence_win32
14611VkResult VkEncoder::vkImportFenceWin32HandleKHR(
14612 VkDevice device,
14613 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
14614{
14615 auto stream = mImpl->stream();
14616 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014617 auto resources = mImpl->resources();
14618 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014619 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014620 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014621 VkImportFenceWin32HandleInfoKHR* local_pImportFenceWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014622 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014623 local_pImportFenceWin32HandleInfo = nullptr;
14624 if (pImportFenceWin32HandleInfo)
14625 {
14626 local_pImportFenceWin32HandleInfo = (VkImportFenceWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportFenceWin32HandleInfoKHR));
14627 deepcopy_VkImportFenceWin32HandleInfoKHR(pool, pImportFenceWin32HandleInfo, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
14628 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014629 if (local_pImportFenceWin32HandleInfo)
14630 {
14631 transform_VkImportFenceWin32HandleInfoKHR(mImpl->resources(), (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
14632 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014633 countingStream->rewind();
14634 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014635 uint64_t cgen_var_1079;
14636 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1079, 1);
14637 countingStream->write((uint64_t*)&cgen_var_1079, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014638 marshal_VkImportFenceWin32HandleInfoKHR(countingStream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014639 }
14640 uint32_t packetSize_vkImportFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14641 countingStream->rewind();
14642 uint32_t opcode_vkImportFenceWin32HandleKHR = OP_vkImportFenceWin32HandleKHR;
14643 stream->write(&opcode_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
14644 stream->write(&packetSize_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014645 uint64_t cgen_var_1080;
14646 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1080, 1);
14647 stream->write((uint64_t*)&cgen_var_1080, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014648 marshal_VkImportFenceWin32HandleInfoKHR(stream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014649 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
14650 stream->read(&vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014651 countingStream->clearPool();
14652 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014653 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014654 return vkImportFenceWin32HandleKHR_VkResult_return;
14655}
14656
14657VkResult VkEncoder::vkGetFenceWin32HandleKHR(
14658 VkDevice device,
14659 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
14660 HANDLE* pHandle)
14661{
14662 auto stream = mImpl->stream();
14663 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014664 auto resources = mImpl->resources();
14665 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014666 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014667 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014668 VkFenceGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014669 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014670 local_pGetWin32HandleInfo = nullptr;
14671 if (pGetWin32HandleInfo)
14672 {
14673 local_pGetWin32HandleInfo = (VkFenceGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkFenceGetWin32HandleInfoKHR));
14674 deepcopy_VkFenceGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
14675 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014676 if (local_pGetWin32HandleInfo)
14677 {
14678 transform_VkFenceGetWin32HandleInfoKHR(mImpl->resources(), (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
14679 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014680 countingStream->rewind();
14681 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014682 uint64_t cgen_var_1081;
14683 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1081, 1);
14684 countingStream->write((uint64_t*)&cgen_var_1081, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014685 marshal_VkFenceGetWin32HandleInfoKHR(countingStream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014686 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
14687 }
14688 uint32_t packetSize_vkGetFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14689 countingStream->rewind();
14690 uint32_t opcode_vkGetFenceWin32HandleKHR = OP_vkGetFenceWin32HandleKHR;
14691 stream->write(&opcode_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
14692 stream->write(&packetSize_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014693 uint64_t cgen_var_1082;
14694 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1082, 1);
14695 stream->write((uint64_t*)&cgen_var_1082, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014696 marshal_VkFenceGetWin32HandleInfoKHR(stream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014697 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
14698 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
14699 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
14700 stream->read(&vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014701 countingStream->clearPool();
14702 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014703 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014704 return vkGetFenceWin32HandleKHR_VkResult_return;
14705}
14706
14707#endif
14708#ifdef VK_KHR_external_fence_fd
14709VkResult VkEncoder::vkImportFenceFdKHR(
14710 VkDevice device,
14711 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
14712{
14713 auto stream = mImpl->stream();
14714 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014715 auto resources = mImpl->resources();
14716 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014717 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014718 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014719 VkImportFenceFdInfoKHR* local_pImportFenceFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014720 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014721 local_pImportFenceFdInfo = nullptr;
14722 if (pImportFenceFdInfo)
14723 {
14724 local_pImportFenceFdInfo = (VkImportFenceFdInfoKHR*)pool->alloc(sizeof(const VkImportFenceFdInfoKHR));
14725 deepcopy_VkImportFenceFdInfoKHR(pool, pImportFenceFdInfo, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
14726 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014727 if (local_pImportFenceFdInfo)
14728 {
14729 transform_VkImportFenceFdInfoKHR(mImpl->resources(), (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
14730 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014731 countingStream->rewind();
14732 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014733 uint64_t cgen_var_1083;
14734 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1083, 1);
14735 countingStream->write((uint64_t*)&cgen_var_1083, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014736 marshal_VkImportFenceFdInfoKHR(countingStream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014737 }
14738 uint32_t packetSize_vkImportFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14739 countingStream->rewind();
14740 uint32_t opcode_vkImportFenceFdKHR = OP_vkImportFenceFdKHR;
14741 stream->write(&opcode_vkImportFenceFdKHR, sizeof(uint32_t));
14742 stream->write(&packetSize_vkImportFenceFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014743 uint64_t cgen_var_1084;
14744 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1084, 1);
14745 stream->write((uint64_t*)&cgen_var_1084, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014746 marshal_VkImportFenceFdInfoKHR(stream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014747 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
14748 stream->read(&vkImportFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014749 countingStream->clearPool();
14750 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014751 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014752 return vkImportFenceFdKHR_VkResult_return;
14753}
14754
14755VkResult VkEncoder::vkGetFenceFdKHR(
14756 VkDevice device,
14757 const VkFenceGetFdInfoKHR* pGetFdInfo,
14758 int* pFd)
14759{
14760 auto stream = mImpl->stream();
14761 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014762 auto resources = mImpl->resources();
14763 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014764 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014765 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014766 VkFenceGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014767 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014768 local_pGetFdInfo = nullptr;
14769 if (pGetFdInfo)
14770 {
14771 local_pGetFdInfo = (VkFenceGetFdInfoKHR*)pool->alloc(sizeof(const VkFenceGetFdInfoKHR));
14772 deepcopy_VkFenceGetFdInfoKHR(pool, pGetFdInfo, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
14773 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014774 if (local_pGetFdInfo)
14775 {
14776 transform_VkFenceGetFdInfoKHR(mImpl->resources(), (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
14777 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014778 countingStream->rewind();
14779 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014780 uint64_t cgen_var_1085;
14781 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1085, 1);
14782 countingStream->write((uint64_t*)&cgen_var_1085, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014783 marshal_VkFenceGetFdInfoKHR(countingStream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014784 countingStream->write((int*)pFd, sizeof(int));
14785 }
14786 uint32_t packetSize_vkGetFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14787 countingStream->rewind();
14788 uint32_t opcode_vkGetFenceFdKHR = OP_vkGetFenceFdKHR;
14789 stream->write(&opcode_vkGetFenceFdKHR, sizeof(uint32_t));
14790 stream->write(&packetSize_vkGetFenceFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014791 uint64_t cgen_var_1086;
14792 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1086, 1);
14793 stream->write((uint64_t*)&cgen_var_1086, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014794 marshal_VkFenceGetFdInfoKHR(stream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014795 stream->write((int*)pFd, sizeof(int));
14796 stream->read((int*)pFd, sizeof(int));
14797 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
14798 stream->read(&vkGetFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014799 countingStream->clearPool();
14800 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014801 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014802 return vkGetFenceFdKHR_VkResult_return;
14803}
14804
14805#endif
14806#ifdef VK_KHR_maintenance2
14807#endif
14808#ifdef VK_KHR_get_surface_capabilities2
14809VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2KHR(
14810 VkPhysicalDevice physicalDevice,
14811 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
14812 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
14813{
14814 auto stream = mImpl->stream();
14815 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014816 auto resources = mImpl->resources();
14817 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014818 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014819 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014820 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014821 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014822 local_pSurfaceInfo = nullptr;
14823 if (pSurfaceInfo)
14824 {
14825 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
14826 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
14827 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014828 if (local_pSurfaceInfo)
14829 {
14830 transform_VkPhysicalDeviceSurfaceInfo2KHR(mImpl->resources(), (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
14831 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014832 countingStream->rewind();
14833 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014834 uint64_t cgen_var_1087;
14835 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1087, 1);
14836 countingStream->write((uint64_t*)&cgen_var_1087, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014837 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014838 marshal_VkSurfaceCapabilities2KHR(countingStream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
14839 }
14840 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14841 countingStream->rewind();
14842 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR = OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR;
14843 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
14844 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014845 uint64_t cgen_var_1088;
14846 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1088, 1);
14847 stream->write((uint64_t*)&cgen_var_1088, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014848 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014849 marshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
14850 unmarshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
14851 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
14852 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014853 countingStream->clearPool();
14854 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014855 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014856 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
14857}
14858
14859VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormats2KHR(
14860 VkPhysicalDevice physicalDevice,
14861 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
14862 uint32_t* pSurfaceFormatCount,
14863 VkSurfaceFormat2KHR* pSurfaceFormats)
14864{
14865 auto stream = mImpl->stream();
14866 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014867 auto resources = mImpl->resources();
14868 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014869 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014870 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014871 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014872 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014873 local_pSurfaceInfo = nullptr;
14874 if (pSurfaceInfo)
14875 {
14876 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
14877 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
14878 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014879 if (local_pSurfaceInfo)
14880 {
14881 transform_VkPhysicalDeviceSurfaceInfo2KHR(mImpl->resources(), (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
14882 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014883 countingStream->rewind();
14884 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014885 uint64_t cgen_var_1089;
14886 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1089, 1);
14887 countingStream->write((uint64_t*)&cgen_var_1089, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014888 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014889 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014890 uint64_t cgen_var_1090 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
14891 countingStream->putBe64(cgen_var_1090);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014892 if (pSurfaceFormatCount)
14893 {
14894 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
14895 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014896 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014897 uint64_t cgen_var_1091 = (uint64_t)(uintptr_t)pSurfaceFormats;
14898 countingStream->putBe64(cgen_var_1091);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014899 if (pSurfaceFormats)
14900 {
14901 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
14902 {
14903 marshal_VkSurfaceFormat2KHR(countingStream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
14904 }
14905 }
14906 }
14907 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14908 countingStream->rewind();
14909 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormats2KHR = OP_vkGetPhysicalDeviceSurfaceFormats2KHR;
14910 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
14911 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014912 uint64_t cgen_var_1092;
14913 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1092, 1);
14914 stream->write((uint64_t*)&cgen_var_1092, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014915 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014916 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014917 uint64_t cgen_var_1093 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
14918 stream->putBe64(cgen_var_1093);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014919 if (pSurfaceFormatCount)
14920 {
14921 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
14922 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014923 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014924 uint64_t cgen_var_1094 = (uint64_t)(uintptr_t)pSurfaceFormats;
14925 stream->putBe64(cgen_var_1094);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014926 if (pSurfaceFormats)
14927 {
14928 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
14929 {
14930 marshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
14931 }
14932 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014933 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014934 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014935 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014936 if (pSurfaceFormatCount)
14937 {
14938 if (!(check_pSurfaceFormatCount))
14939 {
14940 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
14941 }
14942 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
14943 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014944 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014945 VkSurfaceFormat2KHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014946 check_pSurfaceFormats = (VkSurfaceFormat2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014947 if (pSurfaceFormats)
14948 {
14949 if (!(check_pSurfaceFormats))
14950 {
14951 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
14952 }
14953 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
14954 {
14955 unmarshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
14956 }
14957 }
14958 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
14959 stream->read(&vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014960 countingStream->clearPool();
14961 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014962 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014963 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
14964}
14965
14966#endif
14967#ifdef VK_KHR_variable_pointers
14968#endif
14969#ifdef VK_KHR_get_display_properties2
14970VkResult VkEncoder::vkGetPhysicalDeviceDisplayProperties2KHR(
14971 VkPhysicalDevice physicalDevice,
14972 uint32_t* pPropertyCount,
14973 VkDisplayProperties2KHR* pProperties)
14974{
14975 auto stream = mImpl->stream();
14976 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014977 auto resources = mImpl->resources();
14978 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014979 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014980 VkPhysicalDevice local_physicalDevice;
14981 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014982 countingStream->rewind();
14983 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014984 uint64_t cgen_var_1097;
14985 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1097, 1);
14986 countingStream->write((uint64_t*)&cgen_var_1097, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014987 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014988 uint64_t cgen_var_1098 = (uint64_t)(uintptr_t)pPropertyCount;
14989 countingStream->putBe64(cgen_var_1098);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014990 if (pPropertyCount)
14991 {
14992 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14993 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014994 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014995 uint64_t cgen_var_1099 = (uint64_t)(uintptr_t)pProperties;
14996 countingStream->putBe64(cgen_var_1099);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014997 if (pProperties)
14998 {
14999 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15000 {
15001 marshal_VkDisplayProperties2KHR(countingStream, (VkDisplayProperties2KHR*)(pProperties + i));
15002 }
15003 }
15004 }
15005 uint32_t packetSize_vkGetPhysicalDeviceDisplayProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15006 countingStream->rewind();
15007 uint32_t opcode_vkGetPhysicalDeviceDisplayProperties2KHR = OP_vkGetPhysicalDeviceDisplayProperties2KHR;
15008 stream->write(&opcode_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
15009 stream->write(&packetSize_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015010 uint64_t cgen_var_1100;
15011 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1100, 1);
15012 stream->write((uint64_t*)&cgen_var_1100, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015013 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015014 uint64_t cgen_var_1101 = (uint64_t)(uintptr_t)pPropertyCount;
15015 stream->putBe64(cgen_var_1101);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015016 if (pPropertyCount)
15017 {
15018 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15019 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015020 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015021 uint64_t cgen_var_1102 = (uint64_t)(uintptr_t)pProperties;
15022 stream->putBe64(cgen_var_1102);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015023 if (pProperties)
15024 {
15025 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15026 {
15027 marshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
15028 }
15029 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015030 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015031 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015032 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015033 if (pPropertyCount)
15034 {
15035 if (!(check_pPropertyCount))
15036 {
15037 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
15038 }
15039 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
15040 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015041 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015042 VkDisplayProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015043 check_pProperties = (VkDisplayProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015044 if (pProperties)
15045 {
15046 if (!(check_pProperties))
15047 {
15048 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
15049 }
15050 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15051 {
15052 unmarshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
15053 }
15054 }
15055 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
15056 stream->read(&vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015057 countingStream->clearPool();
15058 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015059 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015060 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
15061}
15062
15063VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
15064 VkPhysicalDevice physicalDevice,
15065 uint32_t* pPropertyCount,
15066 VkDisplayPlaneProperties2KHR* pProperties)
15067{
15068 auto stream = mImpl->stream();
15069 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015070 auto resources = mImpl->resources();
15071 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015072 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015073 VkPhysicalDevice local_physicalDevice;
15074 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015075 countingStream->rewind();
15076 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015077 uint64_t cgen_var_1105;
15078 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1105, 1);
15079 countingStream->write((uint64_t*)&cgen_var_1105, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015080 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015081 uint64_t cgen_var_1106 = (uint64_t)(uintptr_t)pPropertyCount;
15082 countingStream->putBe64(cgen_var_1106);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015083 if (pPropertyCount)
15084 {
15085 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15086 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015087 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015088 uint64_t cgen_var_1107 = (uint64_t)(uintptr_t)pProperties;
15089 countingStream->putBe64(cgen_var_1107);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015090 if (pProperties)
15091 {
15092 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15093 {
15094 marshal_VkDisplayPlaneProperties2KHR(countingStream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
15095 }
15096 }
15097 }
15098 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15099 countingStream->rewind();
15100 uint32_t opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
15101 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
15102 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015103 uint64_t cgen_var_1108;
15104 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1108, 1);
15105 stream->write((uint64_t*)&cgen_var_1108, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015106 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015107 uint64_t cgen_var_1109 = (uint64_t)(uintptr_t)pPropertyCount;
15108 stream->putBe64(cgen_var_1109);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015109 if (pPropertyCount)
15110 {
15111 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15112 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015113 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015114 uint64_t cgen_var_1110 = (uint64_t)(uintptr_t)pProperties;
15115 stream->putBe64(cgen_var_1110);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015116 if (pProperties)
15117 {
15118 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15119 {
15120 marshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
15121 }
15122 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015123 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015124 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015125 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015126 if (pPropertyCount)
15127 {
15128 if (!(check_pPropertyCount))
15129 {
15130 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
15131 }
15132 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
15133 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015134 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015135 VkDisplayPlaneProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015136 check_pProperties = (VkDisplayPlaneProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015137 if (pProperties)
15138 {
15139 if (!(check_pProperties))
15140 {
15141 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
15142 }
15143 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15144 {
15145 unmarshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
15146 }
15147 }
15148 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
15149 stream->read(&vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015150 countingStream->clearPool();
15151 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015152 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015153 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
15154}
15155
15156VkResult VkEncoder::vkGetDisplayModeProperties2KHR(
15157 VkPhysicalDevice physicalDevice,
15158 VkDisplayKHR display,
15159 uint32_t* pPropertyCount,
15160 VkDisplayModeProperties2KHR* pProperties)
15161{
15162 auto stream = mImpl->stream();
15163 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015164 auto resources = mImpl->resources();
15165 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015166 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015167 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015168 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015169 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015170 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015171 countingStream->rewind();
15172 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015173 uint64_t cgen_var_1113;
15174 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1113, 1);
15175 countingStream->write((uint64_t*)&cgen_var_1113, 1 * 8);
15176 uint64_t cgen_var_1114;
15177 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1114, 1);
15178 countingStream->write((uint64_t*)&cgen_var_1114, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015179 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015180 uint64_t cgen_var_1115 = (uint64_t)(uintptr_t)pPropertyCount;
15181 countingStream->putBe64(cgen_var_1115);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015182 if (pPropertyCount)
15183 {
15184 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15185 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015186 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015187 uint64_t cgen_var_1116 = (uint64_t)(uintptr_t)pProperties;
15188 countingStream->putBe64(cgen_var_1116);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015189 if (pProperties)
15190 {
15191 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15192 {
15193 marshal_VkDisplayModeProperties2KHR(countingStream, (VkDisplayModeProperties2KHR*)(pProperties + i));
15194 }
15195 }
15196 }
15197 uint32_t packetSize_vkGetDisplayModeProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15198 countingStream->rewind();
15199 uint32_t opcode_vkGetDisplayModeProperties2KHR = OP_vkGetDisplayModeProperties2KHR;
15200 stream->write(&opcode_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
15201 stream->write(&packetSize_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015202 uint64_t cgen_var_1117;
15203 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1117, 1);
15204 stream->write((uint64_t*)&cgen_var_1117, 1 * 8);
15205 uint64_t cgen_var_1118;
15206 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1118, 1);
15207 stream->write((uint64_t*)&cgen_var_1118, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015208 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015209 uint64_t cgen_var_1119 = (uint64_t)(uintptr_t)pPropertyCount;
15210 stream->putBe64(cgen_var_1119);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015211 if (pPropertyCount)
15212 {
15213 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15214 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015215 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015216 uint64_t cgen_var_1120 = (uint64_t)(uintptr_t)pProperties;
15217 stream->putBe64(cgen_var_1120);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015218 if (pProperties)
15219 {
15220 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15221 {
15222 marshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
15223 }
15224 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015225 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015226 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015227 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015228 if (pPropertyCount)
15229 {
15230 if (!(check_pPropertyCount))
15231 {
15232 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
15233 }
15234 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
15235 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015236 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015237 VkDisplayModeProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015238 check_pProperties = (VkDisplayModeProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015239 if (pProperties)
15240 {
15241 if (!(check_pProperties))
15242 {
15243 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
15244 }
15245 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15246 {
15247 unmarshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
15248 }
15249 }
15250 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
15251 stream->read(&vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015252 countingStream->clearPool();
15253 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015254 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015255 return vkGetDisplayModeProperties2KHR_VkResult_return;
15256}
15257
15258VkResult VkEncoder::vkGetDisplayPlaneCapabilities2KHR(
15259 VkPhysicalDevice physicalDevice,
15260 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
15261 VkDisplayPlaneCapabilities2KHR* pCapabilities)
15262{
15263 auto stream = mImpl->stream();
15264 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015265 auto resources = mImpl->resources();
15266 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015267 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015268 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015269 VkDisplayPlaneInfo2KHR* local_pDisplayPlaneInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015270 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015271 local_pDisplayPlaneInfo = nullptr;
15272 if (pDisplayPlaneInfo)
15273 {
15274 local_pDisplayPlaneInfo = (VkDisplayPlaneInfo2KHR*)pool->alloc(sizeof(const VkDisplayPlaneInfo2KHR));
15275 deepcopy_VkDisplayPlaneInfo2KHR(pool, pDisplayPlaneInfo, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
15276 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015277 if (local_pDisplayPlaneInfo)
15278 {
15279 transform_VkDisplayPlaneInfo2KHR(mImpl->resources(), (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
15280 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015281 countingStream->rewind();
15282 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015283 uint64_t cgen_var_1123;
15284 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1123, 1);
15285 countingStream->write((uint64_t*)&cgen_var_1123, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015286 marshal_VkDisplayPlaneInfo2KHR(countingStream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015287 marshal_VkDisplayPlaneCapabilities2KHR(countingStream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
15288 }
15289 uint32_t packetSize_vkGetDisplayPlaneCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15290 countingStream->rewind();
15291 uint32_t opcode_vkGetDisplayPlaneCapabilities2KHR = OP_vkGetDisplayPlaneCapabilities2KHR;
15292 stream->write(&opcode_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
15293 stream->write(&packetSize_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015294 uint64_t cgen_var_1124;
15295 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1124, 1);
15296 stream->write((uint64_t*)&cgen_var_1124, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015297 marshal_VkDisplayPlaneInfo2KHR(stream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015298 marshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
15299 unmarshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
15300 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
15301 stream->read(&vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015302 countingStream->clearPool();
15303 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015304 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015305 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
15306}
15307
15308#endif
15309#ifdef VK_KHR_dedicated_allocation
15310#endif
15311#ifdef VK_KHR_storage_buffer_storage_class
15312#endif
15313#ifdef VK_KHR_relaxed_block_layout
15314#endif
15315#ifdef VK_KHR_get_memory_requirements2
15316void VkEncoder::vkGetImageMemoryRequirements2KHR(
15317 VkDevice device,
15318 const VkImageMemoryRequirementsInfo2* pInfo,
15319 VkMemoryRequirements2* pMemoryRequirements)
15320{
15321 auto stream = mImpl->stream();
15322 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015323 auto resources = mImpl->resources();
15324 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015325 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015326 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015327 VkImageMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015328 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015329 local_pInfo = nullptr;
15330 if (pInfo)
15331 {
15332 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
15333 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
15334 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015335 if (local_pInfo)
15336 {
15337 transform_VkImageMemoryRequirementsInfo2(mImpl->resources(), (VkImageMemoryRequirementsInfo2*)(local_pInfo));
15338 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015339 countingStream->rewind();
15340 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015341 uint64_t cgen_var_1125;
15342 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1125, 1);
15343 countingStream->write((uint64_t*)&cgen_var_1125, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015344 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015345 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
15346 }
15347 uint32_t packetSize_vkGetImageMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15348 countingStream->rewind();
15349 uint32_t opcode_vkGetImageMemoryRequirements2KHR = OP_vkGetImageMemoryRequirements2KHR;
15350 stream->write(&opcode_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
15351 stream->write(&packetSize_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015352 uint64_t cgen_var_1126;
15353 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1126, 1);
15354 stream->write((uint64_t*)&cgen_var_1126, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015355 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015356 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
15357 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
15358}
15359
15360void VkEncoder::vkGetBufferMemoryRequirements2KHR(
15361 VkDevice device,
15362 const VkBufferMemoryRequirementsInfo2* pInfo,
15363 VkMemoryRequirements2* pMemoryRequirements)
15364{
15365 auto stream = mImpl->stream();
15366 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015367 auto resources = mImpl->resources();
15368 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015369 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015370 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015371 VkBufferMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015372 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015373 local_pInfo = nullptr;
15374 if (pInfo)
15375 {
15376 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
15377 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
15378 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015379 if (local_pInfo)
15380 {
15381 transform_VkBufferMemoryRequirementsInfo2(mImpl->resources(), (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
15382 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015383 countingStream->rewind();
15384 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015385 uint64_t cgen_var_1127;
15386 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1127, 1);
15387 countingStream->write((uint64_t*)&cgen_var_1127, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015388 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015389 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
15390 }
15391 uint32_t packetSize_vkGetBufferMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15392 countingStream->rewind();
15393 uint32_t opcode_vkGetBufferMemoryRequirements2KHR = OP_vkGetBufferMemoryRequirements2KHR;
15394 stream->write(&opcode_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
15395 stream->write(&packetSize_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015396 uint64_t cgen_var_1128;
15397 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1128, 1);
15398 stream->write((uint64_t*)&cgen_var_1128, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015399 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015400 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
15401 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
15402}
15403
15404void VkEncoder::vkGetImageSparseMemoryRequirements2KHR(
15405 VkDevice device,
15406 const VkImageSparseMemoryRequirementsInfo2* pInfo,
15407 uint32_t* pSparseMemoryRequirementCount,
15408 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
15409{
15410 auto stream = mImpl->stream();
15411 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015412 auto resources = mImpl->resources();
15413 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015414 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015415 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015416 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015417 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015418 local_pInfo = nullptr;
15419 if (pInfo)
15420 {
15421 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
15422 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
15423 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015424 if (local_pInfo)
15425 {
15426 transform_VkImageSparseMemoryRequirementsInfo2(mImpl->resources(), (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
15427 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015428 countingStream->rewind();
15429 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015430 uint64_t cgen_var_1129;
15431 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1129, 1);
15432 countingStream->write((uint64_t*)&cgen_var_1129, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015433 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015434 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015435 uint64_t cgen_var_1130 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
15436 countingStream->putBe64(cgen_var_1130);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015437 if (pSparseMemoryRequirementCount)
15438 {
15439 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
15440 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015441 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015442 uint64_t cgen_var_1131 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
15443 countingStream->putBe64(cgen_var_1131);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015444 if (pSparseMemoryRequirements)
15445 {
15446 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
15447 {
15448 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
15449 }
15450 }
15451 }
15452 uint32_t packetSize_vkGetImageSparseMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15453 countingStream->rewind();
15454 uint32_t opcode_vkGetImageSparseMemoryRequirements2KHR = OP_vkGetImageSparseMemoryRequirements2KHR;
15455 stream->write(&opcode_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
15456 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015457 uint64_t cgen_var_1132;
15458 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1132, 1);
15459 stream->write((uint64_t*)&cgen_var_1132, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015460 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015461 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015462 uint64_t cgen_var_1133 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
15463 stream->putBe64(cgen_var_1133);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015464 if (pSparseMemoryRequirementCount)
15465 {
15466 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
15467 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015468 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015469 uint64_t cgen_var_1134 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
15470 stream->putBe64(cgen_var_1134);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015471 if (pSparseMemoryRequirements)
15472 {
15473 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
15474 {
15475 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
15476 }
15477 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015478 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015479 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015480 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015481 if (pSparseMemoryRequirementCount)
15482 {
15483 if (!(check_pSparseMemoryRequirementCount))
15484 {
15485 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
15486 }
15487 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
15488 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015489 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015490 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015491 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015492 if (pSparseMemoryRequirements)
15493 {
15494 if (!(check_pSparseMemoryRequirements))
15495 {
15496 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
15497 }
15498 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
15499 {
15500 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
15501 }
15502 }
15503}
15504
15505#endif
15506#ifdef VK_KHR_image_format_list
15507#endif
15508#ifdef VK_KHR_sampler_ycbcr_conversion
15509VkResult VkEncoder::vkCreateSamplerYcbcrConversionKHR(
15510 VkDevice device,
15511 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
15512 const VkAllocationCallbacks* pAllocator,
15513 VkSamplerYcbcrConversion* pYcbcrConversion)
15514{
15515 auto stream = mImpl->stream();
15516 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015517 auto resources = mImpl->resources();
15518 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015519 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015520 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015521 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015522 VkAllocationCallbacks* local_pAllocator;
15523 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015524 local_pCreateInfo = nullptr;
15525 if (pCreateInfo)
15526 {
15527 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
15528 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
15529 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015530 local_pAllocator = nullptr;
15531 if (pAllocator)
15532 {
15533 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15534 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15535 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015536 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080015537 if (local_pCreateInfo)
15538 {
15539 transform_VkSamplerYcbcrConversionCreateInfo(mImpl->resources(), (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
15540 }
15541 if (local_pAllocator)
15542 {
15543 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
15544 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015545 countingStream->rewind();
15546 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015547 uint64_t cgen_var_1137;
15548 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1137, 1);
15549 countingStream->write((uint64_t*)&cgen_var_1137, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015550 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015551 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015552 uint64_t cgen_var_1138 = (uint64_t)(uintptr_t)local_pAllocator;
15553 countingStream->putBe64(cgen_var_1138);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015554 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015555 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015556 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015557 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015558 uint64_t cgen_var_1139;
15559 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1139, 1);
15560 countingStream->write((uint64_t*)&cgen_var_1139, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015561 }
15562 uint32_t packetSize_vkCreateSamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15563 countingStream->rewind();
15564 uint32_t opcode_vkCreateSamplerYcbcrConversionKHR = OP_vkCreateSamplerYcbcrConversionKHR;
15565 stream->write(&opcode_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
15566 stream->write(&packetSize_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015567 uint64_t cgen_var_1140;
15568 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1140, 1);
15569 stream->write((uint64_t*)&cgen_var_1140, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015570 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015571 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015572 uint64_t cgen_var_1141 = (uint64_t)(uintptr_t)local_pAllocator;
15573 stream->putBe64(cgen_var_1141);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015574 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015575 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015576 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015577 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080015578 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015579 uint64_t cgen_var_1142;
15580 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1142, 1);
15581 stream->write((uint64_t*)&cgen_var_1142, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015582 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015583 uint64_t cgen_var_1143;
15584 stream->read((uint64_t*)&cgen_var_1143, 8);
15585 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_1143, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015586 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
15587 stream->read(&vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015588 countingStream->clearPool();
15589 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015590 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015591 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
15592}
15593
15594void VkEncoder::vkDestroySamplerYcbcrConversionKHR(
15595 VkDevice device,
15596 VkSamplerYcbcrConversion ycbcrConversion,
15597 const VkAllocationCallbacks* pAllocator)
15598{
15599 auto stream = mImpl->stream();
15600 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015601 auto resources = mImpl->resources();
15602 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015603 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015604 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015605 VkSamplerYcbcrConversion local_ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015606 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015607 local_device = device;
15608 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015609 local_pAllocator = nullptr;
15610 if (pAllocator)
15611 {
15612 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15613 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15614 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015615 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080015616 if (local_pAllocator)
15617 {
15618 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
15619 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015620 countingStream->rewind();
15621 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015622 uint64_t cgen_var_1144;
15623 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1144, 1);
15624 countingStream->write((uint64_t*)&cgen_var_1144, 1 * 8);
15625 uint64_t cgen_var_1145;
15626 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1145, 1);
15627 countingStream->write((uint64_t*)&cgen_var_1145, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015628 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015629 uint64_t cgen_var_1146 = (uint64_t)(uintptr_t)local_pAllocator;
15630 countingStream->putBe64(cgen_var_1146);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015631 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015632 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015633 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015634 }
15635 }
15636 uint32_t packetSize_vkDestroySamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15637 countingStream->rewind();
15638 uint32_t opcode_vkDestroySamplerYcbcrConversionKHR = OP_vkDestroySamplerYcbcrConversionKHR;
15639 stream->write(&opcode_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
15640 stream->write(&packetSize_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015641 uint64_t cgen_var_1147;
15642 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1147, 1);
15643 stream->write((uint64_t*)&cgen_var_1147, 1 * 8);
15644 uint64_t cgen_var_1148;
15645 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1148, 1);
15646 stream->write((uint64_t*)&cgen_var_1148, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015647 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015648 uint64_t cgen_var_1149 = (uint64_t)(uintptr_t)local_pAllocator;
15649 stream->putBe64(cgen_var_1149);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015650 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015651 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015652 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015653 }
15654}
15655
15656#endif
15657#ifdef VK_KHR_bind_memory2
15658VkResult VkEncoder::vkBindBufferMemory2KHR(
15659 VkDevice device,
15660 uint32_t bindInfoCount,
15661 const VkBindBufferMemoryInfo* pBindInfos)
15662{
15663 auto stream = mImpl->stream();
15664 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015665 auto resources = mImpl->resources();
15666 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015667 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015668 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015669 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015670 VkBindBufferMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015671 local_device = device;
15672 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015673 local_pBindInfos = nullptr;
15674 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015675 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015676 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015677 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
15678 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015679 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
15680 }
15681 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015682 if (local_pBindInfos)
15683 {
15684 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
15685 {
15686 transform_VkBindBufferMemoryInfo(mImpl->resources(), (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
15687 }
15688 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015689 countingStream->rewind();
15690 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015691 uint64_t cgen_var_1150;
15692 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1150, 1);
15693 countingStream->write((uint64_t*)&cgen_var_1150, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015694 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
15695 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
15696 {
15697 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015698 }
15699 }
15700 uint32_t packetSize_vkBindBufferMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15701 countingStream->rewind();
15702 uint32_t opcode_vkBindBufferMemory2KHR = OP_vkBindBufferMemory2KHR;
15703 stream->write(&opcode_vkBindBufferMemory2KHR, sizeof(uint32_t));
15704 stream->write(&packetSize_vkBindBufferMemory2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015705 uint64_t cgen_var_1151;
15706 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1151, 1);
15707 stream->write((uint64_t*)&cgen_var_1151, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015708 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015709 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
15710 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015711 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015712 }
15713 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
15714 stream->read(&vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015715 countingStream->clearPool();
15716 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015717 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015718 return vkBindBufferMemory2KHR_VkResult_return;
15719}
15720
15721VkResult VkEncoder::vkBindImageMemory2KHR(
15722 VkDevice device,
15723 uint32_t bindInfoCount,
15724 const VkBindImageMemoryInfo* pBindInfos)
15725{
15726 auto stream = mImpl->stream();
15727 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015728 auto resources = mImpl->resources();
15729 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015730 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015731 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015732 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015733 VkBindImageMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015734 local_device = device;
15735 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015736 local_pBindInfos = nullptr;
15737 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015738 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015739 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015740 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
15741 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015742 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
15743 }
15744 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015745 if (local_pBindInfos)
15746 {
15747 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
15748 {
15749 transform_VkBindImageMemoryInfo(mImpl->resources(), (VkBindImageMemoryInfo*)(local_pBindInfos + i));
15750 }
15751 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015752 countingStream->rewind();
15753 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015754 uint64_t cgen_var_1152;
15755 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1152, 1);
15756 countingStream->write((uint64_t*)&cgen_var_1152, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015757 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
15758 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
15759 {
15760 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015761 }
15762 }
15763 uint32_t packetSize_vkBindImageMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15764 countingStream->rewind();
15765 uint32_t opcode_vkBindImageMemory2KHR = OP_vkBindImageMemory2KHR;
15766 stream->write(&opcode_vkBindImageMemory2KHR, sizeof(uint32_t));
15767 stream->write(&packetSize_vkBindImageMemory2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015768 uint64_t cgen_var_1153;
15769 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1153, 1);
15770 stream->write((uint64_t*)&cgen_var_1153, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015771 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015772 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
15773 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015774 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015775 }
15776 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
15777 stream->read(&vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015778 countingStream->clearPool();
15779 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015780 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015781 return vkBindImageMemory2KHR_VkResult_return;
15782}
15783
15784#endif
15785#ifdef VK_KHR_maintenance3
15786void VkEncoder::vkGetDescriptorSetLayoutSupportKHR(
15787 VkDevice device,
15788 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
15789 VkDescriptorSetLayoutSupport* pSupport)
15790{
15791 auto stream = mImpl->stream();
15792 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015793 auto resources = mImpl->resources();
15794 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015795 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015796 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015797 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015798 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015799 local_pCreateInfo = nullptr;
15800 if (pCreateInfo)
15801 {
15802 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
15803 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
15804 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015805 if (local_pCreateInfo)
15806 {
15807 transform_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
15808 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015809 countingStream->rewind();
15810 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015811 uint64_t cgen_var_1154;
15812 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1154, 1);
15813 countingStream->write((uint64_t*)&cgen_var_1154, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015814 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015815 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
15816 }
15817 uint32_t packetSize_vkGetDescriptorSetLayoutSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15818 countingStream->rewind();
15819 uint32_t opcode_vkGetDescriptorSetLayoutSupportKHR = OP_vkGetDescriptorSetLayoutSupportKHR;
15820 stream->write(&opcode_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
15821 stream->write(&packetSize_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015822 uint64_t cgen_var_1155;
15823 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1155, 1);
15824 stream->write((uint64_t*)&cgen_var_1155, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015825 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015826 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
15827 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
15828}
15829
15830#endif
15831#ifdef VK_KHR_draw_indirect_count
15832void VkEncoder::vkCmdDrawIndirectCountKHR(
15833 VkCommandBuffer commandBuffer,
15834 VkBuffer buffer,
15835 VkDeviceSize offset,
15836 VkBuffer countBuffer,
15837 VkDeviceSize countBufferOffset,
15838 uint32_t maxDrawCount,
15839 uint32_t stride)
15840{
15841 auto stream = mImpl->stream();
15842 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015843 auto resources = mImpl->resources();
15844 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015845 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015846 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015847 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015848 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015849 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015850 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015851 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015852 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015853 local_commandBuffer = commandBuffer;
15854 local_buffer = buffer;
15855 local_offset = offset;
15856 local_countBuffer = countBuffer;
15857 local_countBufferOffset = countBufferOffset;
15858 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015859 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015860 countingStream->rewind();
15861 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015862 uint64_t cgen_var_1156;
15863 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1156, 1);
15864 countingStream->write((uint64_t*)&cgen_var_1156, 1 * 8);
15865 uint64_t cgen_var_1157;
15866 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1157, 1);
15867 countingStream->write((uint64_t*)&cgen_var_1157, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015868 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015869 uint64_t cgen_var_1158;
15870 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1158, 1);
15871 countingStream->write((uint64_t*)&cgen_var_1158, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015872 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15873 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15874 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015875 }
15876 uint32_t packetSize_vkCmdDrawIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15877 countingStream->rewind();
15878 uint32_t opcode_vkCmdDrawIndirectCountKHR = OP_vkCmdDrawIndirectCountKHR;
15879 stream->write(&opcode_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
15880 stream->write(&packetSize_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015881 uint64_t cgen_var_1159;
15882 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1159, 1);
15883 stream->write((uint64_t*)&cgen_var_1159, 1 * 8);
15884 uint64_t cgen_var_1160;
15885 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1160, 1);
15886 stream->write((uint64_t*)&cgen_var_1160, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015887 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015888 uint64_t cgen_var_1161;
15889 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1161, 1);
15890 stream->write((uint64_t*)&cgen_var_1161, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015891 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15892 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15893 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015894}
15895
15896void VkEncoder::vkCmdDrawIndexedIndirectCountKHR(
15897 VkCommandBuffer commandBuffer,
15898 VkBuffer buffer,
15899 VkDeviceSize offset,
15900 VkBuffer countBuffer,
15901 VkDeviceSize countBufferOffset,
15902 uint32_t maxDrawCount,
15903 uint32_t stride)
15904{
15905 auto stream = mImpl->stream();
15906 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015907 auto resources = mImpl->resources();
15908 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015909 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015910 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015911 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015912 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015913 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015914 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015915 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015916 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015917 local_commandBuffer = commandBuffer;
15918 local_buffer = buffer;
15919 local_offset = offset;
15920 local_countBuffer = countBuffer;
15921 local_countBufferOffset = countBufferOffset;
15922 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015923 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015924 countingStream->rewind();
15925 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015926 uint64_t cgen_var_1162;
15927 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1162, 1);
15928 countingStream->write((uint64_t*)&cgen_var_1162, 1 * 8);
15929 uint64_t cgen_var_1163;
15930 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1163, 1);
15931 countingStream->write((uint64_t*)&cgen_var_1163, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015932 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015933 uint64_t cgen_var_1164;
15934 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1164, 1);
15935 countingStream->write((uint64_t*)&cgen_var_1164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015936 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15937 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15938 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015939 }
15940 uint32_t packetSize_vkCmdDrawIndexedIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15941 countingStream->rewind();
15942 uint32_t opcode_vkCmdDrawIndexedIndirectCountKHR = OP_vkCmdDrawIndexedIndirectCountKHR;
15943 stream->write(&opcode_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
15944 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015945 uint64_t cgen_var_1165;
15946 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1165, 1);
15947 stream->write((uint64_t*)&cgen_var_1165, 1 * 8);
15948 uint64_t cgen_var_1166;
15949 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1166, 1);
15950 stream->write((uint64_t*)&cgen_var_1166, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015951 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015952 uint64_t cgen_var_1167;
15953 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1167, 1);
15954 stream->write((uint64_t*)&cgen_var_1167, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015955 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15956 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15957 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015958}
15959
15960#endif
15961#ifdef VK_KHR_8bit_storage
15962#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -080015963#ifdef VK_ANDROID_native_buffer
15964VkResult VkEncoder::vkGetSwapchainGrallocUsageANDROID(
15965 VkDevice device,
15966 VkFormat format,
15967 VkImageUsageFlags imageUsage,
15968 int* grallocUsage)
15969{
15970 auto stream = mImpl->stream();
15971 auto countingStream = mImpl->countingStream();
15972 auto resources = mImpl->resources();
15973 auto pool = mImpl->pool();
15974 stream->setHandleMapping(resources->unwrapMapping());
15975 VkDevice local_device;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015976 VkFormat local_format;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015977 VkImageUsageFlags local_imageUsage;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015978 local_device = device;
15979 local_format = format;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015980 local_imageUsage = imageUsage;
15981 countingStream->rewind();
15982 {
15983 uint64_t cgen_var_1168;
15984 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1168, 1);
15985 countingStream->write((uint64_t*)&cgen_var_1168, 1 * 8);
15986 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
15987 countingStream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
15988 countingStream->write((int*)grallocUsage, sizeof(int));
15989 }
15990 uint32_t packetSize_vkGetSwapchainGrallocUsageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15991 countingStream->rewind();
15992 uint32_t opcode_vkGetSwapchainGrallocUsageANDROID = OP_vkGetSwapchainGrallocUsageANDROID;
15993 stream->write(&opcode_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
15994 stream->write(&packetSize_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
15995 uint64_t cgen_var_1169;
15996 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1169, 1);
15997 stream->write((uint64_t*)&cgen_var_1169, 1 * 8);
15998 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
15999 stream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
16000 stream->write((int*)grallocUsage, sizeof(int));
16001 stream->read((int*)grallocUsage, sizeof(int));
16002 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
16003 stream->read(&vkGetSwapchainGrallocUsageANDROID_VkResult_return, sizeof(VkResult));
16004 countingStream->clearPool();
16005 stream->clearPool();
16006 pool->freeAll();
16007 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
16008}
16009
16010VkResult VkEncoder::vkAcquireImageANDROID(
16011 VkDevice device,
16012 VkImage image,
16013 int nativeFenceFd,
16014 VkSemaphore semaphore,
16015 VkFence fence)
16016{
16017 auto stream = mImpl->stream();
16018 auto countingStream = mImpl->countingStream();
16019 auto resources = mImpl->resources();
16020 auto pool = mImpl->pool();
16021 stream->setHandleMapping(resources->unwrapMapping());
16022 VkDevice local_device;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016023 VkImage local_image;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016024 int local_nativeFenceFd;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016025 VkSemaphore local_semaphore;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016026 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016027 local_device = device;
16028 local_image = image;
16029 local_nativeFenceFd = nativeFenceFd;
16030 local_semaphore = semaphore;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016031 local_fence = fence;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -080016032 mImpl->resources()->unwrap_vkAcquireImageANDROID_nativeFenceFd(nativeFenceFd, &local_nativeFenceFd);
Lingfeng Yang808a6312018-11-13 21:06:15 -080016033 countingStream->rewind();
16034 {
16035 uint64_t cgen_var_1170;
16036 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1170, 1);
16037 countingStream->write((uint64_t*)&cgen_var_1170, 1 * 8);
16038 uint64_t cgen_var_1171;
16039 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1171, 1);
16040 countingStream->write((uint64_t*)&cgen_var_1171, 1 * 8);
16041 countingStream->write((int*)&local_nativeFenceFd, sizeof(int));
16042 uint64_t cgen_var_1172;
16043 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1172, 1);
16044 countingStream->write((uint64_t*)&cgen_var_1172, 1 * 8);
16045 uint64_t cgen_var_1173;
16046 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1173, 1);
16047 countingStream->write((uint64_t*)&cgen_var_1173, 1 * 8);
16048 }
16049 uint32_t packetSize_vkAcquireImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16050 countingStream->rewind();
16051 uint32_t opcode_vkAcquireImageANDROID = OP_vkAcquireImageANDROID;
16052 stream->write(&opcode_vkAcquireImageANDROID, sizeof(uint32_t));
16053 stream->write(&packetSize_vkAcquireImageANDROID, sizeof(uint32_t));
16054 uint64_t cgen_var_1174;
16055 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1174, 1);
16056 stream->write((uint64_t*)&cgen_var_1174, 1 * 8);
16057 uint64_t cgen_var_1175;
16058 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1175, 1);
16059 stream->write((uint64_t*)&cgen_var_1175, 1 * 8);
16060 stream->write((int*)&local_nativeFenceFd, sizeof(int));
16061 uint64_t cgen_var_1176;
16062 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1176, 1);
16063 stream->write((uint64_t*)&cgen_var_1176, 1 * 8);
16064 uint64_t cgen_var_1177;
16065 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1177, 1);
16066 stream->write((uint64_t*)&cgen_var_1177, 1 * 8);
16067 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
16068 stream->read(&vkAcquireImageANDROID_VkResult_return, sizeof(VkResult));
16069 countingStream->clearPool();
16070 stream->clearPool();
16071 pool->freeAll();
16072 return vkAcquireImageANDROID_VkResult_return;
16073}
16074
16075VkResult VkEncoder::vkQueueSignalReleaseImageANDROID(
16076 VkQueue queue,
16077 uint32_t waitSemaphoreCount,
16078 const VkSemaphore* pWaitSemaphores,
16079 VkImage image,
16080 int* pNativeFenceFd)
16081{
16082 auto stream = mImpl->stream();
16083 auto countingStream = mImpl->countingStream();
16084 auto resources = mImpl->resources();
16085 auto pool = mImpl->pool();
16086 stream->setHandleMapping(resources->unwrapMapping());
16087 VkQueue local_queue;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016088 uint32_t local_waitSemaphoreCount;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016089 VkSemaphore* local_pWaitSemaphores;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016090 VkImage local_image;
16091 local_queue = queue;
16092 local_waitSemaphoreCount = waitSemaphoreCount;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016093 local_pWaitSemaphores = nullptr;
16094 if (pWaitSemaphores)
16095 {
16096 local_pWaitSemaphores = (VkSemaphore*)pool->dupArray(pWaitSemaphores, sizeof(const VkSemaphore));
16097 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080016098 local_image = image;
16099 countingStream->rewind();
16100 {
16101 uint64_t cgen_var_1178;
16102 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1178, 1);
16103 countingStream->write((uint64_t*)&cgen_var_1178, 1 * 8);
16104 countingStream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
16105 uint64_t cgen_var_1179;
16106 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, &cgen_var_1179, 1);
16107 countingStream->write((uint64_t*)&cgen_var_1179, 8);
16108 uint64_t cgen_var_1180;
16109 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1180, 1);
16110 countingStream->write((uint64_t*)&cgen_var_1180, 1 * 8);
16111 countingStream->write((int*)pNativeFenceFd, sizeof(int));
16112 }
16113 uint32_t packetSize_vkQueueSignalReleaseImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16114 countingStream->rewind();
16115 uint32_t opcode_vkQueueSignalReleaseImageANDROID = OP_vkQueueSignalReleaseImageANDROID;
16116 stream->write(&opcode_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
16117 stream->write(&packetSize_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
16118 uint64_t cgen_var_1181;
16119 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1181, 1);
16120 stream->write((uint64_t*)&cgen_var_1181, 1 * 8);
16121 stream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
16122 uint64_t cgen_var_1182;
16123 stream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, &cgen_var_1182, 1);
16124 stream->write((uint64_t*)&cgen_var_1182, 8);
16125 uint64_t cgen_var_1183;
16126 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1183, 1);
16127 stream->write((uint64_t*)&cgen_var_1183, 1 * 8);
16128 stream->write((int*)pNativeFenceFd, sizeof(int));
16129 stream->read((int*)pNativeFenceFd, sizeof(int));
16130 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
16131 stream->read(&vkQueueSignalReleaseImageANDROID_VkResult_return, sizeof(VkResult));
16132 countingStream->clearPool();
16133 stream->clearPool();
16134 pool->freeAll();
16135 return vkQueueSignalReleaseImageANDROID_VkResult_return;
16136}
16137
16138#endif
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016139#ifdef VK_EXT_debug_report
16140VkResult VkEncoder::vkCreateDebugReportCallbackEXT(
16141 VkInstance instance,
16142 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
16143 const VkAllocationCallbacks* pAllocator,
16144 VkDebugReportCallbackEXT* pCallback)
16145{
16146 auto stream = mImpl->stream();
16147 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016148 auto resources = mImpl->resources();
16149 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016150 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016151 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016152 VkDebugReportCallbackCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016153 VkAllocationCallbacks* local_pAllocator;
16154 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016155 local_pCreateInfo = nullptr;
16156 if (pCreateInfo)
16157 {
16158 local_pCreateInfo = (VkDebugReportCallbackCreateInfoEXT*)pool->alloc(sizeof(const VkDebugReportCallbackCreateInfoEXT));
16159 deepcopy_VkDebugReportCallbackCreateInfoEXT(pool, pCreateInfo, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
16160 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016161 local_pAllocator = nullptr;
16162 if (pAllocator)
16163 {
16164 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16165 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16166 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016167 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080016168 if (local_pCreateInfo)
16169 {
16170 transform_VkDebugReportCallbackCreateInfoEXT(mImpl->resources(), (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
16171 }
16172 if (local_pAllocator)
16173 {
16174 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
16175 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016176 countingStream->rewind();
16177 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016178 uint64_t cgen_var_1184;
16179 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1184, 1);
16180 countingStream->write((uint64_t*)&cgen_var_1184, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016181 marshal_VkDebugReportCallbackCreateInfoEXT(countingStream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016182 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016183 uint64_t cgen_var_1185 = (uint64_t)(uintptr_t)local_pAllocator;
16184 countingStream->putBe64(cgen_var_1185);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016185 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016186 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016187 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016188 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080016189 uint64_t cgen_var_1186;
16190 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1186, 1);
16191 countingStream->write((uint64_t*)&cgen_var_1186, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016192 }
16193 uint32_t packetSize_vkCreateDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16194 countingStream->rewind();
16195 uint32_t opcode_vkCreateDebugReportCallbackEXT = OP_vkCreateDebugReportCallbackEXT;
16196 stream->write(&opcode_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
16197 stream->write(&packetSize_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016198 uint64_t cgen_var_1187;
16199 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1187, 1);
16200 stream->write((uint64_t*)&cgen_var_1187, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016201 marshal_VkDebugReportCallbackCreateInfoEXT(stream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016202 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016203 uint64_t cgen_var_1188 = (uint64_t)(uintptr_t)local_pAllocator;
16204 stream->putBe64(cgen_var_1188);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016205 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016206 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016207 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016208 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016209 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016210 uint64_t cgen_var_1189;
16211 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1189, 1);
16212 stream->write((uint64_t*)&cgen_var_1189, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016213 stream->setHandleMapping(resources->unwrapMapping());
16214 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080016215 uint64_t cgen_var_1190;
16216 stream->read((uint64_t*)&cgen_var_1190, 8);
16217 stream->handleMapping()->mapHandles_u64_VkDebugReportCallbackEXT(&cgen_var_1190, (VkDebugReportCallbackEXT*)pCallback, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016218 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016219 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
16220 stream->read(&vkCreateDebugReportCallbackEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016221 countingStream->clearPool();
16222 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016223 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016224 return vkCreateDebugReportCallbackEXT_VkResult_return;
16225}
16226
16227void VkEncoder::vkDestroyDebugReportCallbackEXT(
16228 VkInstance instance,
16229 VkDebugReportCallbackEXT callback,
16230 const VkAllocationCallbacks* pAllocator)
16231{
16232 auto stream = mImpl->stream();
16233 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016234 auto resources = mImpl->resources();
16235 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016236 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016237 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016238 VkDebugReportCallbackEXT local_callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016239 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016240 local_instance = instance;
16241 local_callback = callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016242 local_pAllocator = nullptr;
16243 if (pAllocator)
16244 {
16245 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16246 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16247 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016248 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080016249 if (local_pAllocator)
16250 {
16251 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
16252 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016253 countingStream->rewind();
16254 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016255 uint64_t cgen_var_1191;
16256 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1191, 1);
16257 countingStream->write((uint64_t*)&cgen_var_1191, 1 * 8);
16258 uint64_t cgen_var_1192;
16259 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1192, 1);
16260 countingStream->write((uint64_t*)&cgen_var_1192, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016261 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016262 uint64_t cgen_var_1193 = (uint64_t)(uintptr_t)local_pAllocator;
16263 countingStream->putBe64(cgen_var_1193);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016264 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016265 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016266 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016267 }
16268 }
16269 uint32_t packetSize_vkDestroyDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16270 countingStream->rewind();
16271 uint32_t opcode_vkDestroyDebugReportCallbackEXT = OP_vkDestroyDebugReportCallbackEXT;
16272 stream->write(&opcode_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
16273 stream->write(&packetSize_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016274 uint64_t cgen_var_1194;
16275 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1194, 1);
16276 stream->write((uint64_t*)&cgen_var_1194, 1 * 8);
16277 uint64_t cgen_var_1195;
16278 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1195, 1);
16279 stream->write((uint64_t*)&cgen_var_1195, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016280 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016281 uint64_t cgen_var_1196 = (uint64_t)(uintptr_t)local_pAllocator;
16282 stream->putBe64(cgen_var_1196);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016283 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016284 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016285 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016286 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016287 resources->destroyMapping()->mapHandles_VkDebugReportCallbackEXT((VkDebugReportCallbackEXT*)&callback);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016288}
16289
16290void VkEncoder::vkDebugReportMessageEXT(
16291 VkInstance instance,
16292 VkDebugReportFlagsEXT flags,
16293 VkDebugReportObjectTypeEXT objectType,
16294 uint64_t object,
16295 size_t location,
16296 int32_t messageCode,
16297 const char* pLayerPrefix,
16298 const char* pMessage)
16299{
16300 auto stream = mImpl->stream();
16301 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016302 auto resources = mImpl->resources();
16303 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016304 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016305 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016306 VkDebugReportFlagsEXT local_flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016307 VkDebugReportObjectTypeEXT local_objectType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016308 uint64_t local_object;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016309 size_t local_location;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016310 int32_t local_messageCode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016311 char* local_pLayerPrefix;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016312 char* local_pMessage;
16313 local_instance = instance;
16314 local_flags = flags;
16315 local_objectType = objectType;
16316 local_object = object;
16317 local_location = location;
16318 local_messageCode = messageCode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016319 local_pLayerPrefix = nullptr;
16320 if (pLayerPrefix)
16321 {
16322 local_pLayerPrefix = pool->strDup(pLayerPrefix);
16323 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016324 local_pMessage = nullptr;
16325 if (pMessage)
16326 {
16327 local_pMessage = pool->strDup(pMessage);
16328 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016329 countingStream->rewind();
16330 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016331 uint64_t cgen_var_1197;
16332 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1197, 1);
16333 countingStream->write((uint64_t*)&cgen_var_1197, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016334 countingStream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
16335 countingStream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
16336 countingStream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016337 uint64_t cgen_var_1198 = (uint64_t)local_location;
16338 countingStream->putBe64(cgen_var_1198);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016339 countingStream->write((int32_t*)&local_messageCode, sizeof(int32_t));
16340 countingStream->putString(local_pLayerPrefix);
16341 countingStream->putString(local_pMessage);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016342 }
16343 uint32_t packetSize_vkDebugReportMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16344 countingStream->rewind();
16345 uint32_t opcode_vkDebugReportMessageEXT = OP_vkDebugReportMessageEXT;
16346 stream->write(&opcode_vkDebugReportMessageEXT, sizeof(uint32_t));
16347 stream->write(&packetSize_vkDebugReportMessageEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016348 uint64_t cgen_var_1199;
16349 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1199, 1);
16350 stream->write((uint64_t*)&cgen_var_1199, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016351 stream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
16352 stream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
16353 stream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016354 uint64_t cgen_var_1200 = (uint64_t)local_location;
16355 stream->putBe64(cgen_var_1200);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016356 stream->write((int32_t*)&local_messageCode, sizeof(int32_t));
16357 stream->putString(local_pLayerPrefix);
16358 stream->putString(local_pMessage);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016359}
16360
16361#endif
16362#ifdef VK_NV_glsl_shader
16363#endif
16364#ifdef VK_EXT_depth_range_unrestricted
16365#endif
16366#ifdef VK_IMG_filter_cubic
16367#endif
16368#ifdef VK_AMD_rasterization_order
16369#endif
16370#ifdef VK_AMD_shader_trinary_minmax
16371#endif
16372#ifdef VK_AMD_shader_explicit_vertex_parameter
16373#endif
16374#ifdef VK_EXT_debug_marker
16375VkResult VkEncoder::vkDebugMarkerSetObjectTagEXT(
16376 VkDevice device,
16377 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
16378{
16379 auto stream = mImpl->stream();
16380 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016381 auto resources = mImpl->resources();
16382 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016383 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016384 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016385 VkDebugMarkerObjectTagInfoEXT* local_pTagInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016386 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016387 local_pTagInfo = nullptr;
16388 if (pTagInfo)
16389 {
16390 local_pTagInfo = (VkDebugMarkerObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectTagInfoEXT));
16391 deepcopy_VkDebugMarkerObjectTagInfoEXT(pool, pTagInfo, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
16392 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016393 if (local_pTagInfo)
16394 {
16395 transform_VkDebugMarkerObjectTagInfoEXT(mImpl->resources(), (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
16396 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016397 countingStream->rewind();
16398 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016399 uint64_t cgen_var_1201;
16400 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1201, 1);
16401 countingStream->write((uint64_t*)&cgen_var_1201, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016402 marshal_VkDebugMarkerObjectTagInfoEXT(countingStream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016403 }
16404 uint32_t packetSize_vkDebugMarkerSetObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16405 countingStream->rewind();
16406 uint32_t opcode_vkDebugMarkerSetObjectTagEXT = OP_vkDebugMarkerSetObjectTagEXT;
16407 stream->write(&opcode_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
16408 stream->write(&packetSize_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016409 uint64_t cgen_var_1202;
16410 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1202, 1);
16411 stream->write((uint64_t*)&cgen_var_1202, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016412 marshal_VkDebugMarkerObjectTagInfoEXT(stream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016413 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
16414 stream->read(&vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016415 countingStream->clearPool();
16416 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016417 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016418 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
16419}
16420
16421VkResult VkEncoder::vkDebugMarkerSetObjectNameEXT(
16422 VkDevice device,
16423 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
16424{
16425 auto stream = mImpl->stream();
16426 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016427 auto resources = mImpl->resources();
16428 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016429 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016430 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016431 VkDebugMarkerObjectNameInfoEXT* local_pNameInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016432 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016433 local_pNameInfo = nullptr;
16434 if (pNameInfo)
16435 {
16436 local_pNameInfo = (VkDebugMarkerObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectNameInfoEXT));
16437 deepcopy_VkDebugMarkerObjectNameInfoEXT(pool, pNameInfo, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
16438 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016439 if (local_pNameInfo)
16440 {
16441 transform_VkDebugMarkerObjectNameInfoEXT(mImpl->resources(), (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
16442 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016443 countingStream->rewind();
16444 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016445 uint64_t cgen_var_1203;
16446 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1203, 1);
16447 countingStream->write((uint64_t*)&cgen_var_1203, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016448 marshal_VkDebugMarkerObjectNameInfoEXT(countingStream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016449 }
16450 uint32_t packetSize_vkDebugMarkerSetObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16451 countingStream->rewind();
16452 uint32_t opcode_vkDebugMarkerSetObjectNameEXT = OP_vkDebugMarkerSetObjectNameEXT;
16453 stream->write(&opcode_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
16454 stream->write(&packetSize_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016455 uint64_t cgen_var_1204;
16456 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1204, 1);
16457 stream->write((uint64_t*)&cgen_var_1204, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016458 marshal_VkDebugMarkerObjectNameInfoEXT(stream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016459 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
16460 stream->read(&vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016461 countingStream->clearPool();
16462 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016463 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016464 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
16465}
16466
16467void VkEncoder::vkCmdDebugMarkerBeginEXT(
16468 VkCommandBuffer commandBuffer,
16469 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
16470{
16471 auto stream = mImpl->stream();
16472 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016473 auto resources = mImpl->resources();
16474 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016475 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016476 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016477 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016478 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016479 local_pMarkerInfo = nullptr;
16480 if (pMarkerInfo)
16481 {
16482 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
16483 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
16484 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016485 if (local_pMarkerInfo)
16486 {
16487 transform_VkDebugMarkerMarkerInfoEXT(mImpl->resources(), (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
16488 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016489 countingStream->rewind();
16490 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016491 uint64_t cgen_var_1205;
16492 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1205, 1);
16493 countingStream->write((uint64_t*)&cgen_var_1205, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016494 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016495 }
16496 uint32_t packetSize_vkCmdDebugMarkerBeginEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16497 countingStream->rewind();
16498 uint32_t opcode_vkCmdDebugMarkerBeginEXT = OP_vkCmdDebugMarkerBeginEXT;
16499 stream->write(&opcode_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
16500 stream->write(&packetSize_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016501 uint64_t cgen_var_1206;
16502 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1206, 1);
16503 stream->write((uint64_t*)&cgen_var_1206, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016504 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016505}
16506
16507void VkEncoder::vkCmdDebugMarkerEndEXT(
16508 VkCommandBuffer commandBuffer)
16509{
16510 auto stream = mImpl->stream();
16511 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016512 auto resources = mImpl->resources();
16513 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016514 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016515 VkCommandBuffer local_commandBuffer;
16516 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016517 countingStream->rewind();
16518 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016519 uint64_t cgen_var_1207;
16520 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1207, 1);
16521 countingStream->write((uint64_t*)&cgen_var_1207, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016522 }
16523 uint32_t packetSize_vkCmdDebugMarkerEndEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16524 countingStream->rewind();
16525 uint32_t opcode_vkCmdDebugMarkerEndEXT = OP_vkCmdDebugMarkerEndEXT;
16526 stream->write(&opcode_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
16527 stream->write(&packetSize_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016528 uint64_t cgen_var_1208;
16529 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1208, 1);
16530 stream->write((uint64_t*)&cgen_var_1208, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016531}
16532
16533void VkEncoder::vkCmdDebugMarkerInsertEXT(
16534 VkCommandBuffer commandBuffer,
16535 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
16536{
16537 auto stream = mImpl->stream();
16538 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016539 auto resources = mImpl->resources();
16540 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016541 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016542 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016543 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016544 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016545 local_pMarkerInfo = nullptr;
16546 if (pMarkerInfo)
16547 {
16548 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
16549 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
16550 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016551 if (local_pMarkerInfo)
16552 {
16553 transform_VkDebugMarkerMarkerInfoEXT(mImpl->resources(), (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
16554 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016555 countingStream->rewind();
16556 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016557 uint64_t cgen_var_1209;
16558 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1209, 1);
16559 countingStream->write((uint64_t*)&cgen_var_1209, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016560 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016561 }
16562 uint32_t packetSize_vkCmdDebugMarkerInsertEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16563 countingStream->rewind();
16564 uint32_t opcode_vkCmdDebugMarkerInsertEXT = OP_vkCmdDebugMarkerInsertEXT;
16565 stream->write(&opcode_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
16566 stream->write(&packetSize_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016567 uint64_t cgen_var_1210;
16568 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1210, 1);
16569 stream->write((uint64_t*)&cgen_var_1210, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016570 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016571}
16572
16573#endif
16574#ifdef VK_AMD_gcn_shader
16575#endif
16576#ifdef VK_NV_dedicated_allocation
16577#endif
16578#ifdef VK_AMD_draw_indirect_count
16579void VkEncoder::vkCmdDrawIndirectCountAMD(
16580 VkCommandBuffer commandBuffer,
16581 VkBuffer buffer,
16582 VkDeviceSize offset,
16583 VkBuffer countBuffer,
16584 VkDeviceSize countBufferOffset,
16585 uint32_t maxDrawCount,
16586 uint32_t stride)
16587{
16588 auto stream = mImpl->stream();
16589 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016590 auto resources = mImpl->resources();
16591 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016592 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016593 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016594 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016595 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016596 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016597 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016598 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016599 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016600 local_commandBuffer = commandBuffer;
16601 local_buffer = buffer;
16602 local_offset = offset;
16603 local_countBuffer = countBuffer;
16604 local_countBufferOffset = countBufferOffset;
16605 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016606 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016607 countingStream->rewind();
16608 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016609 uint64_t cgen_var_1211;
16610 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1211, 1);
16611 countingStream->write((uint64_t*)&cgen_var_1211, 1 * 8);
16612 uint64_t cgen_var_1212;
16613 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1212, 1);
16614 countingStream->write((uint64_t*)&cgen_var_1212, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016615 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016616 uint64_t cgen_var_1213;
16617 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1213, 1);
16618 countingStream->write((uint64_t*)&cgen_var_1213, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016619 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16620 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16621 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016622 }
16623 uint32_t packetSize_vkCmdDrawIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16624 countingStream->rewind();
16625 uint32_t opcode_vkCmdDrawIndirectCountAMD = OP_vkCmdDrawIndirectCountAMD;
16626 stream->write(&opcode_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
16627 stream->write(&packetSize_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016628 uint64_t cgen_var_1214;
16629 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1214, 1);
16630 stream->write((uint64_t*)&cgen_var_1214, 1 * 8);
16631 uint64_t cgen_var_1215;
16632 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1215, 1);
16633 stream->write((uint64_t*)&cgen_var_1215, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016634 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016635 uint64_t cgen_var_1216;
16636 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1216, 1);
16637 stream->write((uint64_t*)&cgen_var_1216, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016638 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16639 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16640 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016641}
16642
16643void VkEncoder::vkCmdDrawIndexedIndirectCountAMD(
16644 VkCommandBuffer commandBuffer,
16645 VkBuffer buffer,
16646 VkDeviceSize offset,
16647 VkBuffer countBuffer,
16648 VkDeviceSize countBufferOffset,
16649 uint32_t maxDrawCount,
16650 uint32_t stride)
16651{
16652 auto stream = mImpl->stream();
16653 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016654 auto resources = mImpl->resources();
16655 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016656 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016657 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016658 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016659 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016660 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016661 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016662 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016663 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016664 local_commandBuffer = commandBuffer;
16665 local_buffer = buffer;
16666 local_offset = offset;
16667 local_countBuffer = countBuffer;
16668 local_countBufferOffset = countBufferOffset;
16669 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016670 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016671 countingStream->rewind();
16672 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016673 uint64_t cgen_var_1217;
16674 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1217, 1);
16675 countingStream->write((uint64_t*)&cgen_var_1217, 1 * 8);
16676 uint64_t cgen_var_1218;
16677 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1218, 1);
16678 countingStream->write((uint64_t*)&cgen_var_1218, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016679 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016680 uint64_t cgen_var_1219;
16681 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1219, 1);
16682 countingStream->write((uint64_t*)&cgen_var_1219, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016683 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16684 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16685 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016686 }
16687 uint32_t packetSize_vkCmdDrawIndexedIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16688 countingStream->rewind();
16689 uint32_t opcode_vkCmdDrawIndexedIndirectCountAMD = OP_vkCmdDrawIndexedIndirectCountAMD;
16690 stream->write(&opcode_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
16691 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016692 uint64_t cgen_var_1220;
16693 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1220, 1);
16694 stream->write((uint64_t*)&cgen_var_1220, 1 * 8);
16695 uint64_t cgen_var_1221;
16696 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1221, 1);
16697 stream->write((uint64_t*)&cgen_var_1221, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016698 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016699 uint64_t cgen_var_1222;
16700 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1222, 1);
16701 stream->write((uint64_t*)&cgen_var_1222, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016702 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16703 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16704 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016705}
16706
16707#endif
16708#ifdef VK_AMD_negative_viewport_height
16709#endif
16710#ifdef VK_AMD_gpu_shader_half_float
16711#endif
16712#ifdef VK_AMD_shader_ballot
16713#endif
16714#ifdef VK_AMD_texture_gather_bias_lod
16715#endif
16716#ifdef VK_AMD_shader_info
16717VkResult VkEncoder::vkGetShaderInfoAMD(
16718 VkDevice device,
16719 VkPipeline pipeline,
16720 VkShaderStageFlagBits shaderStage,
16721 VkShaderInfoTypeAMD infoType,
16722 size_t* pInfoSize,
16723 void* pInfo)
16724{
16725 auto stream = mImpl->stream();
16726 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016727 auto resources = mImpl->resources();
16728 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016729 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016730 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016731 VkPipeline local_pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016732 VkShaderStageFlagBits local_shaderStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016733 VkShaderInfoTypeAMD local_infoType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016734 local_device = device;
16735 local_pipeline = pipeline;
16736 local_shaderStage = shaderStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016737 local_infoType = infoType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016738 countingStream->rewind();
16739 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016740 uint64_t cgen_var_1223;
16741 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1223, 1);
16742 countingStream->write((uint64_t*)&cgen_var_1223, 1 * 8);
16743 uint64_t cgen_var_1224;
16744 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1224, 1);
16745 countingStream->write((uint64_t*)&cgen_var_1224, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016746 countingStream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
16747 countingStream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016748 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016749 uint64_t cgen_var_1225 = (uint64_t)(uintptr_t)pInfoSize;
16750 countingStream->putBe64(cgen_var_1225);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016751 if (pInfoSize)
16752 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016753 uint64_t cgen_var_1226 = (uint64_t)(*pInfoSize);
16754 countingStream->putBe64(cgen_var_1226);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016755 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016756 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016757 uint64_t cgen_var_1227 = (uint64_t)(uintptr_t)pInfo;
16758 countingStream->putBe64(cgen_var_1227);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016759 if (pInfo)
16760 {
16761 countingStream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
16762 }
16763 }
16764 uint32_t packetSize_vkGetShaderInfoAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16765 countingStream->rewind();
16766 uint32_t opcode_vkGetShaderInfoAMD = OP_vkGetShaderInfoAMD;
16767 stream->write(&opcode_vkGetShaderInfoAMD, sizeof(uint32_t));
16768 stream->write(&packetSize_vkGetShaderInfoAMD, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016769 uint64_t cgen_var_1228;
16770 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1228, 1);
16771 stream->write((uint64_t*)&cgen_var_1228, 1 * 8);
16772 uint64_t cgen_var_1229;
16773 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1229, 1);
16774 stream->write((uint64_t*)&cgen_var_1229, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016775 stream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
16776 stream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016777 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016778 uint64_t cgen_var_1230 = (uint64_t)(uintptr_t)pInfoSize;
16779 stream->putBe64(cgen_var_1230);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016780 if (pInfoSize)
16781 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016782 uint64_t cgen_var_1231 = (uint64_t)(*pInfoSize);
16783 stream->putBe64(cgen_var_1231);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016784 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016785 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016786 uint64_t cgen_var_1232 = (uint64_t)(uintptr_t)pInfo;
16787 stream->putBe64(cgen_var_1232);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016788 if (pInfo)
16789 {
16790 stream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
16791 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016792 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016793 size_t* check_pInfoSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016794 check_pInfoSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016795 if (pInfoSize)
16796 {
16797 if (!(check_pInfoSize))
16798 {
16799 fprintf(stderr, "fatal: pInfoSize inconsistent between guest and host\n");
16800 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016801 (*pInfoSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016802 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016803 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016804 void* check_pInfo;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016805 check_pInfo = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016806 if (pInfo)
16807 {
16808 if (!(check_pInfo))
16809 {
16810 fprintf(stderr, "fatal: pInfo inconsistent between guest and host\n");
16811 }
16812 stream->read((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
16813 }
16814 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
16815 stream->read(&vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016816 countingStream->clearPool();
16817 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016818 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016819 return vkGetShaderInfoAMD_VkResult_return;
16820}
16821
16822#endif
16823#ifdef VK_AMD_shader_image_load_store_lod
16824#endif
16825#ifdef VK_IMG_format_pvrtc
16826#endif
16827#ifdef VK_NV_external_memory_capabilities
16828VkResult VkEncoder::vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
16829 VkPhysicalDevice physicalDevice,
16830 VkFormat format,
16831 VkImageType type,
16832 VkImageTiling tiling,
16833 VkImageUsageFlags usage,
16834 VkImageCreateFlags flags,
16835 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
16836 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
16837{
16838 auto stream = mImpl->stream();
16839 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016840 auto resources = mImpl->resources();
16841 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016842 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016843 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016844 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016845 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016846 VkImageTiling local_tiling;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016847 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016848 VkImageCreateFlags local_flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016849 VkExternalMemoryHandleTypeFlagsNV local_externalHandleType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016850 local_physicalDevice = physicalDevice;
16851 local_format = format;
16852 local_type = type;
16853 local_tiling = tiling;
16854 local_usage = usage;
16855 local_flags = flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016856 local_externalHandleType = externalHandleType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016857 countingStream->rewind();
16858 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016859 uint64_t cgen_var_1236;
16860 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1236, 1);
16861 countingStream->write((uint64_t*)&cgen_var_1236, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016862 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
16863 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
16864 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
16865 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
16866 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
16867 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016868 marshal_VkExternalImageFormatPropertiesNV(countingStream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
16869 }
16870 uint32_t packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16871 countingStream->rewind();
16872 uint32_t opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
16873 stream->write(&opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
16874 stream->write(&packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016875 uint64_t cgen_var_1237;
16876 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1237, 1);
16877 stream->write((uint64_t*)&cgen_var_1237, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016878 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
16879 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
16880 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
16881 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
16882 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
16883 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016884 marshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
16885 unmarshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
16886 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
16887 stream->read(&vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016888 countingStream->clearPool();
16889 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016890 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016891 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
16892}
16893
16894#endif
16895#ifdef VK_NV_external_memory
16896#endif
16897#ifdef VK_NV_external_memory_win32
16898VkResult VkEncoder::vkGetMemoryWin32HandleNV(
16899 VkDevice device,
16900 VkDeviceMemory memory,
16901 VkExternalMemoryHandleTypeFlagsNV handleType,
16902 HANDLE* pHandle)
16903{
16904 auto stream = mImpl->stream();
16905 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016906 auto resources = mImpl->resources();
16907 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016908 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016909 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016910 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016911 VkExternalMemoryHandleTypeFlagsNV local_handleType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016912 local_device = device;
16913 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016914 local_handleType = handleType;
Lingfeng Yang62b23322018-12-24 12:45:47 -080016915 mImpl->resources()->deviceMemoryTransform(&local_memory, 1, nullptr, 1, nullptr, 1, nullptr, 1, nullptr, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016916 countingStream->rewind();
16917 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016918 uint64_t cgen_var_1238;
16919 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1238, 1);
16920 countingStream->write((uint64_t*)&cgen_var_1238, 1 * 8);
16921 uint64_t cgen_var_1239;
16922 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1239, 1);
16923 countingStream->write((uint64_t*)&cgen_var_1239, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016924 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016925 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
16926 }
16927 uint32_t packetSize_vkGetMemoryWin32HandleNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16928 countingStream->rewind();
16929 uint32_t opcode_vkGetMemoryWin32HandleNV = OP_vkGetMemoryWin32HandleNV;
16930 stream->write(&opcode_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
16931 stream->write(&packetSize_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016932 uint64_t cgen_var_1240;
16933 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1240, 1);
16934 stream->write((uint64_t*)&cgen_var_1240, 1 * 8);
16935 uint64_t cgen_var_1241;
16936 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1241, 1);
16937 stream->write((uint64_t*)&cgen_var_1241, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016938 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016939 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
16940 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
16941 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
16942 stream->read(&vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016943 countingStream->clearPool();
16944 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016945 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016946 return vkGetMemoryWin32HandleNV_VkResult_return;
16947}
16948
16949#endif
16950#ifdef VK_NV_win32_keyed_mutex
16951#endif
16952#ifdef VK_EXT_validation_flags
16953#endif
16954#ifdef VK_NN_vi_surface
16955VkResult VkEncoder::vkCreateViSurfaceNN(
16956 VkInstance instance,
16957 const VkViSurfaceCreateInfoNN* pCreateInfo,
16958 const VkAllocationCallbacks* pAllocator,
16959 VkSurfaceKHR* pSurface)
16960{
16961 auto stream = mImpl->stream();
16962 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016963 auto resources = mImpl->resources();
16964 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016965 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016966 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016967 VkViSurfaceCreateInfoNN* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016968 VkAllocationCallbacks* local_pAllocator;
16969 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016970 local_pCreateInfo = nullptr;
16971 if (pCreateInfo)
16972 {
16973 local_pCreateInfo = (VkViSurfaceCreateInfoNN*)pool->alloc(sizeof(const VkViSurfaceCreateInfoNN));
16974 deepcopy_VkViSurfaceCreateInfoNN(pool, pCreateInfo, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
16975 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016976 local_pAllocator = nullptr;
16977 if (pAllocator)
16978 {
16979 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16980 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16981 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016982 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080016983 if (local_pCreateInfo)
16984 {
16985 transform_VkViSurfaceCreateInfoNN(mImpl->resources(), (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
16986 }
16987 if (local_pAllocator)
16988 {
16989 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
16990 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016991 countingStream->rewind();
16992 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016993 uint64_t cgen_var_1242;
16994 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1242, 1);
16995 countingStream->write((uint64_t*)&cgen_var_1242, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016996 marshal_VkViSurfaceCreateInfoNN(countingStream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016997 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016998 uint64_t cgen_var_1243 = (uint64_t)(uintptr_t)local_pAllocator;
16999 countingStream->putBe64(cgen_var_1243);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017000 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017001 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017002 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017003 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017004 uint64_t cgen_var_1244;
17005 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1244, 1);
17006 countingStream->write((uint64_t*)&cgen_var_1244, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017007 }
17008 uint32_t packetSize_vkCreateViSurfaceNN = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17009 countingStream->rewind();
17010 uint32_t opcode_vkCreateViSurfaceNN = OP_vkCreateViSurfaceNN;
17011 stream->write(&opcode_vkCreateViSurfaceNN, sizeof(uint32_t));
17012 stream->write(&packetSize_vkCreateViSurfaceNN, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017013 uint64_t cgen_var_1245;
17014 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1245, 1);
17015 stream->write((uint64_t*)&cgen_var_1245, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017016 marshal_VkViSurfaceCreateInfoNN(stream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017017 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017018 uint64_t cgen_var_1246 = (uint64_t)(uintptr_t)local_pAllocator;
17019 stream->putBe64(cgen_var_1246);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017020 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017021 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017022 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017023 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017024 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017025 uint64_t cgen_var_1247;
17026 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1247, 1);
17027 stream->write((uint64_t*)&cgen_var_1247, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017028 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080017029 uint64_t cgen_var_1248;
17030 stream->read((uint64_t*)&cgen_var_1248, 8);
17031 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1248, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017032 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
17033 stream->read(&vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017034 countingStream->clearPool();
17035 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017036 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017037 return vkCreateViSurfaceNN_VkResult_return;
17038}
17039
17040#endif
17041#ifdef VK_EXT_shader_subgroup_ballot
17042#endif
17043#ifdef VK_EXT_shader_subgroup_vote
17044#endif
17045#ifdef VK_EXT_conditional_rendering
17046void VkEncoder::vkCmdBeginConditionalRenderingEXT(
17047 VkCommandBuffer commandBuffer,
17048 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
17049{
17050 auto stream = mImpl->stream();
17051 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017052 auto resources = mImpl->resources();
17053 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017054 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017055 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017056 VkConditionalRenderingBeginInfoEXT* local_pConditionalRenderingBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017057 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017058 local_pConditionalRenderingBegin = nullptr;
17059 if (pConditionalRenderingBegin)
17060 {
17061 local_pConditionalRenderingBegin = (VkConditionalRenderingBeginInfoEXT*)pool->alloc(sizeof(const VkConditionalRenderingBeginInfoEXT));
17062 deepcopy_VkConditionalRenderingBeginInfoEXT(pool, pConditionalRenderingBegin, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
17063 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017064 if (local_pConditionalRenderingBegin)
17065 {
17066 transform_VkConditionalRenderingBeginInfoEXT(mImpl->resources(), (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
17067 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017068 countingStream->rewind();
17069 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017070 uint64_t cgen_var_1249;
17071 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1249, 1);
17072 countingStream->write((uint64_t*)&cgen_var_1249, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017073 marshal_VkConditionalRenderingBeginInfoEXT(countingStream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017074 }
17075 uint32_t packetSize_vkCmdBeginConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17076 countingStream->rewind();
17077 uint32_t opcode_vkCmdBeginConditionalRenderingEXT = OP_vkCmdBeginConditionalRenderingEXT;
17078 stream->write(&opcode_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
17079 stream->write(&packetSize_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017080 uint64_t cgen_var_1250;
17081 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1250, 1);
17082 stream->write((uint64_t*)&cgen_var_1250, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017083 marshal_VkConditionalRenderingBeginInfoEXT(stream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017084}
17085
17086void VkEncoder::vkCmdEndConditionalRenderingEXT(
17087 VkCommandBuffer commandBuffer)
17088{
17089 auto stream = mImpl->stream();
17090 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017091 auto resources = mImpl->resources();
17092 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017093 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017094 VkCommandBuffer local_commandBuffer;
17095 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017096 countingStream->rewind();
17097 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017098 uint64_t cgen_var_1251;
17099 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1251, 1);
17100 countingStream->write((uint64_t*)&cgen_var_1251, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017101 }
17102 uint32_t packetSize_vkCmdEndConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17103 countingStream->rewind();
17104 uint32_t opcode_vkCmdEndConditionalRenderingEXT = OP_vkCmdEndConditionalRenderingEXT;
17105 stream->write(&opcode_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
17106 stream->write(&packetSize_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017107 uint64_t cgen_var_1252;
17108 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1252, 1);
17109 stream->write((uint64_t*)&cgen_var_1252, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017110}
17111
17112#endif
17113#ifdef VK_NVX_device_generated_commands
17114void VkEncoder::vkCmdProcessCommandsNVX(
17115 VkCommandBuffer commandBuffer,
17116 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
17117{
17118 auto stream = mImpl->stream();
17119 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017120 auto resources = mImpl->resources();
17121 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017122 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017123 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017124 VkCmdProcessCommandsInfoNVX* local_pProcessCommandsInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017125 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017126 local_pProcessCommandsInfo = nullptr;
17127 if (pProcessCommandsInfo)
17128 {
17129 local_pProcessCommandsInfo = (VkCmdProcessCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdProcessCommandsInfoNVX));
17130 deepcopy_VkCmdProcessCommandsInfoNVX(pool, pProcessCommandsInfo, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
17131 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017132 if (local_pProcessCommandsInfo)
17133 {
17134 transform_VkCmdProcessCommandsInfoNVX(mImpl->resources(), (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
17135 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017136 countingStream->rewind();
17137 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017138 uint64_t cgen_var_1253;
17139 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1253, 1);
17140 countingStream->write((uint64_t*)&cgen_var_1253, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017141 marshal_VkCmdProcessCommandsInfoNVX(countingStream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017142 }
17143 uint32_t packetSize_vkCmdProcessCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17144 countingStream->rewind();
17145 uint32_t opcode_vkCmdProcessCommandsNVX = OP_vkCmdProcessCommandsNVX;
17146 stream->write(&opcode_vkCmdProcessCommandsNVX, sizeof(uint32_t));
17147 stream->write(&packetSize_vkCmdProcessCommandsNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017148 uint64_t cgen_var_1254;
17149 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1254, 1);
17150 stream->write((uint64_t*)&cgen_var_1254, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017151 marshal_VkCmdProcessCommandsInfoNVX(stream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017152}
17153
17154void VkEncoder::vkCmdReserveSpaceForCommandsNVX(
17155 VkCommandBuffer commandBuffer,
17156 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
17157{
17158 auto stream = mImpl->stream();
17159 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017160 auto resources = mImpl->resources();
17161 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017162 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017163 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017164 VkCmdReserveSpaceForCommandsInfoNVX* local_pReserveSpaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017165 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017166 local_pReserveSpaceInfo = nullptr;
17167 if (pReserveSpaceInfo)
17168 {
17169 local_pReserveSpaceInfo = (VkCmdReserveSpaceForCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdReserveSpaceForCommandsInfoNVX));
17170 deepcopy_VkCmdReserveSpaceForCommandsInfoNVX(pool, pReserveSpaceInfo, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
17171 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017172 if (local_pReserveSpaceInfo)
17173 {
17174 transform_VkCmdReserveSpaceForCommandsInfoNVX(mImpl->resources(), (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
17175 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017176 countingStream->rewind();
17177 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017178 uint64_t cgen_var_1255;
17179 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1255, 1);
17180 countingStream->write((uint64_t*)&cgen_var_1255, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017181 marshal_VkCmdReserveSpaceForCommandsInfoNVX(countingStream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017182 }
17183 uint32_t packetSize_vkCmdReserveSpaceForCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17184 countingStream->rewind();
17185 uint32_t opcode_vkCmdReserveSpaceForCommandsNVX = OP_vkCmdReserveSpaceForCommandsNVX;
17186 stream->write(&opcode_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
17187 stream->write(&packetSize_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017188 uint64_t cgen_var_1256;
17189 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1256, 1);
17190 stream->write((uint64_t*)&cgen_var_1256, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017191 marshal_VkCmdReserveSpaceForCommandsInfoNVX(stream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017192}
17193
17194VkResult VkEncoder::vkCreateIndirectCommandsLayoutNVX(
17195 VkDevice device,
17196 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
17197 const VkAllocationCallbacks* pAllocator,
17198 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
17199{
17200 auto stream = mImpl->stream();
17201 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017202 auto resources = mImpl->resources();
17203 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017204 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017205 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017206 VkIndirectCommandsLayoutCreateInfoNVX* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017207 VkAllocationCallbacks* local_pAllocator;
17208 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017209 local_pCreateInfo = nullptr;
17210 if (pCreateInfo)
17211 {
17212 local_pCreateInfo = (VkIndirectCommandsLayoutCreateInfoNVX*)pool->alloc(sizeof(const VkIndirectCommandsLayoutCreateInfoNVX));
17213 deepcopy_VkIndirectCommandsLayoutCreateInfoNVX(pool, pCreateInfo, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
17214 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017215 local_pAllocator = nullptr;
17216 if (pAllocator)
17217 {
17218 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17219 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17220 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017221 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017222 if (local_pCreateInfo)
17223 {
17224 transform_VkIndirectCommandsLayoutCreateInfoNVX(mImpl->resources(), (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
17225 }
17226 if (local_pAllocator)
17227 {
17228 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
17229 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017230 countingStream->rewind();
17231 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017232 uint64_t cgen_var_1257;
17233 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1257, 1);
17234 countingStream->write((uint64_t*)&cgen_var_1257, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017235 marshal_VkIndirectCommandsLayoutCreateInfoNVX(countingStream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017236 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017237 uint64_t cgen_var_1258 = (uint64_t)(uintptr_t)local_pAllocator;
17238 countingStream->putBe64(cgen_var_1258);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017239 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017240 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017241 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017242 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017243 uint64_t cgen_var_1259;
17244 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1259, 1);
17245 countingStream->write((uint64_t*)&cgen_var_1259, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017246 }
17247 uint32_t packetSize_vkCreateIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17248 countingStream->rewind();
17249 uint32_t opcode_vkCreateIndirectCommandsLayoutNVX = OP_vkCreateIndirectCommandsLayoutNVX;
17250 stream->write(&opcode_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
17251 stream->write(&packetSize_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017252 uint64_t cgen_var_1260;
17253 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1260, 1);
17254 stream->write((uint64_t*)&cgen_var_1260, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017255 marshal_VkIndirectCommandsLayoutCreateInfoNVX(stream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017256 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017257 uint64_t cgen_var_1261 = (uint64_t)(uintptr_t)local_pAllocator;
17258 stream->putBe64(cgen_var_1261);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017259 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017260 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017261 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017262 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017263 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017264 uint64_t cgen_var_1262;
17265 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1262, 1);
17266 stream->write((uint64_t*)&cgen_var_1262, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017267 stream->setHandleMapping(resources->unwrapMapping());
17268 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080017269 uint64_t cgen_var_1263;
17270 stream->read((uint64_t*)&cgen_var_1263, 8);
17271 stream->handleMapping()->mapHandles_u64_VkIndirectCommandsLayoutNVX(&cgen_var_1263, (VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017272 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017273 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
17274 stream->read(&vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017275 countingStream->clearPool();
17276 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017277 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017278 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
17279}
17280
17281void VkEncoder::vkDestroyIndirectCommandsLayoutNVX(
17282 VkDevice device,
17283 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
17284 const VkAllocationCallbacks* pAllocator)
17285{
17286 auto stream = mImpl->stream();
17287 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017288 auto resources = mImpl->resources();
17289 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017290 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017291 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017292 VkIndirectCommandsLayoutNVX local_indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017293 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017294 local_device = device;
17295 local_indirectCommandsLayout = indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017296 local_pAllocator = nullptr;
17297 if (pAllocator)
17298 {
17299 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17300 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17301 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017302 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017303 if (local_pAllocator)
17304 {
17305 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
17306 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017307 countingStream->rewind();
17308 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017309 uint64_t cgen_var_1264;
17310 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1264, 1);
17311 countingStream->write((uint64_t*)&cgen_var_1264, 1 * 8);
17312 uint64_t cgen_var_1265;
17313 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1265, 1);
17314 countingStream->write((uint64_t*)&cgen_var_1265, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017315 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017316 uint64_t cgen_var_1266 = (uint64_t)(uintptr_t)local_pAllocator;
17317 countingStream->putBe64(cgen_var_1266);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017318 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017319 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017320 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017321 }
17322 }
17323 uint32_t packetSize_vkDestroyIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17324 countingStream->rewind();
17325 uint32_t opcode_vkDestroyIndirectCommandsLayoutNVX = OP_vkDestroyIndirectCommandsLayoutNVX;
17326 stream->write(&opcode_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
17327 stream->write(&packetSize_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017328 uint64_t cgen_var_1267;
17329 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1267, 1);
17330 stream->write((uint64_t*)&cgen_var_1267, 1 * 8);
17331 uint64_t cgen_var_1268;
17332 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1268, 1);
17333 stream->write((uint64_t*)&cgen_var_1268, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017334 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017335 uint64_t cgen_var_1269 = (uint64_t)(uintptr_t)local_pAllocator;
17336 stream->putBe64(cgen_var_1269);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017337 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017338 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017339 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017340 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017341 resources->destroyMapping()->mapHandles_VkIndirectCommandsLayoutNVX((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017342}
17343
17344VkResult VkEncoder::vkCreateObjectTableNVX(
17345 VkDevice device,
17346 const VkObjectTableCreateInfoNVX* pCreateInfo,
17347 const VkAllocationCallbacks* pAllocator,
17348 VkObjectTableNVX* pObjectTable)
17349{
17350 auto stream = mImpl->stream();
17351 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017352 auto resources = mImpl->resources();
17353 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017354 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017355 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017356 VkObjectTableCreateInfoNVX* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017357 VkAllocationCallbacks* local_pAllocator;
17358 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017359 local_pCreateInfo = nullptr;
17360 if (pCreateInfo)
17361 {
17362 local_pCreateInfo = (VkObjectTableCreateInfoNVX*)pool->alloc(sizeof(const VkObjectTableCreateInfoNVX));
17363 deepcopy_VkObjectTableCreateInfoNVX(pool, pCreateInfo, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
17364 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017365 local_pAllocator = nullptr;
17366 if (pAllocator)
17367 {
17368 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17369 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17370 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017371 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017372 if (local_pCreateInfo)
17373 {
17374 transform_VkObjectTableCreateInfoNVX(mImpl->resources(), (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
17375 }
17376 if (local_pAllocator)
17377 {
17378 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
17379 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017380 countingStream->rewind();
17381 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017382 uint64_t cgen_var_1270;
17383 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1270, 1);
17384 countingStream->write((uint64_t*)&cgen_var_1270, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017385 marshal_VkObjectTableCreateInfoNVX(countingStream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017386 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017387 uint64_t cgen_var_1271 = (uint64_t)(uintptr_t)local_pAllocator;
17388 countingStream->putBe64(cgen_var_1271);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017389 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017390 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017391 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017392 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017393 uint64_t cgen_var_1272;
17394 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1272, 1);
17395 countingStream->write((uint64_t*)&cgen_var_1272, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017396 }
17397 uint32_t packetSize_vkCreateObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17398 countingStream->rewind();
17399 uint32_t opcode_vkCreateObjectTableNVX = OP_vkCreateObjectTableNVX;
17400 stream->write(&opcode_vkCreateObjectTableNVX, sizeof(uint32_t));
17401 stream->write(&packetSize_vkCreateObjectTableNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017402 uint64_t cgen_var_1273;
17403 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1273, 1);
17404 stream->write((uint64_t*)&cgen_var_1273, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017405 marshal_VkObjectTableCreateInfoNVX(stream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017406 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017407 uint64_t cgen_var_1274 = (uint64_t)(uintptr_t)local_pAllocator;
17408 stream->putBe64(cgen_var_1274);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017409 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017410 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017411 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017412 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017413 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017414 uint64_t cgen_var_1275;
17415 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1275, 1);
17416 stream->write((uint64_t*)&cgen_var_1275, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017417 stream->setHandleMapping(resources->unwrapMapping());
17418 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080017419 uint64_t cgen_var_1276;
17420 stream->read((uint64_t*)&cgen_var_1276, 8);
17421 stream->handleMapping()->mapHandles_u64_VkObjectTableNVX(&cgen_var_1276, (VkObjectTableNVX*)pObjectTable, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017422 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017423 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
17424 stream->read(&vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017425 countingStream->clearPool();
17426 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017427 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017428 return vkCreateObjectTableNVX_VkResult_return;
17429}
17430
17431void VkEncoder::vkDestroyObjectTableNVX(
17432 VkDevice device,
17433 VkObjectTableNVX objectTable,
17434 const VkAllocationCallbacks* pAllocator)
17435{
17436 auto stream = mImpl->stream();
17437 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017438 auto resources = mImpl->resources();
17439 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017440 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017441 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017442 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017443 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017444 local_device = device;
17445 local_objectTable = objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017446 local_pAllocator = nullptr;
17447 if (pAllocator)
17448 {
17449 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17450 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17451 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017452 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017453 if (local_pAllocator)
17454 {
17455 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
17456 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017457 countingStream->rewind();
17458 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017459 uint64_t cgen_var_1277;
17460 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1277, 1);
17461 countingStream->write((uint64_t*)&cgen_var_1277, 1 * 8);
17462 uint64_t cgen_var_1278;
17463 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1278, 1);
17464 countingStream->write((uint64_t*)&cgen_var_1278, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017465 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017466 uint64_t cgen_var_1279 = (uint64_t)(uintptr_t)local_pAllocator;
17467 countingStream->putBe64(cgen_var_1279);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017468 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017469 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017470 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017471 }
17472 }
17473 uint32_t packetSize_vkDestroyObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17474 countingStream->rewind();
17475 uint32_t opcode_vkDestroyObjectTableNVX = OP_vkDestroyObjectTableNVX;
17476 stream->write(&opcode_vkDestroyObjectTableNVX, sizeof(uint32_t));
17477 stream->write(&packetSize_vkDestroyObjectTableNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017478 uint64_t cgen_var_1280;
17479 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1280, 1);
17480 stream->write((uint64_t*)&cgen_var_1280, 1 * 8);
17481 uint64_t cgen_var_1281;
17482 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1281, 1);
17483 stream->write((uint64_t*)&cgen_var_1281, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017484 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017485 uint64_t cgen_var_1282 = (uint64_t)(uintptr_t)local_pAllocator;
17486 stream->putBe64(cgen_var_1282);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017487 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017488 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017489 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017490 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017491 resources->destroyMapping()->mapHandles_VkObjectTableNVX((VkObjectTableNVX*)&objectTable);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017492}
17493
17494VkResult VkEncoder::vkRegisterObjectsNVX(
17495 VkDevice device,
17496 VkObjectTableNVX objectTable,
17497 uint32_t objectCount,
17498 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
17499 const uint32_t* pObjectIndices)
17500{
17501 auto stream = mImpl->stream();
17502 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017503 auto resources = mImpl->resources();
17504 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017505 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017506 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017507 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017508 uint32_t local_objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017509 VkObjectTableEntryNVX** local_ppObjectTableEntries;
17510 uint32_t* local_pObjectIndices;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017511 local_device = device;
17512 local_objectTable = objectTable;
17513 local_objectCount = objectCount;
17514 (void)ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017515 local_pObjectIndices = nullptr;
17516 if (pObjectIndices)
17517 {
17518 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
17519 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017520 (void)local_ppObjectTableEntries;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017521 countingStream->rewind();
17522 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017523 uint64_t cgen_var_1283;
17524 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1283, 1);
17525 countingStream->write((uint64_t*)&cgen_var_1283, 1 * 8);
17526 uint64_t cgen_var_1284;
17527 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1284, 1);
17528 countingStream->write((uint64_t*)&cgen_var_1284, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017529 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080017530 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017531 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017532 }
17533 uint32_t packetSize_vkRegisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17534 countingStream->rewind();
17535 uint32_t opcode_vkRegisterObjectsNVX = OP_vkRegisterObjectsNVX;
17536 stream->write(&opcode_vkRegisterObjectsNVX, sizeof(uint32_t));
17537 stream->write(&packetSize_vkRegisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017538 uint64_t cgen_var_1285;
17539 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1285, 1);
17540 stream->write((uint64_t*)&cgen_var_1285, 1 * 8);
17541 uint64_t cgen_var_1286;
17542 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1286, 1);
17543 stream->write((uint64_t*)&cgen_var_1286, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017544 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080017545 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017546 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017547 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
17548 stream->read(&vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017549 countingStream->clearPool();
17550 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017551 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017552 return vkRegisterObjectsNVX_VkResult_return;
17553}
17554
17555VkResult VkEncoder::vkUnregisterObjectsNVX(
17556 VkDevice device,
17557 VkObjectTableNVX objectTable,
17558 uint32_t objectCount,
17559 const VkObjectEntryTypeNVX* pObjectEntryTypes,
17560 const uint32_t* pObjectIndices)
17561{
17562 auto stream = mImpl->stream();
17563 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017564 auto resources = mImpl->resources();
17565 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017566 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017567 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017568 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017569 uint32_t local_objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017570 VkObjectEntryTypeNVX* local_pObjectEntryTypes;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017571 uint32_t* local_pObjectIndices;
17572 local_device = device;
17573 local_objectTable = objectTable;
17574 local_objectCount = objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017575 local_pObjectEntryTypes = nullptr;
17576 if (pObjectEntryTypes)
17577 {
17578 local_pObjectEntryTypes = (VkObjectEntryTypeNVX*)pool->dupArray(pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
17579 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017580 local_pObjectIndices = nullptr;
17581 if (pObjectIndices)
17582 {
17583 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
17584 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017585 countingStream->rewind();
17586 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017587 uint64_t cgen_var_1287;
17588 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1287, 1);
17589 countingStream->write((uint64_t*)&cgen_var_1287, 1 * 8);
17590 uint64_t cgen_var_1288;
17591 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1288, 1);
17592 countingStream->write((uint64_t*)&cgen_var_1288, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017593 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
17594 countingStream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
17595 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017596 }
17597 uint32_t packetSize_vkUnregisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17598 countingStream->rewind();
17599 uint32_t opcode_vkUnregisterObjectsNVX = OP_vkUnregisterObjectsNVX;
17600 stream->write(&opcode_vkUnregisterObjectsNVX, sizeof(uint32_t));
17601 stream->write(&packetSize_vkUnregisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017602 uint64_t cgen_var_1289;
17603 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1289, 1);
17604 stream->write((uint64_t*)&cgen_var_1289, 1 * 8);
17605 uint64_t cgen_var_1290;
17606 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1290, 1);
17607 stream->write((uint64_t*)&cgen_var_1290, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017608 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
17609 stream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
17610 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017611 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
17612 stream->read(&vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017613 countingStream->clearPool();
17614 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017615 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017616 return vkUnregisterObjectsNVX_VkResult_return;
17617}
17618
17619void VkEncoder::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
17620 VkPhysicalDevice physicalDevice,
17621 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
17622 VkDeviceGeneratedCommandsLimitsNVX* pLimits)
17623{
17624 auto stream = mImpl->stream();
17625 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017626 auto resources = mImpl->resources();
17627 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017628 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017629 VkPhysicalDevice local_physicalDevice;
17630 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017631 countingStream->rewind();
17632 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017633 uint64_t cgen_var_1291;
17634 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1291, 1);
17635 countingStream->write((uint64_t*)&cgen_var_1291, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017636 marshal_VkDeviceGeneratedCommandsFeaturesNVX(countingStream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
17637 marshal_VkDeviceGeneratedCommandsLimitsNVX(countingStream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
17638 }
17639 uint32_t packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17640 countingStream->rewind();
17641 uint32_t opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = OP_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX;
17642 stream->write(&opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
17643 stream->write(&packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017644 uint64_t cgen_var_1292;
17645 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1292, 1);
17646 stream->write((uint64_t*)&cgen_var_1292, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017647 marshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
17648 marshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
17649 unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
17650 unmarshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
17651}
17652
17653#endif
17654#ifdef VK_NV_clip_space_w_scaling
17655void VkEncoder::vkCmdSetViewportWScalingNV(
17656 VkCommandBuffer commandBuffer,
17657 uint32_t firstViewport,
17658 uint32_t viewportCount,
17659 const VkViewportWScalingNV* pViewportWScalings)
17660{
17661 auto stream = mImpl->stream();
17662 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017663 auto resources = mImpl->resources();
17664 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017665 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017666 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017667 uint32_t local_firstViewport;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017668 uint32_t local_viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017669 VkViewportWScalingNV* local_pViewportWScalings;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017670 local_commandBuffer = commandBuffer;
17671 local_firstViewport = firstViewport;
17672 local_viewportCount = viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017673 local_pViewportWScalings = nullptr;
17674 if (pViewportWScalings)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017675 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017676 local_pViewportWScalings = (VkViewportWScalingNV*)pool->alloc(((viewportCount)) * sizeof(const VkViewportWScalingNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017677 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
17678 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017679 deepcopy_VkViewportWScalingNV(pool, pViewportWScalings + i, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
17680 }
17681 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017682 if (local_pViewportWScalings)
17683 {
17684 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
17685 {
17686 transform_VkViewportWScalingNV(mImpl->resources(), (VkViewportWScalingNV*)(local_pViewportWScalings + i));
17687 }
17688 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017689 countingStream->rewind();
17690 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017691 uint64_t cgen_var_1293;
17692 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1293, 1);
17693 countingStream->write((uint64_t*)&cgen_var_1293, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017694 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
17695 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
17696 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
17697 {
17698 marshal_VkViewportWScalingNV(countingStream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017699 }
17700 }
17701 uint32_t packetSize_vkCmdSetViewportWScalingNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17702 countingStream->rewind();
17703 uint32_t opcode_vkCmdSetViewportWScalingNV = OP_vkCmdSetViewportWScalingNV;
17704 stream->write(&opcode_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
17705 stream->write(&packetSize_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017706 uint64_t cgen_var_1294;
17707 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1294, 1);
17708 stream->write((uint64_t*)&cgen_var_1294, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017709 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
17710 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017711 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
17712 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017713 marshal_VkViewportWScalingNV(stream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017714 }
17715}
17716
17717#endif
17718#ifdef VK_EXT_direct_mode_display
17719VkResult VkEncoder::vkReleaseDisplayEXT(
17720 VkPhysicalDevice physicalDevice,
17721 VkDisplayKHR display)
17722{
17723 auto stream = mImpl->stream();
17724 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017725 auto resources = mImpl->resources();
17726 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017727 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017728 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017729 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017730 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017731 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017732 countingStream->rewind();
17733 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017734 uint64_t cgen_var_1295;
17735 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1295, 1);
17736 countingStream->write((uint64_t*)&cgen_var_1295, 1 * 8);
17737 uint64_t cgen_var_1296;
17738 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1296, 1);
17739 countingStream->write((uint64_t*)&cgen_var_1296, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017740 }
17741 uint32_t packetSize_vkReleaseDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17742 countingStream->rewind();
17743 uint32_t opcode_vkReleaseDisplayEXT = OP_vkReleaseDisplayEXT;
17744 stream->write(&opcode_vkReleaseDisplayEXT, sizeof(uint32_t));
17745 stream->write(&packetSize_vkReleaseDisplayEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017746 uint64_t cgen_var_1297;
17747 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1297, 1);
17748 stream->write((uint64_t*)&cgen_var_1297, 1 * 8);
17749 uint64_t cgen_var_1298;
17750 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1298, 1);
17751 stream->write((uint64_t*)&cgen_var_1298, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017752 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
17753 stream->read(&vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017754 countingStream->clearPool();
17755 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017756 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017757 return vkReleaseDisplayEXT_VkResult_return;
17758}
17759
17760#endif
17761#ifdef VK_EXT_acquire_xlib_display
17762VkResult VkEncoder::vkAcquireXlibDisplayEXT(
17763 VkPhysicalDevice physicalDevice,
17764 Display* dpy,
17765 VkDisplayKHR display)
17766{
17767 auto stream = mImpl->stream();
17768 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017769 auto resources = mImpl->resources();
17770 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017771 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017772 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017773 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017774 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017775 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017776 countingStream->rewind();
17777 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017778 uint64_t cgen_var_1299;
17779 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1299, 1);
17780 countingStream->write((uint64_t*)&cgen_var_1299, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017781 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017782 uint64_t cgen_var_1300;
17783 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1300, 1);
17784 countingStream->write((uint64_t*)&cgen_var_1300, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017785 }
17786 uint32_t packetSize_vkAcquireXlibDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17787 countingStream->rewind();
17788 uint32_t opcode_vkAcquireXlibDisplayEXT = OP_vkAcquireXlibDisplayEXT;
17789 stream->write(&opcode_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
17790 stream->write(&packetSize_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017791 uint64_t cgen_var_1301;
17792 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1301, 1);
17793 stream->write((uint64_t*)&cgen_var_1301, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017794 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017795 uint64_t cgen_var_1302;
17796 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1302, 1);
17797 stream->write((uint64_t*)&cgen_var_1302, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017798 stream->read((Display*)dpy, sizeof(Display));
17799 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
17800 stream->read(&vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017801 countingStream->clearPool();
17802 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017803 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017804 return vkAcquireXlibDisplayEXT_VkResult_return;
17805}
17806
17807VkResult VkEncoder::vkGetRandROutputDisplayEXT(
17808 VkPhysicalDevice physicalDevice,
17809 Display* dpy,
17810 RROutput rrOutput,
17811 VkDisplayKHR* pDisplay)
17812{
17813 auto stream = mImpl->stream();
17814 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017815 auto resources = mImpl->resources();
17816 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017817 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017818 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017819 RROutput local_rrOutput;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017820 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017821 local_rrOutput = rrOutput;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017822 countingStream->rewind();
17823 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017824 uint64_t cgen_var_1303;
17825 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1303, 1);
17826 countingStream->write((uint64_t*)&cgen_var_1303, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017827 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017828 countingStream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017829 uint64_t cgen_var_1304;
17830 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1304, 1);
17831 countingStream->write((uint64_t*)&cgen_var_1304, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017832 }
17833 uint32_t packetSize_vkGetRandROutputDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17834 countingStream->rewind();
17835 uint32_t opcode_vkGetRandROutputDisplayEXT = OP_vkGetRandROutputDisplayEXT;
17836 stream->write(&opcode_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
17837 stream->write(&packetSize_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017838 uint64_t cgen_var_1305;
17839 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1305, 1);
17840 stream->write((uint64_t*)&cgen_var_1305, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017841 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017842 stream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yange4008a02018-11-18 12:22:48 -080017843 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017844 uint64_t cgen_var_1306;
17845 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1306, 1);
17846 stream->write((uint64_t*)&cgen_var_1306, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017847 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017848 stream->read((Display*)dpy, sizeof(Display));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017849 uint64_t cgen_var_1307;
17850 stream->read((uint64_t*)&cgen_var_1307, 8);
17851 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(&cgen_var_1307, (VkDisplayKHR*)pDisplay, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017852 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
17853 stream->read(&vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017854 countingStream->clearPool();
17855 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017856 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017857 return vkGetRandROutputDisplayEXT_VkResult_return;
17858}
17859
17860#endif
17861#ifdef VK_EXT_display_surface_counter
17862VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2EXT(
17863 VkPhysicalDevice physicalDevice,
17864 VkSurfaceKHR surface,
17865 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
17866{
17867 auto stream = mImpl->stream();
17868 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017869 auto resources = mImpl->resources();
17870 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017871 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017872 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017873 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017874 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017875 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017876 countingStream->rewind();
17877 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017878 uint64_t cgen_var_1308;
17879 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1308, 1);
17880 countingStream->write((uint64_t*)&cgen_var_1308, 1 * 8);
17881 uint64_t cgen_var_1309;
17882 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1309, 1);
17883 countingStream->write((uint64_t*)&cgen_var_1309, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017884 marshal_VkSurfaceCapabilities2EXT(countingStream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
17885 }
17886 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17887 countingStream->rewind();
17888 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT = OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT;
17889 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
17890 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017891 uint64_t cgen_var_1310;
17892 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1310, 1);
17893 stream->write((uint64_t*)&cgen_var_1310, 1 * 8);
17894 uint64_t cgen_var_1311;
17895 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1311, 1);
17896 stream->write((uint64_t*)&cgen_var_1311, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017897 marshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
17898 unmarshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
17899 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
17900 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017901 countingStream->clearPool();
17902 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017903 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017904 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
17905}
17906
17907#endif
17908#ifdef VK_EXT_display_control
17909VkResult VkEncoder::vkDisplayPowerControlEXT(
17910 VkDevice device,
17911 VkDisplayKHR display,
17912 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
17913{
17914 auto stream = mImpl->stream();
17915 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017916 auto resources = mImpl->resources();
17917 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017918 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017919 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017920 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017921 VkDisplayPowerInfoEXT* local_pDisplayPowerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017922 local_device = device;
17923 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017924 local_pDisplayPowerInfo = nullptr;
17925 if (pDisplayPowerInfo)
17926 {
17927 local_pDisplayPowerInfo = (VkDisplayPowerInfoEXT*)pool->alloc(sizeof(const VkDisplayPowerInfoEXT));
17928 deepcopy_VkDisplayPowerInfoEXT(pool, pDisplayPowerInfo, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
17929 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017930 if (local_pDisplayPowerInfo)
17931 {
17932 transform_VkDisplayPowerInfoEXT(mImpl->resources(), (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
17933 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017934 countingStream->rewind();
17935 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017936 uint64_t cgen_var_1312;
17937 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1312, 1);
17938 countingStream->write((uint64_t*)&cgen_var_1312, 1 * 8);
17939 uint64_t cgen_var_1313;
17940 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1313, 1);
17941 countingStream->write((uint64_t*)&cgen_var_1313, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017942 marshal_VkDisplayPowerInfoEXT(countingStream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017943 }
17944 uint32_t packetSize_vkDisplayPowerControlEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17945 countingStream->rewind();
17946 uint32_t opcode_vkDisplayPowerControlEXT = OP_vkDisplayPowerControlEXT;
17947 stream->write(&opcode_vkDisplayPowerControlEXT, sizeof(uint32_t));
17948 stream->write(&packetSize_vkDisplayPowerControlEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017949 uint64_t cgen_var_1314;
17950 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1314, 1);
17951 stream->write((uint64_t*)&cgen_var_1314, 1 * 8);
17952 uint64_t cgen_var_1315;
17953 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1315, 1);
17954 stream->write((uint64_t*)&cgen_var_1315, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017955 marshal_VkDisplayPowerInfoEXT(stream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017956 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
17957 stream->read(&vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017958 countingStream->clearPool();
17959 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017960 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017961 return vkDisplayPowerControlEXT_VkResult_return;
17962}
17963
17964VkResult VkEncoder::vkRegisterDeviceEventEXT(
17965 VkDevice device,
17966 const VkDeviceEventInfoEXT* pDeviceEventInfo,
17967 const VkAllocationCallbacks* pAllocator,
17968 VkFence* pFence)
17969{
17970 auto stream = mImpl->stream();
17971 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017972 auto resources = mImpl->resources();
17973 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017974 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017975 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017976 VkDeviceEventInfoEXT* local_pDeviceEventInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017977 VkAllocationCallbacks* local_pAllocator;
17978 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017979 local_pDeviceEventInfo = nullptr;
17980 if (pDeviceEventInfo)
17981 {
17982 local_pDeviceEventInfo = (VkDeviceEventInfoEXT*)pool->alloc(sizeof(const VkDeviceEventInfoEXT));
17983 deepcopy_VkDeviceEventInfoEXT(pool, pDeviceEventInfo, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
17984 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017985 local_pAllocator = nullptr;
17986 if (pAllocator)
17987 {
17988 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17989 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17990 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017991 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017992 if (local_pDeviceEventInfo)
17993 {
17994 transform_VkDeviceEventInfoEXT(mImpl->resources(), (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
17995 }
17996 if (local_pAllocator)
17997 {
17998 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
17999 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018000 countingStream->rewind();
18001 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018002 uint64_t cgen_var_1316;
18003 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1316, 1);
18004 countingStream->write((uint64_t*)&cgen_var_1316, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018005 marshal_VkDeviceEventInfoEXT(countingStream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018006 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018007 uint64_t cgen_var_1317 = (uint64_t)(uintptr_t)local_pAllocator;
18008 countingStream->putBe64(cgen_var_1317);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018009 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018010 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018011 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018012 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080018013 uint64_t cgen_var_1318;
18014 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1318, 1);
18015 countingStream->write((uint64_t*)&cgen_var_1318, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018016 }
18017 uint32_t packetSize_vkRegisterDeviceEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18018 countingStream->rewind();
18019 uint32_t opcode_vkRegisterDeviceEventEXT = OP_vkRegisterDeviceEventEXT;
18020 stream->write(&opcode_vkRegisterDeviceEventEXT, sizeof(uint32_t));
18021 stream->write(&packetSize_vkRegisterDeviceEventEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018022 uint64_t cgen_var_1319;
18023 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1319, 1);
18024 stream->write((uint64_t*)&cgen_var_1319, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018025 marshal_VkDeviceEventInfoEXT(stream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018026 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018027 uint64_t cgen_var_1320 = (uint64_t)(uintptr_t)local_pAllocator;
18028 stream->putBe64(cgen_var_1320);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018029 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018030 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018031 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018032 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018033 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080018034 uint64_t cgen_var_1321;
18035 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1321, 1);
18036 stream->write((uint64_t*)&cgen_var_1321, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018037 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080018038 uint64_t cgen_var_1322;
18039 stream->read((uint64_t*)&cgen_var_1322, 8);
18040 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1322, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018041 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
18042 stream->read(&vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018043 countingStream->clearPool();
18044 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018045 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018046 return vkRegisterDeviceEventEXT_VkResult_return;
18047}
18048
18049VkResult VkEncoder::vkRegisterDisplayEventEXT(
18050 VkDevice device,
18051 VkDisplayKHR display,
18052 const VkDisplayEventInfoEXT* pDisplayEventInfo,
18053 const VkAllocationCallbacks* pAllocator,
18054 VkFence* pFence)
18055{
18056 auto stream = mImpl->stream();
18057 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018058 auto resources = mImpl->resources();
18059 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018060 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018061 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018062 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018063 VkDisplayEventInfoEXT* local_pDisplayEventInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018064 VkAllocationCallbacks* local_pAllocator;
18065 local_device = device;
18066 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018067 local_pDisplayEventInfo = nullptr;
18068 if (pDisplayEventInfo)
18069 {
18070 local_pDisplayEventInfo = (VkDisplayEventInfoEXT*)pool->alloc(sizeof(const VkDisplayEventInfoEXT));
18071 deepcopy_VkDisplayEventInfoEXT(pool, pDisplayEventInfo, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
18072 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018073 local_pAllocator = nullptr;
18074 if (pAllocator)
18075 {
18076 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18077 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18078 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018079 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018080 if (local_pDisplayEventInfo)
18081 {
18082 transform_VkDisplayEventInfoEXT(mImpl->resources(), (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
18083 }
18084 if (local_pAllocator)
18085 {
18086 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
18087 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018088 countingStream->rewind();
18089 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018090 uint64_t cgen_var_1323;
18091 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1323, 1);
18092 countingStream->write((uint64_t*)&cgen_var_1323, 1 * 8);
18093 uint64_t cgen_var_1324;
18094 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1324, 1);
18095 countingStream->write((uint64_t*)&cgen_var_1324, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018096 marshal_VkDisplayEventInfoEXT(countingStream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018097 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018098 uint64_t cgen_var_1325 = (uint64_t)(uintptr_t)local_pAllocator;
18099 countingStream->putBe64(cgen_var_1325);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018100 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018101 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018102 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018103 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080018104 uint64_t cgen_var_1326;
18105 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1326, 1);
18106 countingStream->write((uint64_t*)&cgen_var_1326, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018107 }
18108 uint32_t packetSize_vkRegisterDisplayEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18109 countingStream->rewind();
18110 uint32_t opcode_vkRegisterDisplayEventEXT = OP_vkRegisterDisplayEventEXT;
18111 stream->write(&opcode_vkRegisterDisplayEventEXT, sizeof(uint32_t));
18112 stream->write(&packetSize_vkRegisterDisplayEventEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018113 uint64_t cgen_var_1327;
18114 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1327, 1);
18115 stream->write((uint64_t*)&cgen_var_1327, 1 * 8);
18116 uint64_t cgen_var_1328;
18117 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1328, 1);
18118 stream->write((uint64_t*)&cgen_var_1328, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018119 marshal_VkDisplayEventInfoEXT(stream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018120 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018121 uint64_t cgen_var_1329 = (uint64_t)(uintptr_t)local_pAllocator;
18122 stream->putBe64(cgen_var_1329);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018123 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018124 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018125 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018126 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018127 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080018128 uint64_t cgen_var_1330;
18129 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1330, 1);
18130 stream->write((uint64_t*)&cgen_var_1330, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018131 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080018132 uint64_t cgen_var_1331;
18133 stream->read((uint64_t*)&cgen_var_1331, 8);
18134 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1331, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018135 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
18136 stream->read(&vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018137 countingStream->clearPool();
18138 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018139 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018140 return vkRegisterDisplayEventEXT_VkResult_return;
18141}
18142
18143VkResult VkEncoder::vkGetSwapchainCounterEXT(
18144 VkDevice device,
18145 VkSwapchainKHR swapchain,
18146 VkSurfaceCounterFlagBitsEXT counter,
18147 uint64_t* pCounterValue)
18148{
18149 auto stream = mImpl->stream();
18150 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018151 auto resources = mImpl->resources();
18152 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018153 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018154 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018155 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018156 VkSurfaceCounterFlagBitsEXT local_counter;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018157 local_device = device;
18158 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018159 local_counter = counter;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018160 countingStream->rewind();
18161 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018162 uint64_t cgen_var_1332;
18163 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1332, 1);
18164 countingStream->write((uint64_t*)&cgen_var_1332, 1 * 8);
18165 uint64_t cgen_var_1333;
18166 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1333, 1);
18167 countingStream->write((uint64_t*)&cgen_var_1333, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018168 countingStream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018169 countingStream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
18170 }
18171 uint32_t packetSize_vkGetSwapchainCounterEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18172 countingStream->rewind();
18173 uint32_t opcode_vkGetSwapchainCounterEXT = OP_vkGetSwapchainCounterEXT;
18174 stream->write(&opcode_vkGetSwapchainCounterEXT, sizeof(uint32_t));
18175 stream->write(&packetSize_vkGetSwapchainCounterEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018176 uint64_t cgen_var_1334;
18177 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1334, 1);
18178 stream->write((uint64_t*)&cgen_var_1334, 1 * 8);
18179 uint64_t cgen_var_1335;
18180 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1335, 1);
18181 stream->write((uint64_t*)&cgen_var_1335, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018182 stream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018183 stream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
18184 stream->read((uint64_t*)pCounterValue, sizeof(uint64_t));
18185 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
18186 stream->read(&vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018187 countingStream->clearPool();
18188 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018189 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018190 return vkGetSwapchainCounterEXT_VkResult_return;
18191}
18192
18193#endif
18194#ifdef VK_GOOGLE_display_timing
18195VkResult VkEncoder::vkGetRefreshCycleDurationGOOGLE(
18196 VkDevice device,
18197 VkSwapchainKHR swapchain,
18198 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
18199{
18200 auto stream = mImpl->stream();
18201 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018202 auto resources = mImpl->resources();
18203 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018204 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018205 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018206 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018207 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018208 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018209 countingStream->rewind();
18210 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018211 uint64_t cgen_var_1336;
18212 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1336, 1);
18213 countingStream->write((uint64_t*)&cgen_var_1336, 1 * 8);
18214 uint64_t cgen_var_1337;
18215 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1337, 1);
18216 countingStream->write((uint64_t*)&cgen_var_1337, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018217 marshal_VkRefreshCycleDurationGOOGLE(countingStream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
18218 }
18219 uint32_t packetSize_vkGetRefreshCycleDurationGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18220 countingStream->rewind();
18221 uint32_t opcode_vkGetRefreshCycleDurationGOOGLE = OP_vkGetRefreshCycleDurationGOOGLE;
18222 stream->write(&opcode_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
18223 stream->write(&packetSize_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018224 uint64_t cgen_var_1338;
18225 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1338, 1);
18226 stream->write((uint64_t*)&cgen_var_1338, 1 * 8);
18227 uint64_t cgen_var_1339;
18228 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1339, 1);
18229 stream->write((uint64_t*)&cgen_var_1339, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018230 marshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
18231 unmarshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
18232 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
18233 stream->read(&vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018234 countingStream->clearPool();
18235 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018236 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018237 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
18238}
18239
18240VkResult VkEncoder::vkGetPastPresentationTimingGOOGLE(
18241 VkDevice device,
18242 VkSwapchainKHR swapchain,
18243 uint32_t* pPresentationTimingCount,
18244 VkPastPresentationTimingGOOGLE* pPresentationTimings)
18245{
18246 auto stream = mImpl->stream();
18247 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018248 auto resources = mImpl->resources();
18249 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018250 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018251 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018252 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018253 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018254 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018255 countingStream->rewind();
18256 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018257 uint64_t cgen_var_1340;
18258 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1340, 1);
18259 countingStream->write((uint64_t*)&cgen_var_1340, 1 * 8);
18260 uint64_t cgen_var_1341;
18261 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1341, 1);
18262 countingStream->write((uint64_t*)&cgen_var_1341, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018263 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018264 uint64_t cgen_var_1342 = (uint64_t)(uintptr_t)pPresentationTimingCount;
18265 countingStream->putBe64(cgen_var_1342);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018266 if (pPresentationTimingCount)
18267 {
18268 countingStream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
18269 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018270 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018271 uint64_t cgen_var_1343 = (uint64_t)(uintptr_t)pPresentationTimings;
18272 countingStream->putBe64(cgen_var_1343);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018273 if (pPresentationTimings)
18274 {
18275 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
18276 {
18277 marshal_VkPastPresentationTimingGOOGLE(countingStream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
18278 }
18279 }
18280 }
18281 uint32_t packetSize_vkGetPastPresentationTimingGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18282 countingStream->rewind();
18283 uint32_t opcode_vkGetPastPresentationTimingGOOGLE = OP_vkGetPastPresentationTimingGOOGLE;
18284 stream->write(&opcode_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
18285 stream->write(&packetSize_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018286 uint64_t cgen_var_1344;
18287 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1344, 1);
18288 stream->write((uint64_t*)&cgen_var_1344, 1 * 8);
18289 uint64_t cgen_var_1345;
18290 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1345, 1);
18291 stream->write((uint64_t*)&cgen_var_1345, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018292 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018293 uint64_t cgen_var_1346 = (uint64_t)(uintptr_t)pPresentationTimingCount;
18294 stream->putBe64(cgen_var_1346);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018295 if (pPresentationTimingCount)
18296 {
18297 stream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
18298 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018299 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018300 uint64_t cgen_var_1347 = (uint64_t)(uintptr_t)pPresentationTimings;
18301 stream->putBe64(cgen_var_1347);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018302 if (pPresentationTimings)
18303 {
18304 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
18305 {
18306 marshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
18307 }
18308 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018309 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018310 uint32_t* check_pPresentationTimingCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018311 check_pPresentationTimingCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018312 if (pPresentationTimingCount)
18313 {
18314 if (!(check_pPresentationTimingCount))
18315 {
18316 fprintf(stderr, "fatal: pPresentationTimingCount inconsistent between guest and host\n");
18317 }
18318 stream->read((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
18319 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018320 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018321 VkPastPresentationTimingGOOGLE* check_pPresentationTimings;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018322 check_pPresentationTimings = (VkPastPresentationTimingGOOGLE*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018323 if (pPresentationTimings)
18324 {
18325 if (!(check_pPresentationTimings))
18326 {
18327 fprintf(stderr, "fatal: pPresentationTimings inconsistent between guest and host\n");
18328 }
18329 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
18330 {
18331 unmarshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
18332 }
18333 }
18334 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
18335 stream->read(&vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018336 countingStream->clearPool();
18337 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018338 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018339 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
18340}
18341
18342#endif
18343#ifdef VK_NV_sample_mask_override_coverage
18344#endif
18345#ifdef VK_NV_geometry_shader_passthrough
18346#endif
18347#ifdef VK_NV_viewport_array2
18348#endif
18349#ifdef VK_NVX_multiview_per_view_attributes
18350#endif
18351#ifdef VK_NV_viewport_swizzle
18352#endif
18353#ifdef VK_EXT_discard_rectangles
18354void VkEncoder::vkCmdSetDiscardRectangleEXT(
18355 VkCommandBuffer commandBuffer,
18356 uint32_t firstDiscardRectangle,
18357 uint32_t discardRectangleCount,
18358 const VkRect2D* pDiscardRectangles)
18359{
18360 auto stream = mImpl->stream();
18361 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018362 auto resources = mImpl->resources();
18363 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018364 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018365 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018366 uint32_t local_firstDiscardRectangle;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018367 uint32_t local_discardRectangleCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018368 VkRect2D* local_pDiscardRectangles;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018369 local_commandBuffer = commandBuffer;
18370 local_firstDiscardRectangle = firstDiscardRectangle;
18371 local_discardRectangleCount = discardRectangleCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018372 local_pDiscardRectangles = nullptr;
18373 if (pDiscardRectangles)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018374 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018375 local_pDiscardRectangles = (VkRect2D*)pool->alloc(((discardRectangleCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018376 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
18377 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018378 deepcopy_VkRect2D(pool, pDiscardRectangles + i, (VkRect2D*)(local_pDiscardRectangles + i));
18379 }
18380 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018381 if (local_pDiscardRectangles)
18382 {
18383 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
18384 {
18385 transform_VkRect2D(mImpl->resources(), (VkRect2D*)(local_pDiscardRectangles + i));
18386 }
18387 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018388 countingStream->rewind();
18389 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018390 uint64_t cgen_var_1350;
18391 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1350, 1);
18392 countingStream->write((uint64_t*)&cgen_var_1350, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018393 countingStream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
18394 countingStream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
18395 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
18396 {
18397 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018398 }
18399 }
18400 uint32_t packetSize_vkCmdSetDiscardRectangleEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18401 countingStream->rewind();
18402 uint32_t opcode_vkCmdSetDiscardRectangleEXT = OP_vkCmdSetDiscardRectangleEXT;
18403 stream->write(&opcode_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
18404 stream->write(&packetSize_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018405 uint64_t cgen_var_1351;
18406 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1351, 1);
18407 stream->write((uint64_t*)&cgen_var_1351, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018408 stream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
18409 stream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018410 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
18411 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018412 marshal_VkRect2D(stream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018413 }
18414}
18415
18416#endif
18417#ifdef VK_EXT_conservative_rasterization
18418#endif
18419#ifdef VK_EXT_swapchain_colorspace
18420#endif
18421#ifdef VK_EXT_hdr_metadata
18422void VkEncoder::vkSetHdrMetadataEXT(
18423 VkDevice device,
18424 uint32_t swapchainCount,
18425 const VkSwapchainKHR* pSwapchains,
18426 const VkHdrMetadataEXT* pMetadata)
18427{
18428 auto stream = mImpl->stream();
18429 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018430 auto resources = mImpl->resources();
18431 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018432 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018433 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018434 uint32_t local_swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018435 VkSwapchainKHR* local_pSwapchains;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018436 VkHdrMetadataEXT* local_pMetadata;
18437 local_device = device;
18438 local_swapchainCount = swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018439 local_pSwapchains = nullptr;
18440 if (pSwapchains)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018441 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018442 local_pSwapchains = (VkSwapchainKHR*)pool->dupArray(pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
18443 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018444 local_pMetadata = nullptr;
18445 if (pMetadata)
18446 {
18447 local_pMetadata = (VkHdrMetadataEXT*)pool->alloc(((swapchainCount)) * sizeof(const VkHdrMetadataEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018448 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
18449 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018450 deepcopy_VkHdrMetadataEXT(pool, pMetadata + i, (VkHdrMetadataEXT*)(local_pMetadata + i));
18451 }
18452 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018453 if (local_pMetadata)
18454 {
18455 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
18456 {
18457 transform_VkHdrMetadataEXT(mImpl->resources(), (VkHdrMetadataEXT*)(local_pMetadata + i));
18458 }
18459 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018460 countingStream->rewind();
18461 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018462 uint64_t cgen_var_1352;
18463 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1352, 1);
18464 countingStream->write((uint64_t*)&cgen_var_1352, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018465 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018466 if (((swapchainCount)))
18467 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018468 uint64_t* cgen_var_1353;
18469 countingStream->alloc((void**)&cgen_var_1353, ((swapchainCount)) * 8);
18470 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1353, ((swapchainCount)));
18471 countingStream->write((uint64_t*)cgen_var_1353, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080018472 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018473 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
18474 {
18475 marshal_VkHdrMetadataEXT(countingStream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018476 }
18477 }
18478 uint32_t packetSize_vkSetHdrMetadataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18479 countingStream->rewind();
18480 uint32_t opcode_vkSetHdrMetadataEXT = OP_vkSetHdrMetadataEXT;
18481 stream->write(&opcode_vkSetHdrMetadataEXT, sizeof(uint32_t));
18482 stream->write(&packetSize_vkSetHdrMetadataEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018483 uint64_t cgen_var_1354;
18484 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1354, 1);
18485 stream->write((uint64_t*)&cgen_var_1354, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018486 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018487 if (((swapchainCount)))
18488 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018489 uint64_t* cgen_var_1355;
18490 stream->alloc((void**)&cgen_var_1355, ((swapchainCount)) * 8);
18491 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1355, ((swapchainCount)));
18492 stream->write((uint64_t*)cgen_var_1355, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080018493 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018494 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
18495 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018496 marshal_VkHdrMetadataEXT(stream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018497 }
18498}
18499
18500#endif
18501#ifdef VK_MVK_ios_surface
18502VkResult VkEncoder::vkCreateIOSSurfaceMVK(
18503 VkInstance instance,
18504 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
18505 const VkAllocationCallbacks* pAllocator,
18506 VkSurfaceKHR* pSurface)
18507{
18508 auto stream = mImpl->stream();
18509 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018510 auto resources = mImpl->resources();
18511 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018512 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018513 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018514 VkIOSSurfaceCreateInfoMVK* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018515 VkAllocationCallbacks* local_pAllocator;
18516 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018517 local_pCreateInfo = nullptr;
18518 if (pCreateInfo)
18519 {
18520 local_pCreateInfo = (VkIOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkIOSSurfaceCreateInfoMVK));
18521 deepcopy_VkIOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
18522 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018523 local_pAllocator = nullptr;
18524 if (pAllocator)
18525 {
18526 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18527 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18528 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018529 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018530 if (local_pCreateInfo)
18531 {
18532 transform_VkIOSSurfaceCreateInfoMVK(mImpl->resources(), (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
18533 }
18534 if (local_pAllocator)
18535 {
18536 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
18537 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018538 countingStream->rewind();
18539 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018540 uint64_t cgen_var_1356;
18541 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1356, 1);
18542 countingStream->write((uint64_t*)&cgen_var_1356, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018543 marshal_VkIOSSurfaceCreateInfoMVK(countingStream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018544 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018545 uint64_t cgen_var_1357 = (uint64_t)(uintptr_t)local_pAllocator;
18546 countingStream->putBe64(cgen_var_1357);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018547 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018548 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018549 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018550 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080018551 uint64_t cgen_var_1358;
18552 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1358, 1);
18553 countingStream->write((uint64_t*)&cgen_var_1358, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018554 }
18555 uint32_t packetSize_vkCreateIOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18556 countingStream->rewind();
18557 uint32_t opcode_vkCreateIOSSurfaceMVK = OP_vkCreateIOSSurfaceMVK;
18558 stream->write(&opcode_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
18559 stream->write(&packetSize_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018560 uint64_t cgen_var_1359;
18561 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1359, 1);
18562 stream->write((uint64_t*)&cgen_var_1359, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018563 marshal_VkIOSSurfaceCreateInfoMVK(stream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018564 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018565 uint64_t cgen_var_1360 = (uint64_t)(uintptr_t)local_pAllocator;
18566 stream->putBe64(cgen_var_1360);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018567 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018568 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018569 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018570 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018571 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080018572 uint64_t cgen_var_1361;
18573 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1361, 1);
18574 stream->write((uint64_t*)&cgen_var_1361, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018575 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080018576 uint64_t cgen_var_1362;
18577 stream->read((uint64_t*)&cgen_var_1362, 8);
18578 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1362, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018579 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
18580 stream->read(&vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018581 countingStream->clearPool();
18582 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018583 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018584 return vkCreateIOSSurfaceMVK_VkResult_return;
18585}
18586
18587#endif
18588#ifdef VK_MVK_macos_surface
18589VkResult VkEncoder::vkCreateMacOSSurfaceMVK(
18590 VkInstance instance,
18591 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
18592 const VkAllocationCallbacks* pAllocator,
18593 VkSurfaceKHR* pSurface)
18594{
18595 auto stream = mImpl->stream();
18596 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018597 auto resources = mImpl->resources();
18598 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018599 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018600 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018601 VkMacOSSurfaceCreateInfoMVK* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018602 VkAllocationCallbacks* local_pAllocator;
18603 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018604 local_pCreateInfo = nullptr;
18605 if (pCreateInfo)
18606 {
18607 local_pCreateInfo = (VkMacOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkMacOSSurfaceCreateInfoMVK));
18608 deepcopy_VkMacOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
18609 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018610 local_pAllocator = nullptr;
18611 if (pAllocator)
18612 {
18613 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18614 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18615 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018616 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018617 if (local_pCreateInfo)
18618 {
18619 transform_VkMacOSSurfaceCreateInfoMVK(mImpl->resources(), (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
18620 }
18621 if (local_pAllocator)
18622 {
18623 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
18624 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018625 countingStream->rewind();
18626 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018627 uint64_t cgen_var_1363;
18628 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1363, 1);
18629 countingStream->write((uint64_t*)&cgen_var_1363, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018630 marshal_VkMacOSSurfaceCreateInfoMVK(countingStream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018631 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018632 uint64_t cgen_var_1364 = (uint64_t)(uintptr_t)local_pAllocator;
18633 countingStream->putBe64(cgen_var_1364);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018634 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018635 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018636 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018637 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080018638 uint64_t cgen_var_1365;
18639 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1365, 1);
18640 countingStream->write((uint64_t*)&cgen_var_1365, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018641 }
18642 uint32_t packetSize_vkCreateMacOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18643 countingStream->rewind();
18644 uint32_t opcode_vkCreateMacOSSurfaceMVK = OP_vkCreateMacOSSurfaceMVK;
18645 stream->write(&opcode_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
18646 stream->write(&packetSize_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018647 uint64_t cgen_var_1366;
18648 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1366, 1);
18649 stream->write((uint64_t*)&cgen_var_1366, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018650 marshal_VkMacOSSurfaceCreateInfoMVK(stream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018651 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018652 uint64_t cgen_var_1367 = (uint64_t)(uintptr_t)local_pAllocator;
18653 stream->putBe64(cgen_var_1367);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018654 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018655 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018656 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018657 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018658 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080018659 uint64_t cgen_var_1368;
18660 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1368, 1);
18661 stream->write((uint64_t*)&cgen_var_1368, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018662 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080018663 uint64_t cgen_var_1369;
18664 stream->read((uint64_t*)&cgen_var_1369, 8);
18665 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1369, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018666 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
18667 stream->read(&vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018668 countingStream->clearPool();
18669 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018670 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018671 return vkCreateMacOSSurfaceMVK_VkResult_return;
18672}
18673
18674#endif
18675#ifdef VK_EXT_external_memory_dma_buf
18676#endif
18677#ifdef VK_EXT_queue_family_foreign
18678#endif
18679#ifdef VK_EXT_debug_utils
18680VkResult VkEncoder::vkSetDebugUtilsObjectNameEXT(
18681 VkDevice device,
18682 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
18683{
18684 auto stream = mImpl->stream();
18685 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018686 auto resources = mImpl->resources();
18687 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018688 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018689 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018690 VkDebugUtilsObjectNameInfoEXT* local_pNameInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018691 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018692 local_pNameInfo = nullptr;
18693 if (pNameInfo)
18694 {
18695 local_pNameInfo = (VkDebugUtilsObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectNameInfoEXT));
18696 deepcopy_VkDebugUtilsObjectNameInfoEXT(pool, pNameInfo, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
18697 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018698 if (local_pNameInfo)
18699 {
18700 transform_VkDebugUtilsObjectNameInfoEXT(mImpl->resources(), (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
18701 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018702 countingStream->rewind();
18703 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018704 uint64_t cgen_var_1370;
18705 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1370, 1);
18706 countingStream->write((uint64_t*)&cgen_var_1370, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018707 marshal_VkDebugUtilsObjectNameInfoEXT(countingStream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018708 }
18709 uint32_t packetSize_vkSetDebugUtilsObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18710 countingStream->rewind();
18711 uint32_t opcode_vkSetDebugUtilsObjectNameEXT = OP_vkSetDebugUtilsObjectNameEXT;
18712 stream->write(&opcode_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
18713 stream->write(&packetSize_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018714 uint64_t cgen_var_1371;
18715 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1371, 1);
18716 stream->write((uint64_t*)&cgen_var_1371, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018717 marshal_VkDebugUtilsObjectNameInfoEXT(stream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018718 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
18719 stream->read(&vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018720 countingStream->clearPool();
18721 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018722 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018723 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
18724}
18725
18726VkResult VkEncoder::vkSetDebugUtilsObjectTagEXT(
18727 VkDevice device,
18728 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
18729{
18730 auto stream = mImpl->stream();
18731 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018732 auto resources = mImpl->resources();
18733 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018734 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018735 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018736 VkDebugUtilsObjectTagInfoEXT* local_pTagInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018737 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018738 local_pTagInfo = nullptr;
18739 if (pTagInfo)
18740 {
18741 local_pTagInfo = (VkDebugUtilsObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectTagInfoEXT));
18742 deepcopy_VkDebugUtilsObjectTagInfoEXT(pool, pTagInfo, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
18743 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018744 if (local_pTagInfo)
18745 {
18746 transform_VkDebugUtilsObjectTagInfoEXT(mImpl->resources(), (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
18747 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018748 countingStream->rewind();
18749 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018750 uint64_t cgen_var_1372;
18751 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1372, 1);
18752 countingStream->write((uint64_t*)&cgen_var_1372, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018753 marshal_VkDebugUtilsObjectTagInfoEXT(countingStream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018754 }
18755 uint32_t packetSize_vkSetDebugUtilsObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18756 countingStream->rewind();
18757 uint32_t opcode_vkSetDebugUtilsObjectTagEXT = OP_vkSetDebugUtilsObjectTagEXT;
18758 stream->write(&opcode_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
18759 stream->write(&packetSize_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018760 uint64_t cgen_var_1373;
18761 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1373, 1);
18762 stream->write((uint64_t*)&cgen_var_1373, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018763 marshal_VkDebugUtilsObjectTagInfoEXT(stream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018764 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
18765 stream->read(&vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018766 countingStream->clearPool();
18767 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018768 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018769 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
18770}
18771
18772void VkEncoder::vkQueueBeginDebugUtilsLabelEXT(
18773 VkQueue queue,
18774 const VkDebugUtilsLabelEXT* pLabelInfo)
18775{
18776 auto stream = mImpl->stream();
18777 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018778 auto resources = mImpl->resources();
18779 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018780 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018781 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018782 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018783 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018784 local_pLabelInfo = nullptr;
18785 if (pLabelInfo)
18786 {
18787 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
18788 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
18789 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018790 if (local_pLabelInfo)
18791 {
18792 transform_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
18793 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018794 countingStream->rewind();
18795 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018796 uint64_t cgen_var_1374;
18797 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1374, 1);
18798 countingStream->write((uint64_t*)&cgen_var_1374, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018799 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018800 }
18801 uint32_t packetSize_vkQueueBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18802 countingStream->rewind();
18803 uint32_t opcode_vkQueueBeginDebugUtilsLabelEXT = OP_vkQueueBeginDebugUtilsLabelEXT;
18804 stream->write(&opcode_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
18805 stream->write(&packetSize_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018806 uint64_t cgen_var_1375;
18807 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1375, 1);
18808 stream->write((uint64_t*)&cgen_var_1375, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018809 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018810}
18811
18812void VkEncoder::vkQueueEndDebugUtilsLabelEXT(
18813 VkQueue queue)
18814{
18815 auto stream = mImpl->stream();
18816 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018817 auto resources = mImpl->resources();
18818 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018819 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018820 VkQueue local_queue;
18821 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018822 countingStream->rewind();
18823 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018824 uint64_t cgen_var_1376;
18825 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1376, 1);
18826 countingStream->write((uint64_t*)&cgen_var_1376, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018827 }
18828 uint32_t packetSize_vkQueueEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18829 countingStream->rewind();
18830 uint32_t opcode_vkQueueEndDebugUtilsLabelEXT = OP_vkQueueEndDebugUtilsLabelEXT;
18831 stream->write(&opcode_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
18832 stream->write(&packetSize_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018833 uint64_t cgen_var_1377;
18834 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1377, 1);
18835 stream->write((uint64_t*)&cgen_var_1377, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018836}
18837
18838void VkEncoder::vkQueueInsertDebugUtilsLabelEXT(
18839 VkQueue queue,
18840 const VkDebugUtilsLabelEXT* pLabelInfo)
18841{
18842 auto stream = mImpl->stream();
18843 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018844 auto resources = mImpl->resources();
18845 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018846 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018847 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018848 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018849 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018850 local_pLabelInfo = nullptr;
18851 if (pLabelInfo)
18852 {
18853 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
18854 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
18855 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018856 if (local_pLabelInfo)
18857 {
18858 transform_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
18859 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018860 countingStream->rewind();
18861 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018862 uint64_t cgen_var_1378;
18863 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1378, 1);
18864 countingStream->write((uint64_t*)&cgen_var_1378, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018865 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018866 }
18867 uint32_t packetSize_vkQueueInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18868 countingStream->rewind();
18869 uint32_t opcode_vkQueueInsertDebugUtilsLabelEXT = OP_vkQueueInsertDebugUtilsLabelEXT;
18870 stream->write(&opcode_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
18871 stream->write(&packetSize_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018872 uint64_t cgen_var_1379;
18873 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1379, 1);
18874 stream->write((uint64_t*)&cgen_var_1379, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018875 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018876}
18877
18878void VkEncoder::vkCmdBeginDebugUtilsLabelEXT(
18879 VkCommandBuffer commandBuffer,
18880 const VkDebugUtilsLabelEXT* pLabelInfo)
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 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018888 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018889 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018890 local_pLabelInfo = nullptr;
18891 if (pLabelInfo)
18892 {
18893 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
18894 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
18895 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018896 if (local_pLabelInfo)
18897 {
18898 transform_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
18899 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018900 countingStream->rewind();
18901 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018902 uint64_t cgen_var_1380;
18903 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1380, 1);
18904 countingStream->write((uint64_t*)&cgen_var_1380, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018905 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018906 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018907 uint32_t packetSize_vkCmdBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18908 countingStream->rewind();
18909 uint32_t opcode_vkCmdBeginDebugUtilsLabelEXT = OP_vkCmdBeginDebugUtilsLabelEXT;
18910 stream->write(&opcode_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
18911 stream->write(&packetSize_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018912 uint64_t cgen_var_1381;
18913 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1381, 1);
18914 stream->write((uint64_t*)&cgen_var_1381, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018915 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
18916}
18917
18918void VkEncoder::vkCmdEndDebugUtilsLabelEXT(
18919 VkCommandBuffer commandBuffer)
18920{
18921 auto stream = mImpl->stream();
18922 auto countingStream = mImpl->countingStream();
18923 auto resources = mImpl->resources();
18924 auto pool = mImpl->pool();
18925 stream->setHandleMapping(resources->unwrapMapping());
18926 VkCommandBuffer local_commandBuffer;
18927 local_commandBuffer = commandBuffer;
18928 countingStream->rewind();
18929 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018930 uint64_t cgen_var_1382;
18931 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1382, 1);
18932 countingStream->write((uint64_t*)&cgen_var_1382, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018933 }
18934 uint32_t packetSize_vkCmdEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18935 countingStream->rewind();
18936 uint32_t opcode_vkCmdEndDebugUtilsLabelEXT = OP_vkCmdEndDebugUtilsLabelEXT;
18937 stream->write(&opcode_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
18938 stream->write(&packetSize_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018939 uint64_t cgen_var_1383;
18940 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1383, 1);
18941 stream->write((uint64_t*)&cgen_var_1383, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018942}
18943
18944void VkEncoder::vkCmdInsertDebugUtilsLabelEXT(
18945 VkCommandBuffer commandBuffer,
18946 const VkDebugUtilsLabelEXT* pLabelInfo)
18947{
18948 auto stream = mImpl->stream();
18949 auto countingStream = mImpl->countingStream();
18950 auto resources = mImpl->resources();
18951 auto pool = mImpl->pool();
18952 stream->setHandleMapping(resources->unwrapMapping());
18953 VkCommandBuffer local_commandBuffer;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018954 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018955 local_commandBuffer = commandBuffer;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018956 local_pLabelInfo = nullptr;
18957 if (pLabelInfo)
18958 {
18959 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
18960 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
18961 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018962 if (local_pLabelInfo)
18963 {
18964 transform_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
18965 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018966 countingStream->rewind();
18967 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018968 uint64_t cgen_var_1384;
18969 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1384, 1);
18970 countingStream->write((uint64_t*)&cgen_var_1384, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018971 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
18972 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018973 uint32_t packetSize_vkCmdInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18974 countingStream->rewind();
18975 uint32_t opcode_vkCmdInsertDebugUtilsLabelEXT = OP_vkCmdInsertDebugUtilsLabelEXT;
18976 stream->write(&opcode_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
18977 stream->write(&packetSize_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018978 uint64_t cgen_var_1385;
18979 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1385, 1);
18980 stream->write((uint64_t*)&cgen_var_1385, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018981 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018982}
18983
18984VkResult VkEncoder::vkCreateDebugUtilsMessengerEXT(
18985 VkInstance instance,
18986 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
18987 const VkAllocationCallbacks* pAllocator,
18988 VkDebugUtilsMessengerEXT* pMessenger)
18989{
18990 auto stream = mImpl->stream();
18991 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018992 auto resources = mImpl->resources();
18993 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018994 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018995 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018996 VkDebugUtilsMessengerCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018997 VkAllocationCallbacks* local_pAllocator;
18998 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018999 local_pCreateInfo = nullptr;
19000 if (pCreateInfo)
19001 {
19002 local_pCreateInfo = (VkDebugUtilsMessengerCreateInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCreateInfoEXT));
19003 deepcopy_VkDebugUtilsMessengerCreateInfoEXT(pool, pCreateInfo, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
19004 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019005 local_pAllocator = nullptr;
19006 if (pAllocator)
19007 {
19008 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19009 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19010 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019011 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019012 if (local_pCreateInfo)
19013 {
19014 transform_VkDebugUtilsMessengerCreateInfoEXT(mImpl->resources(), (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
19015 }
19016 if (local_pAllocator)
19017 {
19018 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
19019 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019020 countingStream->rewind();
19021 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019022 uint64_t cgen_var_1386;
19023 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1386, 1);
19024 countingStream->write((uint64_t*)&cgen_var_1386, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019025 marshal_VkDebugUtilsMessengerCreateInfoEXT(countingStream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019026 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019027 uint64_t cgen_var_1387 = (uint64_t)(uintptr_t)local_pAllocator;
19028 countingStream->putBe64(cgen_var_1387);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019029 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019030 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019031 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019032 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080019033 uint64_t cgen_var_1388;
19034 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1388, 1);
19035 countingStream->write((uint64_t*)&cgen_var_1388, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019036 }
19037 uint32_t packetSize_vkCreateDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19038 countingStream->rewind();
19039 uint32_t opcode_vkCreateDebugUtilsMessengerEXT = OP_vkCreateDebugUtilsMessengerEXT;
19040 stream->write(&opcode_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
19041 stream->write(&packetSize_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019042 uint64_t cgen_var_1389;
19043 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1389, 1);
19044 stream->write((uint64_t*)&cgen_var_1389, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019045 marshal_VkDebugUtilsMessengerCreateInfoEXT(stream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019046 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019047 uint64_t cgen_var_1390 = (uint64_t)(uintptr_t)local_pAllocator;
19048 stream->putBe64(cgen_var_1390);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019049 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019050 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019051 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019052 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019053 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080019054 uint64_t cgen_var_1391;
19055 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1391, 1);
19056 stream->write((uint64_t*)&cgen_var_1391, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019057 stream->setHandleMapping(resources->unwrapMapping());
19058 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080019059 uint64_t cgen_var_1392;
19060 stream->read((uint64_t*)&cgen_var_1392, 8);
19061 stream->handleMapping()->mapHandles_u64_VkDebugUtilsMessengerEXT(&cgen_var_1392, (VkDebugUtilsMessengerEXT*)pMessenger, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019062 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019063 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
19064 stream->read(&vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019065 countingStream->clearPool();
19066 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019067 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019068 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
19069}
19070
19071void VkEncoder::vkDestroyDebugUtilsMessengerEXT(
19072 VkInstance instance,
19073 VkDebugUtilsMessengerEXT messenger,
19074 const VkAllocationCallbacks* pAllocator)
19075{
19076 auto stream = mImpl->stream();
19077 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019078 auto resources = mImpl->resources();
19079 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019080 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019081 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019082 VkDebugUtilsMessengerEXT local_messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019083 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019084 local_instance = instance;
19085 local_messenger = messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019086 local_pAllocator = nullptr;
19087 if (pAllocator)
19088 {
19089 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19090 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19091 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019092 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019093 if (local_pAllocator)
19094 {
19095 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
19096 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019097 countingStream->rewind();
19098 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019099 uint64_t cgen_var_1393;
19100 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1393, 1);
19101 countingStream->write((uint64_t*)&cgen_var_1393, 1 * 8);
19102 uint64_t cgen_var_1394;
19103 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1394, 1);
19104 countingStream->write((uint64_t*)&cgen_var_1394, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019105 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019106 uint64_t cgen_var_1395 = (uint64_t)(uintptr_t)local_pAllocator;
19107 countingStream->putBe64(cgen_var_1395);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019108 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019109 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019110 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019111 }
19112 }
19113 uint32_t packetSize_vkDestroyDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19114 countingStream->rewind();
19115 uint32_t opcode_vkDestroyDebugUtilsMessengerEXT = OP_vkDestroyDebugUtilsMessengerEXT;
19116 stream->write(&opcode_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
19117 stream->write(&packetSize_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019118 uint64_t cgen_var_1396;
19119 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1396, 1);
19120 stream->write((uint64_t*)&cgen_var_1396, 1 * 8);
19121 uint64_t cgen_var_1397;
19122 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1397, 1);
19123 stream->write((uint64_t*)&cgen_var_1397, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019124 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019125 uint64_t cgen_var_1398 = (uint64_t)(uintptr_t)local_pAllocator;
19126 stream->putBe64(cgen_var_1398);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019127 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019128 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019129 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019130 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019131 resources->destroyMapping()->mapHandles_VkDebugUtilsMessengerEXT((VkDebugUtilsMessengerEXT*)&messenger);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019132}
19133
19134void VkEncoder::vkSubmitDebugUtilsMessageEXT(
19135 VkInstance instance,
19136 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
19137 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
19138 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
19139{
19140 auto stream = mImpl->stream();
19141 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019142 auto resources = mImpl->resources();
19143 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019144 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019145 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019146 VkDebugUtilsMessageSeverityFlagBitsEXT local_messageSeverity;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019147 VkDebugUtilsMessageTypeFlagsEXT local_messageTypes;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019148 VkDebugUtilsMessengerCallbackDataEXT* local_pCallbackData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019149 local_instance = instance;
19150 local_messageSeverity = messageSeverity;
19151 local_messageTypes = messageTypes;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019152 local_pCallbackData = nullptr;
19153 if (pCallbackData)
19154 {
19155 local_pCallbackData = (VkDebugUtilsMessengerCallbackDataEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCallbackDataEXT));
19156 deepcopy_VkDebugUtilsMessengerCallbackDataEXT(pool, pCallbackData, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
19157 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019158 if (local_pCallbackData)
19159 {
19160 transform_VkDebugUtilsMessengerCallbackDataEXT(mImpl->resources(), (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
19161 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019162 countingStream->rewind();
19163 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019164 uint64_t cgen_var_1399;
19165 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1399, 1);
19166 countingStream->write((uint64_t*)&cgen_var_1399, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019167 countingStream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
19168 countingStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
19169 marshal_VkDebugUtilsMessengerCallbackDataEXT(countingStream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019170 }
19171 uint32_t packetSize_vkSubmitDebugUtilsMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19172 countingStream->rewind();
19173 uint32_t opcode_vkSubmitDebugUtilsMessageEXT = OP_vkSubmitDebugUtilsMessageEXT;
19174 stream->write(&opcode_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
19175 stream->write(&packetSize_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019176 uint64_t cgen_var_1400;
19177 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1400, 1);
19178 stream->write((uint64_t*)&cgen_var_1400, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019179 stream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
19180 stream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
19181 marshal_VkDebugUtilsMessengerCallbackDataEXT(stream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019182}
19183
19184#endif
19185#ifdef VK_ANDROID_external_memory_android_hardware_buffer
19186VkResult VkEncoder::vkGetAndroidHardwareBufferPropertiesANDROID(
19187 VkDevice device,
19188 const AHardwareBuffer* buffer,
19189 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
19190{
19191 auto stream = mImpl->stream();
19192 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019193 auto resources = mImpl->resources();
19194 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019195 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019196 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019197 AHardwareBuffer* local_buffer;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019198 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019199 local_buffer = nullptr;
19200 if (buffer)
19201 {
19202 local_buffer = (AHardwareBuffer*)pool->dupArray(buffer, sizeof(const AHardwareBuffer));
19203 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019204 countingStream->rewind();
19205 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019206 uint64_t cgen_var_1401;
19207 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1401, 1);
19208 countingStream->write((uint64_t*)&cgen_var_1401, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019209 countingStream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019210 marshal_VkAndroidHardwareBufferPropertiesANDROID(countingStream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
19211 }
19212 uint32_t packetSize_vkGetAndroidHardwareBufferPropertiesANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19213 countingStream->rewind();
19214 uint32_t opcode_vkGetAndroidHardwareBufferPropertiesANDROID = OP_vkGetAndroidHardwareBufferPropertiesANDROID;
19215 stream->write(&opcode_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
19216 stream->write(&packetSize_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019217 uint64_t cgen_var_1402;
19218 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1402, 1);
19219 stream->write((uint64_t*)&cgen_var_1402, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019220 stream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019221 marshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
19222 unmarshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
19223 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
19224 stream->read(&vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019225 countingStream->clearPool();
19226 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019227 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019228 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
19229}
19230
19231VkResult VkEncoder::vkGetMemoryAndroidHardwareBufferANDROID(
19232 VkDevice device,
19233 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
19234 AHardwareBuffer** pBuffer)
19235{
19236 auto stream = mImpl->stream();
19237 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019238 auto resources = mImpl->resources();
19239 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019240 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019241 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019242 VkMemoryGetAndroidHardwareBufferInfoANDROID* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019243 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019244 local_pInfo = nullptr;
19245 if (pInfo)
19246 {
19247 local_pInfo = (VkMemoryGetAndroidHardwareBufferInfoANDROID*)pool->alloc(sizeof(const VkMemoryGetAndroidHardwareBufferInfoANDROID));
19248 deepcopy_VkMemoryGetAndroidHardwareBufferInfoANDROID(pool, pInfo, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
19249 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019250 if (local_pInfo)
19251 {
19252 transform_VkMemoryGetAndroidHardwareBufferInfoANDROID(mImpl->resources(), (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
19253 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019254 countingStream->rewind();
19255 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019256 uint64_t cgen_var_1403;
19257 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1403, 1);
19258 countingStream->write((uint64_t*)&cgen_var_1403, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019259 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(countingStream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019260 countingStream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
19261 }
19262 uint32_t packetSize_vkGetMemoryAndroidHardwareBufferANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19263 countingStream->rewind();
19264 uint32_t opcode_vkGetMemoryAndroidHardwareBufferANDROID = OP_vkGetMemoryAndroidHardwareBufferANDROID;
19265 stream->write(&opcode_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
19266 stream->write(&packetSize_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019267 uint64_t cgen_var_1404;
19268 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1404, 1);
19269 stream->write((uint64_t*)&cgen_var_1404, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019270 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(stream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019271 stream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
19272 stream->read((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
19273 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
19274 stream->read(&vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019275 countingStream->clearPool();
19276 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019277 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019278 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
19279}
19280
19281#endif
19282#ifdef VK_EXT_sampler_filter_minmax
19283#endif
19284#ifdef VK_AMD_gpu_shader_int16
19285#endif
19286#ifdef VK_AMD_mixed_attachment_samples
19287#endif
19288#ifdef VK_AMD_shader_fragment_mask
19289#endif
19290#ifdef VK_EXT_shader_stencil_export
19291#endif
19292#ifdef VK_EXT_sample_locations
19293void VkEncoder::vkCmdSetSampleLocationsEXT(
19294 VkCommandBuffer commandBuffer,
19295 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
19296{
19297 auto stream = mImpl->stream();
19298 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019299 auto resources = mImpl->resources();
19300 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019301 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019302 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019303 VkSampleLocationsInfoEXT* local_pSampleLocationsInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019304 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019305 local_pSampleLocationsInfo = nullptr;
19306 if (pSampleLocationsInfo)
19307 {
19308 local_pSampleLocationsInfo = (VkSampleLocationsInfoEXT*)pool->alloc(sizeof(const VkSampleLocationsInfoEXT));
19309 deepcopy_VkSampleLocationsInfoEXT(pool, pSampleLocationsInfo, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
19310 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019311 if (local_pSampleLocationsInfo)
19312 {
19313 transform_VkSampleLocationsInfoEXT(mImpl->resources(), (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
19314 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019315 countingStream->rewind();
19316 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019317 uint64_t cgen_var_1405;
19318 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1405, 1);
19319 countingStream->write((uint64_t*)&cgen_var_1405, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019320 marshal_VkSampleLocationsInfoEXT(countingStream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019321 }
19322 uint32_t packetSize_vkCmdSetSampleLocationsEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19323 countingStream->rewind();
19324 uint32_t opcode_vkCmdSetSampleLocationsEXT = OP_vkCmdSetSampleLocationsEXT;
19325 stream->write(&opcode_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
19326 stream->write(&packetSize_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019327 uint64_t cgen_var_1406;
19328 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1406, 1);
19329 stream->write((uint64_t*)&cgen_var_1406, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019330 marshal_VkSampleLocationsInfoEXT(stream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019331}
19332
19333void VkEncoder::vkGetPhysicalDeviceMultisamplePropertiesEXT(
19334 VkPhysicalDevice physicalDevice,
19335 VkSampleCountFlagBits samples,
19336 VkMultisamplePropertiesEXT* pMultisampleProperties)
19337{
19338 auto stream = mImpl->stream();
19339 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019340 auto resources = mImpl->resources();
19341 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019342 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019343 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019344 VkSampleCountFlagBits local_samples;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019345 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019346 local_samples = samples;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019347 countingStream->rewind();
19348 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019349 uint64_t cgen_var_1407;
19350 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1407, 1);
19351 countingStream->write((uint64_t*)&cgen_var_1407, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019352 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019353 marshal_VkMultisamplePropertiesEXT(countingStream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
19354 }
19355 uint32_t packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19356 countingStream->rewind();
19357 uint32_t opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT = OP_vkGetPhysicalDeviceMultisamplePropertiesEXT;
19358 stream->write(&opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
19359 stream->write(&packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019360 uint64_t cgen_var_1408;
19361 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1408, 1);
19362 stream->write((uint64_t*)&cgen_var_1408, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019363 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019364 marshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
19365 unmarshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
19366}
19367
19368#endif
19369#ifdef VK_EXT_blend_operation_advanced
19370#endif
19371#ifdef VK_NV_fragment_coverage_to_color
19372#endif
19373#ifdef VK_NV_framebuffer_mixed_samples
19374#endif
19375#ifdef VK_NV_fill_rectangle
19376#endif
19377#ifdef VK_EXT_post_depth_coverage
19378#endif
19379#ifdef VK_EXT_validation_cache
19380VkResult VkEncoder::vkCreateValidationCacheEXT(
19381 VkDevice device,
19382 const VkValidationCacheCreateInfoEXT* pCreateInfo,
19383 const VkAllocationCallbacks* pAllocator,
19384 VkValidationCacheEXT* pValidationCache)
19385{
19386 auto stream = mImpl->stream();
19387 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019388 auto resources = mImpl->resources();
19389 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019390 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019391 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019392 VkValidationCacheCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019393 VkAllocationCallbacks* local_pAllocator;
19394 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019395 local_pCreateInfo = nullptr;
19396 if (pCreateInfo)
19397 {
19398 local_pCreateInfo = (VkValidationCacheCreateInfoEXT*)pool->alloc(sizeof(const VkValidationCacheCreateInfoEXT));
19399 deepcopy_VkValidationCacheCreateInfoEXT(pool, pCreateInfo, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
19400 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019401 local_pAllocator = nullptr;
19402 if (pAllocator)
19403 {
19404 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19405 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19406 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019407 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019408 if (local_pCreateInfo)
19409 {
19410 transform_VkValidationCacheCreateInfoEXT(mImpl->resources(), (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
19411 }
19412 if (local_pAllocator)
19413 {
19414 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
19415 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019416 countingStream->rewind();
19417 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019418 uint64_t cgen_var_1409;
19419 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1409, 1);
19420 countingStream->write((uint64_t*)&cgen_var_1409, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019421 marshal_VkValidationCacheCreateInfoEXT(countingStream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019422 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019423 uint64_t cgen_var_1410 = (uint64_t)(uintptr_t)local_pAllocator;
19424 countingStream->putBe64(cgen_var_1410);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019425 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019426 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019427 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019428 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080019429 uint64_t cgen_var_1411;
19430 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1411, 1);
19431 countingStream->write((uint64_t*)&cgen_var_1411, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019432 }
19433 uint32_t packetSize_vkCreateValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19434 countingStream->rewind();
19435 uint32_t opcode_vkCreateValidationCacheEXT = OP_vkCreateValidationCacheEXT;
19436 stream->write(&opcode_vkCreateValidationCacheEXT, sizeof(uint32_t));
19437 stream->write(&packetSize_vkCreateValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019438 uint64_t cgen_var_1412;
19439 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1412, 1);
19440 stream->write((uint64_t*)&cgen_var_1412, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019441 marshal_VkValidationCacheCreateInfoEXT(stream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019442 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019443 uint64_t cgen_var_1413 = (uint64_t)(uintptr_t)local_pAllocator;
19444 stream->putBe64(cgen_var_1413);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019445 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019446 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019447 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019448 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019449 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080019450 uint64_t cgen_var_1414;
19451 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1414, 1);
19452 stream->write((uint64_t*)&cgen_var_1414, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019453 stream->setHandleMapping(resources->unwrapMapping());
19454 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080019455 uint64_t cgen_var_1415;
19456 stream->read((uint64_t*)&cgen_var_1415, 8);
19457 stream->handleMapping()->mapHandles_u64_VkValidationCacheEXT(&cgen_var_1415, (VkValidationCacheEXT*)pValidationCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019458 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019459 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
19460 stream->read(&vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019461 countingStream->clearPool();
19462 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019463 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019464 return vkCreateValidationCacheEXT_VkResult_return;
19465}
19466
19467void VkEncoder::vkDestroyValidationCacheEXT(
19468 VkDevice device,
19469 VkValidationCacheEXT validationCache,
19470 const VkAllocationCallbacks* pAllocator)
19471{
19472 auto stream = mImpl->stream();
19473 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019474 auto resources = mImpl->resources();
19475 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019476 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019477 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019478 VkValidationCacheEXT local_validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019479 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019480 local_device = device;
19481 local_validationCache = validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019482 local_pAllocator = nullptr;
19483 if (pAllocator)
19484 {
19485 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19486 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19487 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019488 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019489 if (local_pAllocator)
19490 {
19491 transform_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
19492 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019493 countingStream->rewind();
19494 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019495 uint64_t cgen_var_1416;
19496 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1416, 1);
19497 countingStream->write((uint64_t*)&cgen_var_1416, 1 * 8);
19498 uint64_t cgen_var_1417;
19499 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1417, 1);
19500 countingStream->write((uint64_t*)&cgen_var_1417, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019501 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019502 uint64_t cgen_var_1418 = (uint64_t)(uintptr_t)local_pAllocator;
19503 countingStream->putBe64(cgen_var_1418);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019504 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019505 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019506 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019507 }
19508 }
19509 uint32_t packetSize_vkDestroyValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19510 countingStream->rewind();
19511 uint32_t opcode_vkDestroyValidationCacheEXT = OP_vkDestroyValidationCacheEXT;
19512 stream->write(&opcode_vkDestroyValidationCacheEXT, sizeof(uint32_t));
19513 stream->write(&packetSize_vkDestroyValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019514 uint64_t cgen_var_1419;
19515 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1419, 1);
19516 stream->write((uint64_t*)&cgen_var_1419, 1 * 8);
19517 uint64_t cgen_var_1420;
19518 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1420, 1);
19519 stream->write((uint64_t*)&cgen_var_1420, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019520 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019521 uint64_t cgen_var_1421 = (uint64_t)(uintptr_t)local_pAllocator;
19522 stream->putBe64(cgen_var_1421);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019523 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019524 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019525 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019526 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019527 resources->destroyMapping()->mapHandles_VkValidationCacheEXT((VkValidationCacheEXT*)&validationCache);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019528}
19529
19530VkResult VkEncoder::vkMergeValidationCachesEXT(
19531 VkDevice device,
19532 VkValidationCacheEXT dstCache,
19533 uint32_t srcCacheCount,
19534 const VkValidationCacheEXT* pSrcCaches)
19535{
19536 auto stream = mImpl->stream();
19537 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019538 auto resources = mImpl->resources();
19539 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019540 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019541 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019542 VkValidationCacheEXT local_dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019543 uint32_t local_srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019544 VkValidationCacheEXT* local_pSrcCaches;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019545 local_device = device;
19546 local_dstCache = dstCache;
19547 local_srcCacheCount = srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019548 local_pSrcCaches = nullptr;
19549 if (pSrcCaches)
19550 {
19551 local_pSrcCaches = (VkValidationCacheEXT*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
19552 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019553 countingStream->rewind();
19554 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019555 uint64_t cgen_var_1422;
19556 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1422, 1);
19557 countingStream->write((uint64_t*)&cgen_var_1422, 1 * 8);
19558 uint64_t cgen_var_1423;
19559 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1423, 1);
19560 countingStream->write((uint64_t*)&cgen_var_1423, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019561 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019562 if (((srcCacheCount)))
19563 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019564 uint64_t* cgen_var_1424;
19565 countingStream->alloc((void**)&cgen_var_1424, ((srcCacheCount)) * 8);
19566 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1424, ((srcCacheCount)));
19567 countingStream->write((uint64_t*)cgen_var_1424, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080019568 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019569 }
19570 uint32_t packetSize_vkMergeValidationCachesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19571 countingStream->rewind();
19572 uint32_t opcode_vkMergeValidationCachesEXT = OP_vkMergeValidationCachesEXT;
19573 stream->write(&opcode_vkMergeValidationCachesEXT, sizeof(uint32_t));
19574 stream->write(&packetSize_vkMergeValidationCachesEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019575 uint64_t cgen_var_1425;
19576 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1425, 1);
19577 stream->write((uint64_t*)&cgen_var_1425, 1 * 8);
19578 uint64_t cgen_var_1426;
19579 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1426, 1);
19580 stream->write((uint64_t*)&cgen_var_1426, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019581 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019582 if (((srcCacheCount)))
19583 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019584 uint64_t* cgen_var_1427;
19585 stream->alloc((void**)&cgen_var_1427, ((srcCacheCount)) * 8);
19586 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1427, ((srcCacheCount)));
19587 stream->write((uint64_t*)cgen_var_1427, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080019588 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019589 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
19590 stream->read(&vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019591 countingStream->clearPool();
19592 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019593 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019594 return vkMergeValidationCachesEXT_VkResult_return;
19595}
19596
19597VkResult VkEncoder::vkGetValidationCacheDataEXT(
19598 VkDevice device,
19599 VkValidationCacheEXT validationCache,
19600 size_t* pDataSize,
19601 void* pData)
19602{
19603 auto stream = mImpl->stream();
19604 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019605 auto resources = mImpl->resources();
19606 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019607 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019608 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019609 VkValidationCacheEXT local_validationCache;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019610 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019611 local_validationCache = validationCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019612 countingStream->rewind();
19613 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019614 uint64_t cgen_var_1428;
19615 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1428, 1);
19616 countingStream->write((uint64_t*)&cgen_var_1428, 1 * 8);
19617 uint64_t cgen_var_1429;
19618 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1429, 1);
19619 countingStream->write((uint64_t*)&cgen_var_1429, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019620 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019621 uint64_t cgen_var_1430 = (uint64_t)(uintptr_t)pDataSize;
19622 countingStream->putBe64(cgen_var_1430);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019623 if (pDataSize)
19624 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019625 uint64_t cgen_var_1431 = (uint64_t)(*pDataSize);
19626 countingStream->putBe64(cgen_var_1431);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019627 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019628 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019629 uint64_t cgen_var_1432 = (uint64_t)(uintptr_t)pData;
19630 countingStream->putBe64(cgen_var_1432);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019631 if (pData)
19632 {
19633 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
19634 }
19635 }
19636 uint32_t packetSize_vkGetValidationCacheDataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19637 countingStream->rewind();
19638 uint32_t opcode_vkGetValidationCacheDataEXT = OP_vkGetValidationCacheDataEXT;
19639 stream->write(&opcode_vkGetValidationCacheDataEXT, sizeof(uint32_t));
19640 stream->write(&packetSize_vkGetValidationCacheDataEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019641 uint64_t cgen_var_1433;
19642 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1433, 1);
19643 stream->write((uint64_t*)&cgen_var_1433, 1 * 8);
19644 uint64_t cgen_var_1434;
19645 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1434, 1);
19646 stream->write((uint64_t*)&cgen_var_1434, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019647 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019648 uint64_t cgen_var_1435 = (uint64_t)(uintptr_t)pDataSize;
19649 stream->putBe64(cgen_var_1435);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019650 if (pDataSize)
19651 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019652 uint64_t cgen_var_1436 = (uint64_t)(*pDataSize);
19653 stream->putBe64(cgen_var_1436);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019654 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019655 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019656 uint64_t cgen_var_1437 = (uint64_t)(uintptr_t)pData;
19657 stream->putBe64(cgen_var_1437);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019658 if (pData)
19659 {
19660 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
19661 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019662 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019663 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019664 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019665 if (pDataSize)
19666 {
19667 if (!(check_pDataSize))
19668 {
19669 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
19670 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080019671 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019672 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019673 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019674 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019675 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019676 if (pData)
19677 {
19678 if (!(check_pData))
19679 {
19680 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
19681 }
19682 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
19683 }
19684 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
19685 stream->read(&vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019686 countingStream->clearPool();
19687 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019688 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019689 return vkGetValidationCacheDataEXT_VkResult_return;
19690}
19691
19692#endif
19693#ifdef VK_EXT_descriptor_indexing
19694#endif
19695#ifdef VK_EXT_shader_viewport_index_layer
19696#endif
19697#ifdef VK_EXT_global_priority
19698#endif
19699#ifdef VK_EXT_external_memory_host
19700VkResult VkEncoder::vkGetMemoryHostPointerPropertiesEXT(
19701 VkDevice device,
19702 VkExternalMemoryHandleTypeFlagBits handleType,
19703 const void* pHostPointer,
19704 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
19705{
19706 auto stream = mImpl->stream();
19707 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019708 auto resources = mImpl->resources();
19709 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019710 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019711 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019712 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019713 void* local_pHostPointer;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019714 local_device = device;
19715 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019716 local_pHostPointer = nullptr;
19717 if (pHostPointer)
19718 {
19719 local_pHostPointer = (void*)pool->dupArray(pHostPointer, sizeof(const uint8_t));
19720 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019721 countingStream->rewind();
19722 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019723 uint64_t cgen_var_1441;
19724 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1441, 1);
19725 countingStream->write((uint64_t*)&cgen_var_1441, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019726 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019727 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019728 uint64_t cgen_var_1442 = (uint64_t)(uintptr_t)local_pHostPointer;
19729 countingStream->putBe64(cgen_var_1442);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019730 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019731 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019732 countingStream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019733 }
19734 marshal_VkMemoryHostPointerPropertiesEXT(countingStream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
19735 }
19736 uint32_t packetSize_vkGetMemoryHostPointerPropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19737 countingStream->rewind();
19738 uint32_t opcode_vkGetMemoryHostPointerPropertiesEXT = OP_vkGetMemoryHostPointerPropertiesEXT;
19739 stream->write(&opcode_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
19740 stream->write(&packetSize_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019741 uint64_t cgen_var_1443;
19742 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1443, 1);
19743 stream->write((uint64_t*)&cgen_var_1443, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019744 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019745 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019746 uint64_t cgen_var_1444 = (uint64_t)(uintptr_t)local_pHostPointer;
19747 stream->putBe64(cgen_var_1444);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019748 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019749 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019750 stream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019751 }
19752 marshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
19753 unmarshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
19754 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
19755 stream->read(&vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019756 countingStream->clearPool();
19757 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019758 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019759 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
19760}
19761
19762#endif
19763#ifdef VK_AMD_buffer_marker
19764void VkEncoder::vkCmdWriteBufferMarkerAMD(
19765 VkCommandBuffer commandBuffer,
19766 VkPipelineStageFlagBits pipelineStage,
19767 VkBuffer dstBuffer,
19768 VkDeviceSize dstOffset,
19769 uint32_t marker)
19770{
19771 auto stream = mImpl->stream();
19772 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019773 auto resources = mImpl->resources();
19774 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019775 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019776 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019777 VkPipelineStageFlagBits local_pipelineStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019778 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019779 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019780 uint32_t local_marker;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019781 local_commandBuffer = commandBuffer;
19782 local_pipelineStage = pipelineStage;
19783 local_dstBuffer = dstBuffer;
19784 local_dstOffset = dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019785 local_marker = marker;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019786 countingStream->rewind();
19787 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019788 uint64_t cgen_var_1445;
19789 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1445, 1);
19790 countingStream->write((uint64_t*)&cgen_var_1445, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019791 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019792 uint64_t cgen_var_1446;
19793 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1446, 1);
19794 countingStream->write((uint64_t*)&cgen_var_1446, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019795 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
19796 countingStream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019797 }
19798 uint32_t packetSize_vkCmdWriteBufferMarkerAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19799 countingStream->rewind();
19800 uint32_t opcode_vkCmdWriteBufferMarkerAMD = OP_vkCmdWriteBufferMarkerAMD;
19801 stream->write(&opcode_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
19802 stream->write(&packetSize_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019803 uint64_t cgen_var_1447;
19804 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1447, 1);
19805 stream->write((uint64_t*)&cgen_var_1447, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019806 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019807 uint64_t cgen_var_1448;
19808 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1448, 1);
19809 stream->write((uint64_t*)&cgen_var_1448, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019810 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
19811 stream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019812}
19813
19814#endif
19815#ifdef VK_AMD_shader_core_properties
19816#endif
19817#ifdef VK_EXT_vertex_attribute_divisor
19818#endif
19819#ifdef VK_NV_shader_subgroup_partitioned
19820#endif
19821#ifdef VK_NV_device_diagnostic_checkpoints
19822void VkEncoder::vkCmdSetCheckpointNV(
19823 VkCommandBuffer commandBuffer,
19824 const void* pCheckpointMarker)
19825{
19826 auto stream = mImpl->stream();
19827 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019828 auto resources = mImpl->resources();
19829 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019830 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019831 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019832 void* local_pCheckpointMarker;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019833 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019834 local_pCheckpointMarker = nullptr;
19835 if (pCheckpointMarker)
19836 {
19837 local_pCheckpointMarker = (void*)pool->dupArray(pCheckpointMarker, sizeof(const uint8_t));
19838 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019839 countingStream->rewind();
19840 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019841 uint64_t cgen_var_1449;
19842 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1449, 1);
19843 countingStream->write((uint64_t*)&cgen_var_1449, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019844 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019845 uint64_t cgen_var_1450 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
19846 countingStream->putBe64(cgen_var_1450);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019847 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019848 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019849 countingStream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019850 }
19851 }
19852 uint32_t packetSize_vkCmdSetCheckpointNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19853 countingStream->rewind();
19854 uint32_t opcode_vkCmdSetCheckpointNV = OP_vkCmdSetCheckpointNV;
19855 stream->write(&opcode_vkCmdSetCheckpointNV, sizeof(uint32_t));
19856 stream->write(&packetSize_vkCmdSetCheckpointNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019857 uint64_t cgen_var_1451;
19858 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1451, 1);
19859 stream->write((uint64_t*)&cgen_var_1451, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019860 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019861 uint64_t cgen_var_1452 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
19862 stream->putBe64(cgen_var_1452);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019863 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019864 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019865 stream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019866 }
19867}
19868
19869void VkEncoder::vkGetQueueCheckpointDataNV(
19870 VkQueue queue,
19871 uint32_t* pCheckpointDataCount,
19872 VkCheckpointDataNV* pCheckpointData)
19873{
19874 auto stream = mImpl->stream();
19875 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019876 auto resources = mImpl->resources();
19877 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019878 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019879 VkQueue local_queue;
19880 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019881 countingStream->rewind();
19882 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019883 uint64_t cgen_var_1453;
19884 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1453, 1);
19885 countingStream->write((uint64_t*)&cgen_var_1453, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019886 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019887 uint64_t cgen_var_1454 = (uint64_t)(uintptr_t)pCheckpointDataCount;
19888 countingStream->putBe64(cgen_var_1454);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019889 if (pCheckpointDataCount)
19890 {
19891 countingStream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
19892 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019893 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019894 uint64_t cgen_var_1455 = (uint64_t)(uintptr_t)pCheckpointData;
19895 countingStream->putBe64(cgen_var_1455);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019896 if (pCheckpointData)
19897 {
19898 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
19899 {
19900 marshal_VkCheckpointDataNV(countingStream, (VkCheckpointDataNV*)(pCheckpointData + i));
19901 }
19902 }
19903 }
19904 uint32_t packetSize_vkGetQueueCheckpointDataNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19905 countingStream->rewind();
19906 uint32_t opcode_vkGetQueueCheckpointDataNV = OP_vkGetQueueCheckpointDataNV;
19907 stream->write(&opcode_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
19908 stream->write(&packetSize_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019909 uint64_t cgen_var_1456;
19910 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1456, 1);
19911 stream->write((uint64_t*)&cgen_var_1456, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019912 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019913 uint64_t cgen_var_1457 = (uint64_t)(uintptr_t)pCheckpointDataCount;
19914 stream->putBe64(cgen_var_1457);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019915 if (pCheckpointDataCount)
19916 {
19917 stream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
19918 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019919 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019920 uint64_t cgen_var_1458 = (uint64_t)(uintptr_t)pCheckpointData;
19921 stream->putBe64(cgen_var_1458);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019922 if (pCheckpointData)
19923 {
19924 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
19925 {
19926 marshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
19927 }
19928 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019929 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019930 uint32_t* check_pCheckpointDataCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019931 check_pCheckpointDataCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019932 if (pCheckpointDataCount)
19933 {
19934 if (!(check_pCheckpointDataCount))
19935 {
19936 fprintf(stderr, "fatal: pCheckpointDataCount inconsistent between guest and host\n");
19937 }
19938 stream->read((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
19939 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019940 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019941 VkCheckpointDataNV* check_pCheckpointData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019942 check_pCheckpointData = (VkCheckpointDataNV*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019943 if (pCheckpointData)
19944 {
19945 if (!(check_pCheckpointData))
19946 {
19947 fprintf(stderr, "fatal: pCheckpointData inconsistent between guest and host\n");
19948 }
19949 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
19950 {
19951 unmarshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
19952 }
19953 }
19954}
19955
19956#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080019957#ifdef VK_GOOGLE_address_space
19958VkResult VkEncoder::vkMapMemoryIntoAddressSpaceGOOGLE(
19959 VkDevice device,
19960 VkDeviceMemory memory,
19961 uint64_t* pAddress)
19962{
19963 mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE_pre(this, VK_SUCCESS, device, memory, pAddress);
19964 auto stream = mImpl->stream();
19965 auto countingStream = mImpl->countingStream();
19966 auto resources = mImpl->resources();
19967 auto pool = mImpl->pool();
19968 stream->setHandleMapping(resources->unwrapMapping());
19969 VkDevice local_device;
19970 VkDeviceMemory local_memory;
19971 local_device = device;
19972 local_memory = memory;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019973 mImpl->resources()->deviceMemoryTransform(&local_memory, 1, nullptr, 1, nullptr, 1, nullptr, 1, nullptr, 1);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080019974 countingStream->rewind();
19975 {
19976 uint64_t cgen_var_1461;
19977 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1461, 1);
19978 countingStream->write((uint64_t*)&cgen_var_1461, 1 * 8);
19979 uint64_t cgen_var_1462;
19980 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1462, 1);
19981 countingStream->write((uint64_t*)&cgen_var_1462, 1 * 8);
19982 // WARNING PTR CHECK
19983 uint64_t cgen_var_1463 = (uint64_t)(uintptr_t)pAddress;
19984 countingStream->putBe64(cgen_var_1463);
19985 if (pAddress)
19986 {
19987 countingStream->write((uint64_t*)pAddress, sizeof(uint64_t));
19988 }
19989 }
19990 uint32_t packetSize_vkMapMemoryIntoAddressSpaceGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19991 countingStream->rewind();
19992 uint32_t opcode_vkMapMemoryIntoAddressSpaceGOOGLE = OP_vkMapMemoryIntoAddressSpaceGOOGLE;
19993 stream->write(&opcode_vkMapMemoryIntoAddressSpaceGOOGLE, sizeof(uint32_t));
19994 stream->write(&packetSize_vkMapMemoryIntoAddressSpaceGOOGLE, sizeof(uint32_t));
19995 uint64_t cgen_var_1464;
19996 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1464, 1);
19997 stream->write((uint64_t*)&cgen_var_1464, 1 * 8);
19998 uint64_t cgen_var_1465;
19999 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1465, 1);
20000 stream->write((uint64_t*)&cgen_var_1465, 1 * 8);
20001 // WARNING PTR CHECK
20002 uint64_t cgen_var_1466 = (uint64_t)(uintptr_t)pAddress;
20003 stream->putBe64(cgen_var_1466);
20004 if (pAddress)
20005 {
20006 stream->write((uint64_t*)pAddress, sizeof(uint64_t));
20007 }
20008 // WARNING PTR CHECK
20009 uint64_t* check_pAddress;
20010 check_pAddress = (uint64_t*)(uintptr_t)stream->getBe64();
20011 if (pAddress)
20012 {
20013 if (!(check_pAddress))
20014 {
20015 fprintf(stderr, "fatal: pAddress inconsistent between guest and host\n");
20016 }
20017 stream->read((uint64_t*)pAddress, sizeof(uint64_t));
20018 }
20019 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
20020 stream->read(&vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, sizeof(VkResult));
20021 countingStream->clearPool();
20022 stream->clearPool();
20023 pool->freeAll();
20024 mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE(this, vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, device, memory, pAddress);
20025 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
20026}
20027
20028#endif
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020029
Lingfeng Yangb1d90102018-11-29 16:10:36 -080020030} // namespace goldfish_vk