blob: 87745f412a5a2d7fc391aaee782c6a97f13d87d6 [file] [log] [blame]
Lingfeng Yang6a283672018-11-01 13:37:56 -07001// Copyright (C) 2018 The Android Open Source Project
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002// Copyright (C) 2018 Google Inc.
Lingfeng Yang6a283672018-11-01 13:37:56 -07003//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015
16// Autogenerated module VkEncoder
17// (impl) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
18// Please do not modify directly;
19// re-run android/scripts/generate-vulkan-sources.sh,
20// or directly from Python by defining:
21// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
22// CEREAL_OUTPUT_DIR: Where to put the generated sources.
23// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
24
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070025#include "VkEncoder.h"
Lingfeng Yang6a283672018-11-01 13:37:56 -070026
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070027
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070028#include "IOStream.h"
Lingfeng Yange30d3382018-11-09 08:24:37 -080029#include "Resources.h"
Lingfeng Yang71b596b2018-11-07 18:03:25 -080030#include "ResourceTracker.h"
Lingfeng Yang60b411d2018-11-29 00:26:45 -080031#include "Validation.h"
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070032#include "VulkanStream.h"
33
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080034#include "android/base/AlignedBuf.h"
Lingfeng Yang71b596b2018-11-07 18:03:25 -080035#include "android/base/Pool.h"
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080036
Lingfeng Yange71c6422018-11-01 19:29:49 -070037#include "goldfish_vk_marshaling_guest.h"
Lingfeng Yang71b596b2018-11-07 18:03:25 -080038#include "goldfish_vk_deepcopy_guest.h"
39#include "goldfish_vk_handlemap_guest.h"
Lingfeng Yang808a6312018-11-13 21:06:15 -080040#include "goldfish_vk_private_defs.h"
Lingfeng Yange71c6422018-11-01 19:29:49 -070041
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070042
Lingfeng Yangb1d90102018-11-29 16:10:36 -080043namespace goldfish_vk {
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070044
45
46
Lingfeng Yang71b596b2018-11-07 18:03:25 -080047using namespace goldfish_vk;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070048
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080049using android::aligned_buf_alloc;
50using android::aligned_buf_free;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080051using android::base::Pool;
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080052
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070053class VkEncoder::Impl {
54public:
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070055 Impl(IOStream* stream) : m_stream(stream) { }
56 VulkanCountingStream* countingStream() { return &m_countingStream; }
57 VulkanStream* stream() { return &m_stream; }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080058 Pool* pool() { return &m_pool; }
59 ResourceTracker* resources() { return ResourceTracker::get(); }
Lingfeng Yang29c99d92018-11-30 11:15:29 -080060 Validation* validation() { return &m_validation; }
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070061private:
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070062 VulkanCountingStream m_countingStream;
63 VulkanStream m_stream;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080064 Pool m_pool { 8, 4096, 64 };
Lingfeng Yang29c99d92018-11-30 11:15:29 -080065
66 Validation m_validation;
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070067};
68
69VkEncoder::VkEncoder(IOStream *stream) :
70 mImpl(new VkEncoder::Impl(stream)) { }
Lingfeng Yang60b411d2018-11-29 00:26:45 -080071
72#define VALIDATE_RET(retType, success, validate) \
73 retType goldfish_vk_validateResult = validate; \
74 if (goldfish_vk_validateResult != success) return goldfish_vk_validateResult; \
75
76#define VALIDATE_VOID(validate) \
77 VkResult goldfish_vk_validateResult = validate; \
78 if (goldfish_vk_validateResult != VK_SUCCESS) return; \
79
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070080#ifdef VK_VERSION_1_0
81VkResult VkEncoder::vkCreateInstance(
82 const VkInstanceCreateInfo* pCreateInfo,
83 const VkAllocationCallbacks* pAllocator,
84 VkInstance* pInstance)
85{
86 auto stream = mImpl->stream();
87 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080088 auto resources = mImpl->resources();
89 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080090 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080091 VkInstanceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080092 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080093 local_pCreateInfo = nullptr;
94 if (pCreateInfo)
95 {
96 local_pCreateInfo = (VkInstanceCreateInfo*)pool->alloc(sizeof(const VkInstanceCreateInfo));
97 deepcopy_VkInstanceCreateInfo(pool, pCreateInfo, (VkInstanceCreateInfo*)(local_pCreateInfo));
98 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080099 local_pAllocator = nullptr;
100 if (pAllocator)
101 {
102 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
103 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
104 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800105 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700106 countingStream->rewind();
107 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800108 marshal_VkInstanceCreateInfo(countingStream, (VkInstanceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800109 // WARNING PTR CHECK
110 uint64_t cgen_var_0 = (uint64_t)(uintptr_t)local_pAllocator;
111 countingStream->putBe64(cgen_var_0);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800112 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700113 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800114 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700115 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800116 uint64_t cgen_var_1;
117 countingStream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_1, 1);
118 countingStream->write((uint64_t*)&cgen_var_1, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700119 }
120 uint32_t packetSize_vkCreateInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
121 countingStream->rewind();
122 uint32_t opcode_vkCreateInstance = OP_vkCreateInstance;
123 stream->write(&opcode_vkCreateInstance, sizeof(uint32_t));
124 stream->write(&packetSize_vkCreateInstance, sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800125 marshal_VkInstanceCreateInfo(stream, (VkInstanceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800126 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800127 uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator;
128 stream->putBe64(cgen_var_2);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800129 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700130 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800131 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700132 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800133 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -0800134 uint64_t cgen_var_3;
135 stream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_3, 1);
136 stream->write((uint64_t*)&cgen_var_3, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800137 stream->setHandleMapping(resources->unwrapMapping());
138 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -0800139 uint64_t cgen_var_4;
140 stream->read((uint64_t*)&cgen_var_4, 8);
141 stream->handleMapping()->mapHandles_u64_VkInstance(&cgen_var_4, (VkInstance*)pInstance, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800142 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700143 VkResult vkCreateInstance_VkResult_return = (VkResult)0;
144 stream->read(&vkCreateInstance_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800145 countingStream->clearPool();
146 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800147 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700148 return vkCreateInstance_VkResult_return;
149}
150
151void VkEncoder::vkDestroyInstance(
152 VkInstance instance,
153 const VkAllocationCallbacks* pAllocator)
154{
155 auto stream = mImpl->stream();
156 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800157 auto resources = mImpl->resources();
158 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800159 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800160 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800161 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800162 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800163 local_pAllocator = nullptr;
164 if (pAllocator)
165 {
166 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
167 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
168 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800169 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700170 countingStream->rewind();
171 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800172 uint64_t cgen_var_5;
173 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_5, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800174 countingStream->write((uint64_t*)&cgen_var_5, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800175 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800176 uint64_t cgen_var_6 = (uint64_t)(uintptr_t)local_pAllocator;
177 countingStream->putBe64(cgen_var_6);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800178 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700179 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800180 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700181 }
182 }
183 uint32_t packetSize_vkDestroyInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
184 countingStream->rewind();
185 uint32_t opcode_vkDestroyInstance = OP_vkDestroyInstance;
186 stream->write(&opcode_vkDestroyInstance, sizeof(uint32_t));
187 stream->write(&packetSize_vkDestroyInstance, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800188 uint64_t cgen_var_7;
189 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_7, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800190 stream->write((uint64_t*)&cgen_var_7, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800191 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800192 uint64_t cgen_var_8 = (uint64_t)(uintptr_t)local_pAllocator;
193 stream->putBe64(cgen_var_8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800194 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700195 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800196 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700197 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800198 resources->destroyMapping()->mapHandles_VkInstance((VkInstance*)&instance);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700199}
200
201VkResult VkEncoder::vkEnumeratePhysicalDevices(
202 VkInstance instance,
203 uint32_t* pPhysicalDeviceCount,
204 VkPhysicalDevice* pPhysicalDevices)
205{
206 auto stream = mImpl->stream();
207 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800208 auto resources = mImpl->resources();
209 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800210 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800211 VkInstance local_instance;
212 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700213 countingStream->rewind();
214 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800215 uint64_t cgen_var_9;
216 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_9, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800217 countingStream->write((uint64_t*)&cgen_var_9, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800218 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800219 uint64_t cgen_var_10 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
220 countingStream->putBe64(cgen_var_10);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700221 if (pPhysicalDeviceCount)
222 {
223 countingStream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
224 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800225 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800226 uint64_t cgen_var_11 = (uint64_t)(uintptr_t)pPhysicalDevices;
227 countingStream->putBe64(cgen_var_11);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700228 if (pPhysicalDevices)
229 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800230 if ((*(pPhysicalDeviceCount)))
231 {
232 uint64_t* cgen_var_12;
233 countingStream->alloc((void**)&cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
234 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_12, (*(pPhysicalDeviceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -0800235 countingStream->write((uint64_t*)cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800236 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700237 }
238 }
239 uint32_t packetSize_vkEnumeratePhysicalDevices = 4 + 4 + (uint32_t)countingStream->bytesWritten();
240 countingStream->rewind();
241 uint32_t opcode_vkEnumeratePhysicalDevices = OP_vkEnumeratePhysicalDevices;
242 stream->write(&opcode_vkEnumeratePhysicalDevices, sizeof(uint32_t));
243 stream->write(&packetSize_vkEnumeratePhysicalDevices, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800244 uint64_t cgen_var_13;
245 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_13, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800246 stream->write((uint64_t*)&cgen_var_13, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800247 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800248 uint64_t cgen_var_14 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
249 stream->putBe64(cgen_var_14);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700250 if (pPhysicalDeviceCount)
251 {
252 stream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
253 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800254 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800255 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800256 uint64_t cgen_var_15 = (uint64_t)(uintptr_t)pPhysicalDevices;
257 stream->putBe64(cgen_var_15);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700258 if (pPhysicalDevices)
259 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800260 if ((*(pPhysicalDeviceCount)))
261 {
262 uint64_t* cgen_var_16;
263 stream->alloc((void**)&cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
264 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_16, (*(pPhysicalDeviceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -0800265 stream->write((uint64_t*)cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800266 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700267 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800268 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800269 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700270 uint32_t* check_pPhysicalDeviceCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800271 check_pPhysicalDeviceCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700272 if (pPhysicalDeviceCount)
273 {
274 if (!(check_pPhysicalDeviceCount))
275 {
276 fprintf(stderr, "fatal: pPhysicalDeviceCount inconsistent between guest and host\n");
277 }
278 stream->read((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
279 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800280 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800281 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700282 VkPhysicalDevice* check_pPhysicalDevices;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800283 check_pPhysicalDevices = (VkPhysicalDevice*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700284 if (pPhysicalDevices)
285 {
286 if (!(check_pPhysicalDevices))
287 {
288 fprintf(stderr, "fatal: pPhysicalDevices inconsistent between guest and host\n");
289 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800290 if ((*(pPhysicalDeviceCount)))
291 {
292 uint64_t* cgen_var_19;
293 stream->alloc((void**)&cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800294 stream->read((uint64_t*)cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800295 stream->handleMapping()->mapHandles_u64_VkPhysicalDevice(cgen_var_19, (VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount)));
296 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700297 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800298 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700299 VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
300 stream->read(&vkEnumeratePhysicalDevices_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800301 countingStream->clearPool();
302 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800303 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700304 return vkEnumeratePhysicalDevices_VkResult_return;
305}
306
307void VkEncoder::vkGetPhysicalDeviceFeatures(
308 VkPhysicalDevice physicalDevice,
309 VkPhysicalDeviceFeatures* pFeatures)
310{
311 auto stream = mImpl->stream();
312 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800313 auto resources = mImpl->resources();
314 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800315 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800316 VkPhysicalDevice local_physicalDevice;
317 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700318 countingStream->rewind();
319 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800320 uint64_t cgen_var_20;
321 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_20, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800322 countingStream->write((uint64_t*)&cgen_var_20, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700323 marshal_VkPhysicalDeviceFeatures(countingStream, (VkPhysicalDeviceFeatures*)(pFeatures));
324 }
325 uint32_t packetSize_vkGetPhysicalDeviceFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
326 countingStream->rewind();
327 uint32_t opcode_vkGetPhysicalDeviceFeatures = OP_vkGetPhysicalDeviceFeatures;
328 stream->write(&opcode_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
329 stream->write(&packetSize_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800330 uint64_t cgen_var_21;
331 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_21, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800332 stream->write((uint64_t*)&cgen_var_21, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700333 marshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
334 unmarshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
335}
336
337void VkEncoder::vkGetPhysicalDeviceFormatProperties(
338 VkPhysicalDevice physicalDevice,
339 VkFormat format,
340 VkFormatProperties* pFormatProperties)
341{
342 auto stream = mImpl->stream();
343 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800344 auto resources = mImpl->resources();
345 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800346 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800347 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800348 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800349 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800350 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700351 countingStream->rewind();
352 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800353 uint64_t cgen_var_22;
354 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_22, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800355 countingStream->write((uint64_t*)&cgen_var_22, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800356 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700357 marshal_VkFormatProperties(countingStream, (VkFormatProperties*)(pFormatProperties));
358 }
359 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
360 countingStream->rewind();
361 uint32_t opcode_vkGetPhysicalDeviceFormatProperties = OP_vkGetPhysicalDeviceFormatProperties;
362 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
363 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800364 uint64_t cgen_var_23;
365 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_23, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800366 stream->write((uint64_t*)&cgen_var_23, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800367 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700368 marshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
369 unmarshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
370}
371
372VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties(
373 VkPhysicalDevice physicalDevice,
374 VkFormat format,
375 VkImageType type,
376 VkImageTiling tiling,
377 VkImageUsageFlags usage,
378 VkImageCreateFlags flags,
379 VkImageFormatProperties* pImageFormatProperties)
380{
381 auto stream = mImpl->stream();
382 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800383 auto resources = mImpl->resources();
384 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800385 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800386 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800387 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800388 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800389 VkImageTiling local_tiling;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800390 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800391 VkImageCreateFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800392 local_physicalDevice = physicalDevice;
393 local_format = format;
394 local_type = type;
395 local_tiling = tiling;
396 local_usage = usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800397 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700398 countingStream->rewind();
399 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800400 uint64_t cgen_var_24;
401 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_24, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800402 countingStream->write((uint64_t*)&cgen_var_24, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800403 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
404 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
405 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
406 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
407 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700408 marshal_VkImageFormatProperties(countingStream, (VkImageFormatProperties*)(pImageFormatProperties));
409 }
410 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
411 countingStream->rewind();
412 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties = OP_vkGetPhysicalDeviceImageFormatProperties;
413 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
414 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800415 uint64_t cgen_var_25;
416 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_25, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800417 stream->write((uint64_t*)&cgen_var_25, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800418 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
419 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
420 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
421 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
422 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700423 marshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
424 unmarshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
425 VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
426 stream->read(&vkGetPhysicalDeviceImageFormatProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800427 countingStream->clearPool();
428 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800429 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700430 return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
431}
432
433void VkEncoder::vkGetPhysicalDeviceProperties(
434 VkPhysicalDevice physicalDevice,
435 VkPhysicalDeviceProperties* pProperties)
436{
437 auto stream = mImpl->stream();
438 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800439 auto resources = mImpl->resources();
440 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800441 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800442 VkPhysicalDevice local_physicalDevice;
443 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700444 countingStream->rewind();
445 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800446 uint64_t cgen_var_26;
447 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_26, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800448 countingStream->write((uint64_t*)&cgen_var_26, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700449 marshal_VkPhysicalDeviceProperties(countingStream, (VkPhysicalDeviceProperties*)(pProperties));
450 }
451 uint32_t packetSize_vkGetPhysicalDeviceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
452 countingStream->rewind();
453 uint32_t opcode_vkGetPhysicalDeviceProperties = OP_vkGetPhysicalDeviceProperties;
454 stream->write(&opcode_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
455 stream->write(&packetSize_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800456 uint64_t cgen_var_27;
457 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_27, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800458 stream->write((uint64_t*)&cgen_var_27, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700459 marshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
460 unmarshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
461}
462
463void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties(
464 VkPhysicalDevice physicalDevice,
465 uint32_t* pQueueFamilyPropertyCount,
466 VkQueueFamilyProperties* pQueueFamilyProperties)
467{
468 auto stream = mImpl->stream();
469 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800470 auto resources = mImpl->resources();
471 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800472 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800473 VkPhysicalDevice local_physicalDevice;
474 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700475 countingStream->rewind();
476 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800477 uint64_t cgen_var_28;
478 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_28, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800479 countingStream->write((uint64_t*)&cgen_var_28, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800480 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800481 uint64_t cgen_var_29 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
482 countingStream->putBe64(cgen_var_29);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700483 if (pQueueFamilyPropertyCount)
484 {
485 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
486 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800487 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800488 uint64_t cgen_var_30 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
489 countingStream->putBe64(cgen_var_30);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700490 if (pQueueFamilyProperties)
491 {
492 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
493 {
494 marshal_VkQueueFamilyProperties(countingStream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
495 }
496 }
497 }
498 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
499 countingStream->rewind();
500 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties = OP_vkGetPhysicalDeviceQueueFamilyProperties;
501 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
502 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800503 uint64_t cgen_var_31;
504 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_31, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800505 stream->write((uint64_t*)&cgen_var_31, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800506 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800507 uint64_t cgen_var_32 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
508 stream->putBe64(cgen_var_32);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700509 if (pQueueFamilyPropertyCount)
510 {
511 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
512 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800513 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800514 uint64_t cgen_var_33 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
515 stream->putBe64(cgen_var_33);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700516 if (pQueueFamilyProperties)
517 {
518 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
519 {
520 marshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
521 }
522 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800523 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700524 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800525 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700526 if (pQueueFamilyPropertyCount)
527 {
528 if (!(check_pQueueFamilyPropertyCount))
529 {
530 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
531 }
532 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
533 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800534 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700535 VkQueueFamilyProperties* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800536 check_pQueueFamilyProperties = (VkQueueFamilyProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700537 if (pQueueFamilyProperties)
538 {
539 if (!(check_pQueueFamilyProperties))
540 {
541 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
542 }
543 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
544 {
545 unmarshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
546 }
547 }
548}
549
550void VkEncoder::vkGetPhysicalDeviceMemoryProperties(
551 VkPhysicalDevice physicalDevice,
552 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
553{
554 auto stream = mImpl->stream();
555 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800556 auto resources = mImpl->resources();
557 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800558 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800559 VkPhysicalDevice local_physicalDevice;
560 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700561 countingStream->rewind();
562 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800563 uint64_t cgen_var_36;
564 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_36, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800565 countingStream->write((uint64_t*)&cgen_var_36, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700566 marshal_VkPhysicalDeviceMemoryProperties(countingStream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
567 }
568 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
569 countingStream->rewind();
570 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties = OP_vkGetPhysicalDeviceMemoryProperties;
571 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
572 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800573 uint64_t cgen_var_37;
574 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_37, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800575 stream->write((uint64_t*)&cgen_var_37, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700576 marshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
577 unmarshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
578}
579
580PFN_vkVoidFunction VkEncoder::vkGetInstanceProcAddr(
581 VkInstance instance,
582 const char* pName)
583{
584 auto stream = mImpl->stream();
585 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800586 auto resources = mImpl->resources();
587 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800588 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800589 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800590 char* local_pName;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800591 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800592 local_pName = nullptr;
593 if (pName)
594 {
595 local_pName = pool->strDup(pName);
596 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700597 countingStream->rewind();
598 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800599 uint64_t cgen_var_38;
600 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_38, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800601 countingStream->write((uint64_t*)&cgen_var_38, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800602 countingStream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700603 }
604 uint32_t packetSize_vkGetInstanceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
605 countingStream->rewind();
606 uint32_t opcode_vkGetInstanceProcAddr = OP_vkGetInstanceProcAddr;
607 stream->write(&opcode_vkGetInstanceProcAddr, sizeof(uint32_t));
608 stream->write(&packetSize_vkGetInstanceProcAddr, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800609 uint64_t cgen_var_39;
610 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_39, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800611 stream->write((uint64_t*)&cgen_var_39, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800612 stream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700613 PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
614 stream->read(&vkGetInstanceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800615 countingStream->clearPool();
616 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800617 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700618 return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
619}
620
621PFN_vkVoidFunction VkEncoder::vkGetDeviceProcAddr(
622 VkDevice device,
623 const char* pName)
624{
625 auto stream = mImpl->stream();
626 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800627 auto resources = mImpl->resources();
628 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800629 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800630 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800631 char* local_pName;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800632 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800633 local_pName = nullptr;
634 if (pName)
635 {
636 local_pName = pool->strDup(pName);
637 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700638 countingStream->rewind();
639 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800640 uint64_t cgen_var_40;
641 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_40, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800642 countingStream->write((uint64_t*)&cgen_var_40, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800643 countingStream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700644 }
645 uint32_t packetSize_vkGetDeviceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
646 countingStream->rewind();
647 uint32_t opcode_vkGetDeviceProcAddr = OP_vkGetDeviceProcAddr;
648 stream->write(&opcode_vkGetDeviceProcAddr, sizeof(uint32_t));
649 stream->write(&packetSize_vkGetDeviceProcAddr, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800650 uint64_t cgen_var_41;
651 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_41, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800652 stream->write((uint64_t*)&cgen_var_41, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800653 stream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700654 PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
655 stream->read(&vkGetDeviceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800656 countingStream->clearPool();
657 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800658 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700659 return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
660}
661
662VkResult VkEncoder::vkCreateDevice(
663 VkPhysicalDevice physicalDevice,
664 const VkDeviceCreateInfo* pCreateInfo,
665 const VkAllocationCallbacks* pAllocator,
666 VkDevice* pDevice)
667{
668 auto stream = mImpl->stream();
669 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800670 auto resources = mImpl->resources();
671 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800672 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800673 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800674 VkDeviceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800675 VkAllocationCallbacks* local_pAllocator;
676 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800677 local_pCreateInfo = nullptr;
678 if (pCreateInfo)
679 {
680 local_pCreateInfo = (VkDeviceCreateInfo*)pool->alloc(sizeof(const VkDeviceCreateInfo));
681 deepcopy_VkDeviceCreateInfo(pool, pCreateInfo, (VkDeviceCreateInfo*)(local_pCreateInfo));
682 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800683 local_pAllocator = nullptr;
684 if (pAllocator)
685 {
686 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
687 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
688 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800689 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700690 countingStream->rewind();
691 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800692 uint64_t cgen_var_42;
693 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_42, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800694 countingStream->write((uint64_t*)&cgen_var_42, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800695 marshal_VkDeviceCreateInfo(countingStream, (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800696 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800697 uint64_t cgen_var_43 = (uint64_t)(uintptr_t)local_pAllocator;
698 countingStream->putBe64(cgen_var_43);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800699 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700700 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800701 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700702 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800703 uint64_t cgen_var_44;
704 countingStream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_44, 1);
705 countingStream->write((uint64_t*)&cgen_var_44, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700706 }
707 uint32_t packetSize_vkCreateDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
708 countingStream->rewind();
709 uint32_t opcode_vkCreateDevice = OP_vkCreateDevice;
710 stream->write(&opcode_vkCreateDevice, sizeof(uint32_t));
711 stream->write(&packetSize_vkCreateDevice, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800712 uint64_t cgen_var_45;
713 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_45, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800714 stream->write((uint64_t*)&cgen_var_45, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800715 marshal_VkDeviceCreateInfo(stream, (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800716 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800717 uint64_t cgen_var_46 = (uint64_t)(uintptr_t)local_pAllocator;
718 stream->putBe64(cgen_var_46);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800719 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700720 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800721 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700722 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800723 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -0800724 uint64_t cgen_var_47;
725 stream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_47, 1);
726 stream->write((uint64_t*)&cgen_var_47, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800727 stream->setHandleMapping(resources->unwrapMapping());
728 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -0800729 uint64_t cgen_var_48;
730 stream->read((uint64_t*)&cgen_var_48, 8);
731 stream->handleMapping()->mapHandles_u64_VkDevice(&cgen_var_48, (VkDevice*)pDevice, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800732 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700733 VkResult vkCreateDevice_VkResult_return = (VkResult)0;
734 stream->read(&vkCreateDevice_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800735 countingStream->clearPool();
736 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800737 pool->freeAll();
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -0800738 goldfish_vkCreateDevice(this, vkCreateDevice_VkResult_return, physicalDevice, pCreateInfo, pAllocator, pDevice);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700739 return vkCreateDevice_VkResult_return;
740}
741
742void VkEncoder::vkDestroyDevice(
743 VkDevice device,
744 const VkAllocationCallbacks* pAllocator)
745{
746 auto stream = mImpl->stream();
747 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800748 auto resources = mImpl->resources();
749 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800750 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800751 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800752 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800753 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800754 local_pAllocator = nullptr;
755 if (pAllocator)
756 {
757 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
758 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
759 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800760 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700761 countingStream->rewind();
762 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800763 uint64_t cgen_var_49;
764 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_49, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800765 countingStream->write((uint64_t*)&cgen_var_49, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800766 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800767 uint64_t cgen_var_50 = (uint64_t)(uintptr_t)local_pAllocator;
768 countingStream->putBe64(cgen_var_50);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800769 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700770 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800771 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700772 }
773 }
774 uint32_t packetSize_vkDestroyDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
775 countingStream->rewind();
776 uint32_t opcode_vkDestroyDevice = OP_vkDestroyDevice;
777 stream->write(&opcode_vkDestroyDevice, sizeof(uint32_t));
778 stream->write(&packetSize_vkDestroyDevice, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800779 uint64_t cgen_var_51;
780 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_51, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800781 stream->write((uint64_t*)&cgen_var_51, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800782 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800783 uint64_t cgen_var_52 = (uint64_t)(uintptr_t)local_pAllocator;
784 stream->putBe64(cgen_var_52);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800785 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700786 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800787 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700788 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800789 resources->destroyMapping()->mapHandles_VkDevice((VkDevice*)&device);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700790}
791
792VkResult VkEncoder::vkEnumerateInstanceExtensionProperties(
793 const char* pLayerName,
794 uint32_t* pPropertyCount,
795 VkExtensionProperties* pProperties)
796{
797 auto stream = mImpl->stream();
798 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800799 auto resources = mImpl->resources();
800 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800801 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800802 char* local_pLayerName;
803 local_pLayerName = nullptr;
804 if (pLayerName)
805 {
806 local_pLayerName = pool->strDup(pLayerName);
807 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700808 countingStream->rewind();
809 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800810 countingStream->putString(local_pLayerName);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800811 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800812 uint64_t cgen_var_53 = (uint64_t)(uintptr_t)pPropertyCount;
813 countingStream->putBe64(cgen_var_53);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700814 if (pPropertyCount)
815 {
816 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
817 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800818 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800819 uint64_t cgen_var_54 = (uint64_t)(uintptr_t)pProperties;
820 countingStream->putBe64(cgen_var_54);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700821 if (pProperties)
822 {
823 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
824 {
825 marshal_VkExtensionProperties(countingStream, (VkExtensionProperties*)(pProperties + i));
826 }
827 }
828 }
829 uint32_t packetSize_vkEnumerateInstanceExtensionProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
830 countingStream->rewind();
831 uint32_t opcode_vkEnumerateInstanceExtensionProperties = OP_vkEnumerateInstanceExtensionProperties;
832 stream->write(&opcode_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
833 stream->write(&packetSize_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800834 stream->putString(local_pLayerName);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800835 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800836 uint64_t cgen_var_55 = (uint64_t)(uintptr_t)pPropertyCount;
837 stream->putBe64(cgen_var_55);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700838 if (pPropertyCount)
839 {
840 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
841 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800842 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800843 uint64_t cgen_var_56 = (uint64_t)(uintptr_t)pProperties;
844 stream->putBe64(cgen_var_56);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700845 if (pProperties)
846 {
847 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
848 {
849 marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
850 }
851 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800852 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700853 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800854 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700855 if (pPropertyCount)
856 {
857 if (!(check_pPropertyCount))
858 {
859 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
860 }
861 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
862 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800863 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700864 VkExtensionProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800865 check_pProperties = (VkExtensionProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700866 if (pProperties)
867 {
868 if (!(check_pProperties))
869 {
870 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
871 }
872 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
873 {
874 unmarshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
875 }
876 }
877 VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
878 stream->read(&vkEnumerateInstanceExtensionProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800879 countingStream->clearPool();
880 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800881 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700882 return vkEnumerateInstanceExtensionProperties_VkResult_return;
883}
884
885VkResult VkEncoder::vkEnumerateDeviceExtensionProperties(
886 VkPhysicalDevice physicalDevice,
887 const char* pLayerName,
888 uint32_t* pPropertyCount,
889 VkExtensionProperties* pProperties)
890{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700891 VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -0800892 vkEnumerateDeviceExtensionProperties_VkResult_return = goldfish_vkEnumerateDeviceExtensionProperties(this, vkEnumerateDeviceExtensionProperties_VkResult_return, physicalDevice, pLayerName, pPropertyCount, pProperties);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700893 return vkEnumerateDeviceExtensionProperties_VkResult_return;
894}
895
896VkResult VkEncoder::vkEnumerateInstanceLayerProperties(
897 uint32_t* pPropertyCount,
898 VkLayerProperties* pProperties)
899{
900 auto stream = mImpl->stream();
901 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800902 auto resources = mImpl->resources();
903 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800904 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700905 countingStream->rewind();
906 {
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800907 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800908 uint64_t cgen_var_59 = (uint64_t)(uintptr_t)pPropertyCount;
909 countingStream->putBe64(cgen_var_59);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700910 if (pPropertyCount)
911 {
912 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
913 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800914 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800915 uint64_t cgen_var_60 = (uint64_t)(uintptr_t)pProperties;
916 countingStream->putBe64(cgen_var_60);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700917 if (pProperties)
918 {
919 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
920 {
921 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
922 }
923 }
924 }
925 uint32_t packetSize_vkEnumerateInstanceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
926 countingStream->rewind();
927 uint32_t opcode_vkEnumerateInstanceLayerProperties = OP_vkEnumerateInstanceLayerProperties;
928 stream->write(&opcode_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
929 stream->write(&packetSize_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800930 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800931 uint64_t cgen_var_61 = (uint64_t)(uintptr_t)pPropertyCount;
932 stream->putBe64(cgen_var_61);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700933 if (pPropertyCount)
934 {
935 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
936 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800937 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800938 uint64_t cgen_var_62 = (uint64_t)(uintptr_t)pProperties;
939 stream->putBe64(cgen_var_62);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700940 if (pProperties)
941 {
942 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
943 {
944 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
945 }
946 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800947 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700948 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800949 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700950 if (pPropertyCount)
951 {
952 if (!(check_pPropertyCount))
953 {
954 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
955 }
956 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
957 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800958 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700959 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800960 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700961 if (pProperties)
962 {
963 if (!(check_pProperties))
964 {
965 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
966 }
967 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
968 {
969 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
970 }
971 }
972 VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
973 stream->read(&vkEnumerateInstanceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800974 countingStream->clearPool();
975 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800976 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700977 return vkEnumerateInstanceLayerProperties_VkResult_return;
978}
979
980VkResult VkEncoder::vkEnumerateDeviceLayerProperties(
981 VkPhysicalDevice physicalDevice,
982 uint32_t* pPropertyCount,
983 VkLayerProperties* pProperties)
984{
985 auto stream = mImpl->stream();
986 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800987 auto resources = mImpl->resources();
988 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800989 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800990 VkPhysicalDevice local_physicalDevice;
991 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700992 countingStream->rewind();
993 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800994 uint64_t cgen_var_65;
995 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_65, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800996 countingStream->write((uint64_t*)&cgen_var_65, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800997 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800998 uint64_t cgen_var_66 = (uint64_t)(uintptr_t)pPropertyCount;
999 countingStream->putBe64(cgen_var_66);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001000 if (pPropertyCount)
1001 {
1002 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1003 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001004 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001005 uint64_t cgen_var_67 = (uint64_t)(uintptr_t)pProperties;
1006 countingStream->putBe64(cgen_var_67);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001007 if (pProperties)
1008 {
1009 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1010 {
1011 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
1012 }
1013 }
1014 }
1015 uint32_t packetSize_vkEnumerateDeviceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1016 countingStream->rewind();
1017 uint32_t opcode_vkEnumerateDeviceLayerProperties = OP_vkEnumerateDeviceLayerProperties;
1018 stream->write(&opcode_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
1019 stream->write(&packetSize_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001020 uint64_t cgen_var_68;
1021 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_68, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001022 stream->write((uint64_t*)&cgen_var_68, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001023 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001024 uint64_t cgen_var_69 = (uint64_t)(uintptr_t)pPropertyCount;
1025 stream->putBe64(cgen_var_69);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001026 if (pPropertyCount)
1027 {
1028 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1029 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001030 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001031 uint64_t cgen_var_70 = (uint64_t)(uintptr_t)pProperties;
1032 stream->putBe64(cgen_var_70);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001033 if (pProperties)
1034 {
1035 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1036 {
1037 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1038 }
1039 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001040 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001041 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001042 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001043 if (pPropertyCount)
1044 {
1045 if (!(check_pPropertyCount))
1046 {
1047 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1048 }
1049 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1050 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001051 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001052 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001053 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001054 if (pProperties)
1055 {
1056 if (!(check_pProperties))
1057 {
1058 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1059 }
1060 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1061 {
1062 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1063 }
1064 }
1065 VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
1066 stream->read(&vkEnumerateDeviceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001067 countingStream->clearPool();
1068 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001069 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001070 return vkEnumerateDeviceLayerProperties_VkResult_return;
1071}
1072
1073void VkEncoder::vkGetDeviceQueue(
1074 VkDevice device,
1075 uint32_t queueFamilyIndex,
1076 uint32_t queueIndex,
1077 VkQueue* pQueue)
1078{
1079 auto stream = mImpl->stream();
1080 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001081 auto resources = mImpl->resources();
1082 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001083 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001084 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001085 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001086 uint32_t local_queueIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001087 local_device = device;
1088 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001089 local_queueIndex = queueIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001090 countingStream->rewind();
1091 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001092 uint64_t cgen_var_73;
1093 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_73, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001094 countingStream->write((uint64_t*)&cgen_var_73, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001095 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1096 countingStream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001097 uint64_t cgen_var_74;
1098 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_74, 1);
1099 countingStream->write((uint64_t*)&cgen_var_74, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001100 }
1101 uint32_t packetSize_vkGetDeviceQueue = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1102 countingStream->rewind();
1103 uint32_t opcode_vkGetDeviceQueue = OP_vkGetDeviceQueue;
1104 stream->write(&opcode_vkGetDeviceQueue, sizeof(uint32_t));
1105 stream->write(&packetSize_vkGetDeviceQueue, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001106 uint64_t cgen_var_75;
1107 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_75, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001108 stream->write((uint64_t*)&cgen_var_75, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001109 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1110 stream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yange4008a02018-11-18 12:22:48 -08001111 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08001112 uint64_t cgen_var_76;
1113 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_76, 1);
1114 stream->write((uint64_t*)&cgen_var_76, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001115 stream->setHandleMapping(resources->unwrapMapping());
1116 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08001117 uint64_t cgen_var_77;
1118 stream->read((uint64_t*)&cgen_var_77, 8);
1119 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_77, (VkQueue*)pQueue, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001120 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001121}
1122
1123VkResult VkEncoder::vkQueueSubmit(
1124 VkQueue queue,
1125 uint32_t submitCount,
1126 const VkSubmitInfo* pSubmits,
1127 VkFence fence)
1128{
1129 auto stream = mImpl->stream();
1130 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001131 auto resources = mImpl->resources();
1132 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001133 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001134 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001135 uint32_t local_submitCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001136 VkSubmitInfo* local_pSubmits;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001137 VkFence local_fence;
1138 local_queue = queue;
1139 local_submitCount = submitCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001140 local_pSubmits = nullptr;
1141 if (pSubmits)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001142 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001143 local_pSubmits = (VkSubmitInfo*)pool->alloc(((submitCount)) * sizeof(const VkSubmitInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001144 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1145 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001146 deepcopy_VkSubmitInfo(pool, pSubmits + i, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001147 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001148 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001149 local_fence = fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001150 countingStream->rewind();
1151 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001152 uint64_t cgen_var_78;
1153 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_78, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001154 countingStream->write((uint64_t*)&cgen_var_78, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001155 countingStream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
1156 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1157 {
1158 marshal_VkSubmitInfo(countingStream, (VkSubmitInfo*)(local_pSubmits + i));
1159 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001160 uint64_t cgen_var_79;
1161 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_79, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001162 countingStream->write((uint64_t*)&cgen_var_79, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001163 }
1164 uint32_t packetSize_vkQueueSubmit = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1165 countingStream->rewind();
1166 uint32_t opcode_vkQueueSubmit = OP_vkQueueSubmit;
1167 stream->write(&opcode_vkQueueSubmit, sizeof(uint32_t));
1168 stream->write(&packetSize_vkQueueSubmit, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001169 uint64_t cgen_var_80;
1170 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_80, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001171 stream->write((uint64_t*)&cgen_var_80, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001172 stream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001173 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1174 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001175 marshal_VkSubmitInfo(stream, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001176 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001177 uint64_t cgen_var_81;
1178 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_81, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001179 stream->write((uint64_t*)&cgen_var_81, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001180 VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
1181 stream->read(&vkQueueSubmit_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001182 countingStream->clearPool();
1183 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001184 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001185 return vkQueueSubmit_VkResult_return;
1186}
1187
1188VkResult VkEncoder::vkQueueWaitIdle(
1189 VkQueue queue)
1190{
1191 auto stream = mImpl->stream();
1192 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001193 auto resources = mImpl->resources();
1194 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001195 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001196 VkQueue local_queue;
1197 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001198 countingStream->rewind();
1199 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001200 uint64_t cgen_var_82;
1201 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_82, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001202 countingStream->write((uint64_t*)&cgen_var_82, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001203 }
1204 uint32_t packetSize_vkQueueWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1205 countingStream->rewind();
1206 uint32_t opcode_vkQueueWaitIdle = OP_vkQueueWaitIdle;
1207 stream->write(&opcode_vkQueueWaitIdle, sizeof(uint32_t));
1208 stream->write(&packetSize_vkQueueWaitIdle, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001209 uint64_t cgen_var_83;
1210 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_83, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001211 stream->write((uint64_t*)&cgen_var_83, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001212 VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
1213 stream->read(&vkQueueWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001214 countingStream->clearPool();
1215 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001216 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001217 return vkQueueWaitIdle_VkResult_return;
1218}
1219
1220VkResult VkEncoder::vkDeviceWaitIdle(
1221 VkDevice device)
1222{
1223 auto stream = mImpl->stream();
1224 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001225 auto resources = mImpl->resources();
1226 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001227 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001228 VkDevice local_device;
1229 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001230 countingStream->rewind();
1231 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001232 uint64_t cgen_var_84;
1233 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_84, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001234 countingStream->write((uint64_t*)&cgen_var_84, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001235 }
1236 uint32_t packetSize_vkDeviceWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1237 countingStream->rewind();
1238 uint32_t opcode_vkDeviceWaitIdle = OP_vkDeviceWaitIdle;
1239 stream->write(&opcode_vkDeviceWaitIdle, sizeof(uint32_t));
1240 stream->write(&packetSize_vkDeviceWaitIdle, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001241 uint64_t cgen_var_85;
1242 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_85, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001243 stream->write((uint64_t*)&cgen_var_85, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001244 VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
1245 stream->read(&vkDeviceWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001246 countingStream->clearPool();
1247 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001248 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001249 return vkDeviceWaitIdle_VkResult_return;
1250}
1251
1252VkResult VkEncoder::vkAllocateMemory(
1253 VkDevice device,
1254 const VkMemoryAllocateInfo* pAllocateInfo,
1255 const VkAllocationCallbacks* pAllocator,
1256 VkDeviceMemory* pMemory)
1257{
1258 auto stream = mImpl->stream();
1259 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001260 auto resources = mImpl->resources();
1261 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001262 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001263 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001264 VkMemoryAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001265 VkAllocationCallbacks* local_pAllocator;
1266 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001267 local_pAllocateInfo = nullptr;
1268 if (pAllocateInfo)
1269 {
1270 local_pAllocateInfo = (VkMemoryAllocateInfo*)pool->alloc(sizeof(const VkMemoryAllocateInfo));
1271 deepcopy_VkMemoryAllocateInfo(pool, pAllocateInfo, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
1272 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001273 local_pAllocator = nullptr;
1274 if (pAllocator)
1275 {
1276 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1277 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1278 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001279 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001280 countingStream->rewind();
1281 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001282 uint64_t cgen_var_86;
1283 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_86, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001284 countingStream->write((uint64_t*)&cgen_var_86, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001285 marshal_VkMemoryAllocateInfo(countingStream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001286 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001287 uint64_t cgen_var_87 = (uint64_t)(uintptr_t)local_pAllocator;
1288 countingStream->putBe64(cgen_var_87);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001289 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001290 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001291 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001292 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001293 uint64_t cgen_var_88;
1294 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_88, 1);
1295 countingStream->write((uint64_t*)&cgen_var_88, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001296 }
1297 uint32_t packetSize_vkAllocateMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1298 countingStream->rewind();
1299 uint32_t opcode_vkAllocateMemory = OP_vkAllocateMemory;
1300 stream->write(&opcode_vkAllocateMemory, sizeof(uint32_t));
1301 stream->write(&packetSize_vkAllocateMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001302 uint64_t cgen_var_89;
1303 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_89, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001304 stream->write((uint64_t*)&cgen_var_89, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001305 marshal_VkMemoryAllocateInfo(stream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001306 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001307 uint64_t cgen_var_90 = (uint64_t)(uintptr_t)local_pAllocator;
1308 stream->putBe64(cgen_var_90);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001309 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001310 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001311 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001312 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08001313 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08001314 uint64_t cgen_var_91;
1315 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_91, 1);
1316 stream->write((uint64_t*)&cgen_var_91, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001317 stream->setHandleMapping(resources->unwrapMapping());
1318 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08001319 uint64_t cgen_var_92;
1320 stream->read((uint64_t*)&cgen_var_92, 8);
1321 stream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_92, (VkDeviceMemory*)pMemory, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001322 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001323 VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
1324 stream->read(&vkAllocateMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001325 countingStream->clearPool();
1326 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001327 pool->freeAll();
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08001328 goldfish_vkAllocateMemory(this, vkAllocateMemory_VkResult_return, device, pAllocateInfo, pAllocator, pMemory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001329 return vkAllocateMemory_VkResult_return;
1330}
1331
1332void VkEncoder::vkFreeMemory(
1333 VkDevice device,
1334 VkDeviceMemory memory,
1335 const VkAllocationCallbacks* pAllocator)
1336{
1337 auto stream = mImpl->stream();
1338 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001339 auto resources = mImpl->resources();
1340 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001341 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001342 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001343 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001344 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001345 local_device = device;
1346 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001347 local_pAllocator = nullptr;
1348 if (pAllocator)
1349 {
1350 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1351 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1352 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001353 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001354 countingStream->rewind();
1355 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001356 uint64_t cgen_var_93;
1357 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_93, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001358 countingStream->write((uint64_t*)&cgen_var_93, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001359 uint64_t cgen_var_94;
1360 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_94, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001361 countingStream->write((uint64_t*)&cgen_var_94, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001362 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001363 uint64_t cgen_var_95 = (uint64_t)(uintptr_t)local_pAllocator;
1364 countingStream->putBe64(cgen_var_95);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001365 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001366 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001367 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001368 }
1369 }
1370 uint32_t packetSize_vkFreeMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1371 countingStream->rewind();
1372 uint32_t opcode_vkFreeMemory = OP_vkFreeMemory;
1373 stream->write(&opcode_vkFreeMemory, sizeof(uint32_t));
1374 stream->write(&packetSize_vkFreeMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001375 uint64_t cgen_var_96;
1376 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_96, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001377 stream->write((uint64_t*)&cgen_var_96, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001378 uint64_t cgen_var_97;
1379 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_97, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001380 stream->write((uint64_t*)&cgen_var_97, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001381 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001382 uint64_t cgen_var_98 = (uint64_t)(uintptr_t)local_pAllocator;
1383 stream->putBe64(cgen_var_98);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001384 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001385 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001386 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001387 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001388 resources->destroyMapping()->mapHandles_VkDeviceMemory((VkDeviceMemory*)&memory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001389}
1390
1391VkResult VkEncoder::vkMapMemory(
1392 VkDevice device,
1393 VkDeviceMemory memory,
1394 VkDeviceSize offset,
1395 VkDeviceSize size,
1396 VkMemoryMapFlags flags,
1397 void** ppData)
1398{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001399 VkResult vkMapMemory_VkResult_return = (VkResult)0;
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08001400 vkMapMemory_VkResult_return = goldfish_vkMapMemory(this, vkMapMemory_VkResult_return, device, memory, offset, size, flags, ppData);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001401 return vkMapMemory_VkResult_return;
1402}
1403
1404void VkEncoder::vkUnmapMemory(
1405 VkDevice device,
1406 VkDeviceMemory memory)
1407{
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08001408 goldfish_vkUnmapMemory(this, device, memory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001409}
1410
1411VkResult VkEncoder::vkFlushMappedMemoryRanges(
1412 VkDevice device,
1413 uint32_t memoryRangeCount,
1414 const VkMappedMemoryRange* pMemoryRanges)
1415{
Lingfeng Yang29c99d92018-11-30 11:15:29 -08001416 VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkFlushMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001417 auto stream = mImpl->stream();
1418 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001419 auto resources = mImpl->resources();
1420 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001421 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001422 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001423 uint32_t local_memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001424 VkMappedMemoryRange* local_pMemoryRanges;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001425 local_device = device;
1426 local_memoryRangeCount = memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001427 local_pMemoryRanges = nullptr;
1428 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001429 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001430 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001431 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1432 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001433 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1434 }
1435 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001436 countingStream->rewind();
1437 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001438 uint64_t cgen_var_99;
1439 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_99, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001440 countingStream->write((uint64_t*)&cgen_var_99, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001441 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1442 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1443 {
1444 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001445 }
1446 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001447 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1448 {
1449 auto range = pMemoryRanges[i];
1450 auto memory = pMemoryRanges[i].memory;
1451 auto size = pMemoryRanges[i].size;
1452 auto offset = pMemoryRanges[i].offset;
1453 auto goldfishMem = as_goldfish_VkDeviceMemory(memory);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001454 uint64_t streamSize = 0;
1455 if (!goldfishMem) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yange30d3382018-11-09 08:24:37 -08001456 auto hostPtr = goldfishMem->ptr;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001457 auto actualSize = size == VK_WHOLE_SIZE ? goldfishMem->size : size;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001458 if (!hostPtr) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001459 streamSize = actualSize;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001460 countingStream->write(&streamSize, sizeof(uint64_t));
Lingfeng Yange30d3382018-11-09 08:24:37 -08001461 uint8_t* targetRange = hostPtr + offset;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001462 countingStream->write(targetRange, actualSize);
Lingfeng Yange30d3382018-11-09 08:24:37 -08001463 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001464 uint32_t packetSize_vkFlushMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1465 countingStream->rewind();
1466 uint32_t opcode_vkFlushMappedMemoryRanges = OP_vkFlushMappedMemoryRanges;
1467 stream->write(&opcode_vkFlushMappedMemoryRanges, sizeof(uint32_t));
1468 stream->write(&packetSize_vkFlushMappedMemoryRanges, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001469 uint64_t cgen_var_100;
1470 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_100, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001471 stream->write((uint64_t*)&cgen_var_100, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001472 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001473 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1474 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001475 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001476 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001477 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1478 {
1479 auto range = pMemoryRanges[i];
1480 auto memory = pMemoryRanges[i].memory;
1481 auto size = pMemoryRanges[i].size;
1482 auto offset = pMemoryRanges[i].offset;
1483 auto goldfishMem = as_goldfish_VkDeviceMemory(memory);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001484 uint64_t streamSize = 0;
1485 if (!goldfishMem) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yange30d3382018-11-09 08:24:37 -08001486 auto hostPtr = goldfishMem->ptr;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001487 auto actualSize = size == VK_WHOLE_SIZE ? goldfishMem->size : size;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001488 if (!hostPtr) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001489 streamSize = actualSize;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001490 stream->write(&streamSize, sizeof(uint64_t));
Lingfeng Yange30d3382018-11-09 08:24:37 -08001491 uint8_t* targetRange = hostPtr + offset;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001492 stream->write(targetRange, actualSize);
Lingfeng Yange30d3382018-11-09 08:24:37 -08001493 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001494 VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
1495 stream->read(&vkFlushMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001496 countingStream->clearPool();
1497 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001498 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001499 return vkFlushMappedMemoryRanges_VkResult_return;
1500}
1501
1502VkResult VkEncoder::vkInvalidateMappedMemoryRanges(
1503 VkDevice device,
1504 uint32_t memoryRangeCount,
1505 const VkMappedMemoryRange* pMemoryRanges)
1506{
Lingfeng Yang29c99d92018-11-30 11:15:29 -08001507 VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkInvalidateMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001508 auto stream = mImpl->stream();
1509 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001510 auto resources = mImpl->resources();
1511 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001512 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001513 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001514 uint32_t local_memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001515 VkMappedMemoryRange* local_pMemoryRanges;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001516 local_device = device;
1517 local_memoryRangeCount = memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001518 local_pMemoryRanges = nullptr;
1519 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001520 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001521 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001522 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1523 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001524 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1525 }
1526 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001527 countingStream->rewind();
1528 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001529 uint64_t cgen_var_101;
1530 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_101, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001531 countingStream->write((uint64_t*)&cgen_var_101, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001532 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1533 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1534 {
1535 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001536 }
1537 }
1538 uint32_t packetSize_vkInvalidateMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1539 countingStream->rewind();
1540 uint32_t opcode_vkInvalidateMappedMemoryRanges = OP_vkInvalidateMappedMemoryRanges;
1541 stream->write(&opcode_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
1542 stream->write(&packetSize_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001543 uint64_t cgen_var_102;
1544 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_102, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001545 stream->write((uint64_t*)&cgen_var_102, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001546 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001547 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1548 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001549 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001550 }
1551 VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
1552 stream->read(&vkInvalidateMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001553 countingStream->clearPool();
1554 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001555 pool->freeAll();
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001556 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1557 {
1558 auto range = pMemoryRanges[i];
1559 auto memory = pMemoryRanges[i].memory;
1560 auto size = pMemoryRanges[i].size;
1561 auto offset = pMemoryRanges[i].offset;
1562 auto goldfishMem = as_goldfish_VkDeviceMemory(memory);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001563 uint64_t streamSize = 0;
1564 if (!goldfishMem) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001565 auto hostPtr = goldfishMem->ptr;
1566 auto actualSize = size == VK_WHOLE_SIZE ? goldfishMem->size : size;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001567 if (!hostPtr) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001568 streamSize = actualSize;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001569 stream->read(&streamSize, sizeof(uint64_t));
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001570 uint8_t* targetRange = hostPtr + offset;
1571 stream->read(targetRange, actualSize);
1572 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001573 return vkInvalidateMappedMemoryRanges_VkResult_return;
1574}
1575
1576void VkEncoder::vkGetDeviceMemoryCommitment(
1577 VkDevice device,
1578 VkDeviceMemory memory,
1579 VkDeviceSize* pCommittedMemoryInBytes)
1580{
1581 auto stream = mImpl->stream();
1582 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001583 auto resources = mImpl->resources();
1584 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001585 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001586 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001587 VkDeviceMemory local_memory;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001588 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001589 local_memory = memory;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001590 countingStream->rewind();
1591 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001592 uint64_t cgen_var_103;
1593 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_103, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001594 countingStream->write((uint64_t*)&cgen_var_103, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001595 uint64_t cgen_var_104;
1596 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_104, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001597 countingStream->write((uint64_t*)&cgen_var_104, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001598 countingStream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1599 }
1600 uint32_t packetSize_vkGetDeviceMemoryCommitment = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1601 countingStream->rewind();
1602 uint32_t opcode_vkGetDeviceMemoryCommitment = OP_vkGetDeviceMemoryCommitment;
1603 stream->write(&opcode_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
1604 stream->write(&packetSize_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001605 uint64_t cgen_var_105;
1606 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_105, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001607 stream->write((uint64_t*)&cgen_var_105, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001608 uint64_t cgen_var_106;
1609 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_106, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001610 stream->write((uint64_t*)&cgen_var_106, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001611 stream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1612 stream->read((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1613}
1614
1615VkResult VkEncoder::vkBindBufferMemory(
1616 VkDevice device,
1617 VkBuffer buffer,
1618 VkDeviceMemory memory,
1619 VkDeviceSize memoryOffset)
1620{
1621 auto stream = mImpl->stream();
1622 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001623 auto resources = mImpl->resources();
1624 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001625 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001626 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001627 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001628 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001629 VkDeviceSize local_memoryOffset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001630 local_device = device;
1631 local_buffer = buffer;
1632 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001633 local_memoryOffset = memoryOffset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001634 countingStream->rewind();
1635 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001636 uint64_t cgen_var_107;
1637 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_107, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001638 countingStream->write((uint64_t*)&cgen_var_107, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001639 uint64_t cgen_var_108;
1640 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_108, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001641 countingStream->write((uint64_t*)&cgen_var_108, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001642 uint64_t cgen_var_109;
1643 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_109, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001644 countingStream->write((uint64_t*)&cgen_var_109, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001645 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001646 }
1647 uint32_t packetSize_vkBindBufferMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1648 countingStream->rewind();
1649 uint32_t opcode_vkBindBufferMemory = OP_vkBindBufferMemory;
1650 stream->write(&opcode_vkBindBufferMemory, sizeof(uint32_t));
1651 stream->write(&packetSize_vkBindBufferMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001652 uint64_t cgen_var_110;
1653 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_110, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001654 stream->write((uint64_t*)&cgen_var_110, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001655 uint64_t cgen_var_111;
1656 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_111, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001657 stream->write((uint64_t*)&cgen_var_111, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001658 uint64_t cgen_var_112;
1659 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_112, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001660 stream->write((uint64_t*)&cgen_var_112, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001661 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001662 VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
1663 stream->read(&vkBindBufferMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001664 countingStream->clearPool();
1665 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001666 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001667 return vkBindBufferMemory_VkResult_return;
1668}
1669
1670VkResult VkEncoder::vkBindImageMemory(
1671 VkDevice device,
1672 VkImage image,
1673 VkDeviceMemory memory,
1674 VkDeviceSize memoryOffset)
1675{
1676 auto stream = mImpl->stream();
1677 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001678 auto resources = mImpl->resources();
1679 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001680 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001681 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001682 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001683 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001684 VkDeviceSize local_memoryOffset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001685 local_device = device;
1686 local_image = image;
1687 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001688 local_memoryOffset = memoryOffset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001689 countingStream->rewind();
1690 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001691 uint64_t cgen_var_113;
1692 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_113, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001693 countingStream->write((uint64_t*)&cgen_var_113, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001694 uint64_t cgen_var_114;
1695 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_114, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001696 countingStream->write((uint64_t*)&cgen_var_114, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001697 uint64_t cgen_var_115;
1698 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_115, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001699 countingStream->write((uint64_t*)&cgen_var_115, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001700 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001701 }
1702 uint32_t packetSize_vkBindImageMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1703 countingStream->rewind();
1704 uint32_t opcode_vkBindImageMemory = OP_vkBindImageMemory;
1705 stream->write(&opcode_vkBindImageMemory, sizeof(uint32_t));
1706 stream->write(&packetSize_vkBindImageMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001707 uint64_t cgen_var_116;
1708 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_116, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001709 stream->write((uint64_t*)&cgen_var_116, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001710 uint64_t cgen_var_117;
1711 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_117, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001712 stream->write((uint64_t*)&cgen_var_117, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001713 uint64_t cgen_var_118;
1714 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_118, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001715 stream->write((uint64_t*)&cgen_var_118, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001716 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001717 VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
1718 stream->read(&vkBindImageMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001719 countingStream->clearPool();
1720 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001721 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001722 return vkBindImageMemory_VkResult_return;
1723}
1724
1725void VkEncoder::vkGetBufferMemoryRequirements(
1726 VkDevice device,
1727 VkBuffer buffer,
1728 VkMemoryRequirements* pMemoryRequirements)
1729{
1730 auto stream = mImpl->stream();
1731 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001732 auto resources = mImpl->resources();
1733 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001734 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001735 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001736 VkBuffer local_buffer;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001737 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001738 local_buffer = buffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001739 countingStream->rewind();
1740 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001741 uint64_t cgen_var_119;
1742 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_119, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001743 countingStream->write((uint64_t*)&cgen_var_119, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001744 uint64_t cgen_var_120;
1745 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_120, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001746 countingStream->write((uint64_t*)&cgen_var_120, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001747 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
1748 }
1749 uint32_t packetSize_vkGetBufferMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1750 countingStream->rewind();
1751 uint32_t opcode_vkGetBufferMemoryRequirements = OP_vkGetBufferMemoryRequirements;
1752 stream->write(&opcode_vkGetBufferMemoryRequirements, sizeof(uint32_t));
1753 stream->write(&packetSize_vkGetBufferMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001754 uint64_t cgen_var_121;
1755 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_121, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001756 stream->write((uint64_t*)&cgen_var_121, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001757 uint64_t cgen_var_122;
1758 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_122, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001759 stream->write((uint64_t*)&cgen_var_122, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001760 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1761 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1762}
1763
1764void VkEncoder::vkGetImageMemoryRequirements(
1765 VkDevice device,
1766 VkImage image,
1767 VkMemoryRequirements* pMemoryRequirements)
1768{
1769 auto stream = mImpl->stream();
1770 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001771 auto resources = mImpl->resources();
1772 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001773 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001774 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001775 VkImage local_image;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001776 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001777 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001778 countingStream->rewind();
1779 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001780 uint64_t cgen_var_123;
1781 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_123, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001782 countingStream->write((uint64_t*)&cgen_var_123, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001783 uint64_t cgen_var_124;
1784 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_124, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001785 countingStream->write((uint64_t*)&cgen_var_124, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001786 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
1787 }
1788 uint32_t packetSize_vkGetImageMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1789 countingStream->rewind();
1790 uint32_t opcode_vkGetImageMemoryRequirements = OP_vkGetImageMemoryRequirements;
1791 stream->write(&opcode_vkGetImageMemoryRequirements, sizeof(uint32_t));
1792 stream->write(&packetSize_vkGetImageMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001793 uint64_t cgen_var_125;
1794 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_125, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001795 stream->write((uint64_t*)&cgen_var_125, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001796 uint64_t cgen_var_126;
1797 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_126, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001798 stream->write((uint64_t*)&cgen_var_126, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001799 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1800 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1801}
1802
1803void VkEncoder::vkGetImageSparseMemoryRequirements(
1804 VkDevice device,
1805 VkImage image,
1806 uint32_t* pSparseMemoryRequirementCount,
1807 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
1808{
1809 auto stream = mImpl->stream();
1810 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001811 auto resources = mImpl->resources();
1812 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001813 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001814 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001815 VkImage local_image;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001816 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001817 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001818 countingStream->rewind();
1819 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001820 uint64_t cgen_var_127;
1821 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_127, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001822 countingStream->write((uint64_t*)&cgen_var_127, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001823 uint64_t cgen_var_128;
1824 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_128, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001825 countingStream->write((uint64_t*)&cgen_var_128, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001826 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001827 uint64_t cgen_var_129 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
1828 countingStream->putBe64(cgen_var_129);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001829 if (pSparseMemoryRequirementCount)
1830 {
1831 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
1832 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001833 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001834 uint64_t cgen_var_130 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
1835 countingStream->putBe64(cgen_var_130);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001836 if (pSparseMemoryRequirements)
1837 {
1838 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
1839 {
1840 marshal_VkSparseImageMemoryRequirements(countingStream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
1841 }
1842 }
1843 }
1844 uint32_t packetSize_vkGetImageSparseMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1845 countingStream->rewind();
1846 uint32_t opcode_vkGetImageSparseMemoryRequirements = OP_vkGetImageSparseMemoryRequirements;
1847 stream->write(&opcode_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
1848 stream->write(&packetSize_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001849 uint64_t cgen_var_131;
1850 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_131, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001851 stream->write((uint64_t*)&cgen_var_131, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001852 uint64_t cgen_var_132;
1853 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_132, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001854 stream->write((uint64_t*)&cgen_var_132, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001855 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001856 uint64_t cgen_var_133 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
1857 stream->putBe64(cgen_var_133);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001858 if (pSparseMemoryRequirementCount)
1859 {
1860 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
1861 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001862 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001863 uint64_t cgen_var_134 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
1864 stream->putBe64(cgen_var_134);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001865 if (pSparseMemoryRequirements)
1866 {
1867 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
1868 {
1869 marshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
1870 }
1871 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001872 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001873 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001874 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001875 if (pSparseMemoryRequirementCount)
1876 {
1877 if (!(check_pSparseMemoryRequirementCount))
1878 {
1879 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
1880 }
1881 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
1882 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001883 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001884 VkSparseImageMemoryRequirements* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001885 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001886 if (pSparseMemoryRequirements)
1887 {
1888 if (!(check_pSparseMemoryRequirements))
1889 {
1890 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
1891 }
1892 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
1893 {
1894 unmarshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
1895 }
1896 }
1897}
1898
1899void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties(
1900 VkPhysicalDevice physicalDevice,
1901 VkFormat format,
1902 VkImageType type,
1903 VkSampleCountFlagBits samples,
1904 VkImageUsageFlags usage,
1905 VkImageTiling tiling,
1906 uint32_t* pPropertyCount,
1907 VkSparseImageFormatProperties* pProperties)
1908{
1909 auto stream = mImpl->stream();
1910 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001911 auto resources = mImpl->resources();
1912 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001913 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001914 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001915 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001916 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001917 VkSampleCountFlagBits local_samples;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001918 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001919 VkImageTiling local_tiling;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001920 local_physicalDevice = physicalDevice;
1921 local_format = format;
1922 local_type = type;
1923 local_samples = samples;
1924 local_usage = usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001925 local_tiling = tiling;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001926 countingStream->rewind();
1927 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001928 uint64_t cgen_var_137;
1929 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_137, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001930 countingStream->write((uint64_t*)&cgen_var_137, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001931 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
1932 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
1933 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
1934 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
1935 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001936 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001937 uint64_t cgen_var_138 = (uint64_t)(uintptr_t)pPropertyCount;
1938 countingStream->putBe64(cgen_var_138);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001939 if (pPropertyCount)
1940 {
1941 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1942 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001943 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001944 uint64_t cgen_var_139 = (uint64_t)(uintptr_t)pProperties;
1945 countingStream->putBe64(cgen_var_139);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001946 if (pProperties)
1947 {
1948 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1949 {
1950 marshal_VkSparseImageFormatProperties(countingStream, (VkSparseImageFormatProperties*)(pProperties + i));
1951 }
1952 }
1953 }
1954 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1955 countingStream->rewind();
1956 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties = OP_vkGetPhysicalDeviceSparseImageFormatProperties;
1957 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
1958 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001959 uint64_t cgen_var_140;
1960 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_140, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001961 stream->write((uint64_t*)&cgen_var_140, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001962 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
1963 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
1964 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
1965 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
1966 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001967 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001968 uint64_t cgen_var_141 = (uint64_t)(uintptr_t)pPropertyCount;
1969 stream->putBe64(cgen_var_141);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001970 if (pPropertyCount)
1971 {
1972 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1973 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001974 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001975 uint64_t cgen_var_142 = (uint64_t)(uintptr_t)pProperties;
1976 stream->putBe64(cgen_var_142);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001977 if (pProperties)
1978 {
1979 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1980 {
1981 marshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
1982 }
1983 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001984 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001985 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001986 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001987 if (pPropertyCount)
1988 {
1989 if (!(check_pPropertyCount))
1990 {
1991 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1992 }
1993 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1994 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001995 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001996 VkSparseImageFormatProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001997 check_pProperties = (VkSparseImageFormatProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001998 if (pProperties)
1999 {
2000 if (!(check_pProperties))
2001 {
2002 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
2003 }
2004 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2005 {
2006 unmarshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
2007 }
2008 }
2009}
2010
2011VkResult VkEncoder::vkQueueBindSparse(
2012 VkQueue queue,
2013 uint32_t bindInfoCount,
2014 const VkBindSparseInfo* pBindInfo,
2015 VkFence fence)
2016{
2017 auto stream = mImpl->stream();
2018 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002019 auto resources = mImpl->resources();
2020 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002021 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002022 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002023 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002024 VkBindSparseInfo* local_pBindInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002025 VkFence local_fence;
2026 local_queue = queue;
2027 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002028 local_pBindInfo = nullptr;
2029 if (pBindInfo)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002030 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002031 local_pBindInfo = (VkBindSparseInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindSparseInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002032 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2033 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002034 deepcopy_VkBindSparseInfo(pool, pBindInfo + i, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002035 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002036 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002037 local_fence = fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002038 countingStream->rewind();
2039 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002040 uint64_t cgen_var_145;
2041 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_145, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002042 countingStream->write((uint64_t*)&cgen_var_145, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002043 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
2044 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2045 {
2046 marshal_VkBindSparseInfo(countingStream, (VkBindSparseInfo*)(local_pBindInfo + i));
2047 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002048 uint64_t cgen_var_146;
2049 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_146, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002050 countingStream->write((uint64_t*)&cgen_var_146, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002051 }
2052 uint32_t packetSize_vkQueueBindSparse = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2053 countingStream->rewind();
2054 uint32_t opcode_vkQueueBindSparse = OP_vkQueueBindSparse;
2055 stream->write(&opcode_vkQueueBindSparse, sizeof(uint32_t));
2056 stream->write(&packetSize_vkQueueBindSparse, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002057 uint64_t cgen_var_147;
2058 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_147, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002059 stream->write((uint64_t*)&cgen_var_147, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002060 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002061 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2062 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002063 marshal_VkBindSparseInfo(stream, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002064 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002065 uint64_t cgen_var_148;
2066 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_148, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002067 stream->write((uint64_t*)&cgen_var_148, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002068 VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
2069 stream->read(&vkQueueBindSparse_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002070 countingStream->clearPool();
2071 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002072 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002073 return vkQueueBindSparse_VkResult_return;
2074}
2075
2076VkResult VkEncoder::vkCreateFence(
2077 VkDevice device,
2078 const VkFenceCreateInfo* pCreateInfo,
2079 const VkAllocationCallbacks* pAllocator,
2080 VkFence* pFence)
2081{
2082 auto stream = mImpl->stream();
2083 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002084 auto resources = mImpl->resources();
2085 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002086 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002087 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002088 VkFenceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002089 VkAllocationCallbacks* local_pAllocator;
2090 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002091 local_pCreateInfo = nullptr;
2092 if (pCreateInfo)
2093 {
2094 local_pCreateInfo = (VkFenceCreateInfo*)pool->alloc(sizeof(const VkFenceCreateInfo));
2095 deepcopy_VkFenceCreateInfo(pool, pCreateInfo, (VkFenceCreateInfo*)(local_pCreateInfo));
2096 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002097 local_pAllocator = nullptr;
2098 if (pAllocator)
2099 {
2100 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2101 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2102 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002103 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002104 countingStream->rewind();
2105 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002106 uint64_t cgen_var_149;
2107 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_149, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002108 countingStream->write((uint64_t*)&cgen_var_149, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002109 marshal_VkFenceCreateInfo(countingStream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002110 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002111 uint64_t cgen_var_150 = (uint64_t)(uintptr_t)local_pAllocator;
2112 countingStream->putBe64(cgen_var_150);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002113 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002114 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002115 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002116 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002117 uint64_t cgen_var_151;
2118 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_151, 1);
2119 countingStream->write((uint64_t*)&cgen_var_151, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002120 }
2121 uint32_t packetSize_vkCreateFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2122 countingStream->rewind();
2123 uint32_t opcode_vkCreateFence = OP_vkCreateFence;
2124 stream->write(&opcode_vkCreateFence, sizeof(uint32_t));
2125 stream->write(&packetSize_vkCreateFence, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002126 uint64_t cgen_var_152;
2127 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_152, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002128 stream->write((uint64_t*)&cgen_var_152, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002129 marshal_VkFenceCreateInfo(stream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002130 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002131 uint64_t cgen_var_153 = (uint64_t)(uintptr_t)local_pAllocator;
2132 stream->putBe64(cgen_var_153);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002133 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002134 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002135 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002136 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002137 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002138 uint64_t cgen_var_154;
2139 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_154, 1);
2140 stream->write((uint64_t*)&cgen_var_154, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002141 stream->setHandleMapping(resources->unwrapMapping());
2142 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002143 uint64_t cgen_var_155;
2144 stream->read((uint64_t*)&cgen_var_155, 8);
2145 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_155, (VkFence*)pFence, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002146 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002147 VkResult vkCreateFence_VkResult_return = (VkResult)0;
2148 stream->read(&vkCreateFence_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002149 countingStream->clearPool();
2150 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002151 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002152 return vkCreateFence_VkResult_return;
2153}
2154
2155void VkEncoder::vkDestroyFence(
2156 VkDevice device,
2157 VkFence fence,
2158 const VkAllocationCallbacks* pAllocator)
2159{
2160 auto stream = mImpl->stream();
2161 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002162 auto resources = mImpl->resources();
2163 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002164 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002165 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002166 VkFence local_fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002167 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002168 local_device = device;
2169 local_fence = fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002170 local_pAllocator = nullptr;
2171 if (pAllocator)
2172 {
2173 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2174 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2175 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002176 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002177 countingStream->rewind();
2178 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002179 uint64_t cgen_var_156;
2180 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_156, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002181 countingStream->write((uint64_t*)&cgen_var_156, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002182 uint64_t cgen_var_157;
2183 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_157, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002184 countingStream->write((uint64_t*)&cgen_var_157, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002185 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002186 uint64_t cgen_var_158 = (uint64_t)(uintptr_t)local_pAllocator;
2187 countingStream->putBe64(cgen_var_158);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002188 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002189 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002190 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002191 }
2192 }
2193 uint32_t packetSize_vkDestroyFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2194 countingStream->rewind();
2195 uint32_t opcode_vkDestroyFence = OP_vkDestroyFence;
2196 stream->write(&opcode_vkDestroyFence, sizeof(uint32_t));
2197 stream->write(&packetSize_vkDestroyFence, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002198 uint64_t cgen_var_159;
2199 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_159, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002200 stream->write((uint64_t*)&cgen_var_159, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002201 uint64_t cgen_var_160;
2202 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_160, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002203 stream->write((uint64_t*)&cgen_var_160, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002204 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002205 uint64_t cgen_var_161 = (uint64_t)(uintptr_t)local_pAllocator;
2206 stream->putBe64(cgen_var_161);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002207 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002208 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002209 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002210 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002211 resources->destroyMapping()->mapHandles_VkFence((VkFence*)&fence);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002212}
2213
2214VkResult VkEncoder::vkResetFences(
2215 VkDevice device,
2216 uint32_t fenceCount,
2217 const VkFence* pFences)
2218{
2219 auto stream = mImpl->stream();
2220 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002221 auto resources = mImpl->resources();
2222 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002223 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002224 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002225 uint32_t local_fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002226 VkFence* local_pFences;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002227 local_device = device;
2228 local_fenceCount = fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002229 local_pFences = nullptr;
2230 if (pFences)
2231 {
2232 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2233 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002234 countingStream->rewind();
2235 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002236 uint64_t cgen_var_162;
2237 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_162, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002238 countingStream->write((uint64_t*)&cgen_var_162, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002239 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002240 if (((fenceCount)))
2241 {
2242 uint64_t* cgen_var_163;
2243 countingStream->alloc((void**)&cgen_var_163, ((fenceCount)) * 8);
2244 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_163, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002245 countingStream->write((uint64_t*)cgen_var_163, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002246 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002247 }
2248 uint32_t packetSize_vkResetFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2249 countingStream->rewind();
2250 uint32_t opcode_vkResetFences = OP_vkResetFences;
2251 stream->write(&opcode_vkResetFences, sizeof(uint32_t));
2252 stream->write(&packetSize_vkResetFences, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002253 uint64_t cgen_var_164;
2254 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_164, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002255 stream->write((uint64_t*)&cgen_var_164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002256 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002257 if (((fenceCount)))
2258 {
2259 uint64_t* cgen_var_165;
2260 stream->alloc((void**)&cgen_var_165, ((fenceCount)) * 8);
2261 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_165, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002262 stream->write((uint64_t*)cgen_var_165, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002263 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002264 VkResult vkResetFences_VkResult_return = (VkResult)0;
2265 stream->read(&vkResetFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002266 countingStream->clearPool();
2267 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002268 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002269 return vkResetFences_VkResult_return;
2270}
2271
2272VkResult VkEncoder::vkGetFenceStatus(
2273 VkDevice device,
2274 VkFence fence)
2275{
2276 auto stream = mImpl->stream();
2277 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002278 auto resources = mImpl->resources();
2279 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002280 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002281 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002282 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002283 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002284 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002285 countingStream->rewind();
2286 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002287 uint64_t cgen_var_166;
2288 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_166, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002289 countingStream->write((uint64_t*)&cgen_var_166, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002290 uint64_t cgen_var_167;
2291 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_167, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002292 countingStream->write((uint64_t*)&cgen_var_167, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002293 }
2294 uint32_t packetSize_vkGetFenceStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2295 countingStream->rewind();
2296 uint32_t opcode_vkGetFenceStatus = OP_vkGetFenceStatus;
2297 stream->write(&opcode_vkGetFenceStatus, sizeof(uint32_t));
2298 stream->write(&packetSize_vkGetFenceStatus, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002299 uint64_t cgen_var_168;
2300 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_168, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002301 stream->write((uint64_t*)&cgen_var_168, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002302 uint64_t cgen_var_169;
2303 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_169, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002304 stream->write((uint64_t*)&cgen_var_169, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002305 VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
2306 stream->read(&vkGetFenceStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002307 countingStream->clearPool();
2308 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002309 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002310 return vkGetFenceStatus_VkResult_return;
2311}
2312
2313VkResult VkEncoder::vkWaitForFences(
2314 VkDevice device,
2315 uint32_t fenceCount,
2316 const VkFence* pFences,
2317 VkBool32 waitAll,
2318 uint64_t timeout)
2319{
2320 auto stream = mImpl->stream();
2321 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002322 auto resources = mImpl->resources();
2323 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002324 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002325 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002326 uint32_t local_fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002327 VkFence* local_pFences;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002328 VkBool32 local_waitAll;
2329 uint64_t local_timeout;
2330 local_device = device;
2331 local_fenceCount = fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002332 local_pFences = nullptr;
2333 if (pFences)
2334 {
2335 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2336 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002337 local_waitAll = waitAll;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002338 local_timeout = timeout;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002339 countingStream->rewind();
2340 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002341 uint64_t cgen_var_170;
2342 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_170, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002343 countingStream->write((uint64_t*)&cgen_var_170, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002344 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002345 if (((fenceCount)))
2346 {
2347 uint64_t* cgen_var_171;
2348 countingStream->alloc((void**)&cgen_var_171, ((fenceCount)) * 8);
2349 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_171, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002350 countingStream->write((uint64_t*)cgen_var_171, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002351 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002352 countingStream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2353 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002354 }
2355 uint32_t packetSize_vkWaitForFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2356 countingStream->rewind();
2357 uint32_t opcode_vkWaitForFences = OP_vkWaitForFences;
2358 stream->write(&opcode_vkWaitForFences, sizeof(uint32_t));
2359 stream->write(&packetSize_vkWaitForFences, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002360 uint64_t cgen_var_172;
2361 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_172, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002362 stream->write((uint64_t*)&cgen_var_172, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002363 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002364 if (((fenceCount)))
2365 {
2366 uint64_t* cgen_var_173;
2367 stream->alloc((void**)&cgen_var_173, ((fenceCount)) * 8);
2368 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_173, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002369 stream->write((uint64_t*)cgen_var_173, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002370 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002371 stream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2372 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002373 VkResult vkWaitForFences_VkResult_return = (VkResult)0;
2374 stream->read(&vkWaitForFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002375 countingStream->clearPool();
2376 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002377 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002378 return vkWaitForFences_VkResult_return;
2379}
2380
2381VkResult VkEncoder::vkCreateSemaphore(
2382 VkDevice device,
2383 const VkSemaphoreCreateInfo* pCreateInfo,
2384 const VkAllocationCallbacks* pAllocator,
2385 VkSemaphore* pSemaphore)
2386{
2387 auto stream = mImpl->stream();
2388 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002389 auto resources = mImpl->resources();
2390 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002391 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002392 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002393 VkSemaphoreCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002394 VkAllocationCallbacks* local_pAllocator;
2395 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002396 local_pCreateInfo = nullptr;
2397 if (pCreateInfo)
2398 {
2399 local_pCreateInfo = (VkSemaphoreCreateInfo*)pool->alloc(sizeof(const VkSemaphoreCreateInfo));
2400 deepcopy_VkSemaphoreCreateInfo(pool, pCreateInfo, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
2401 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002402 local_pAllocator = nullptr;
2403 if (pAllocator)
2404 {
2405 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2406 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2407 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002408 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002409 countingStream->rewind();
2410 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002411 uint64_t cgen_var_174;
2412 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_174, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002413 countingStream->write((uint64_t*)&cgen_var_174, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002414 marshal_VkSemaphoreCreateInfo(countingStream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002415 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002416 uint64_t cgen_var_175 = (uint64_t)(uintptr_t)local_pAllocator;
2417 countingStream->putBe64(cgen_var_175);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002418 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002419 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002420 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002421 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002422 uint64_t cgen_var_176;
2423 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_176, 1);
2424 countingStream->write((uint64_t*)&cgen_var_176, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002425 }
2426 uint32_t packetSize_vkCreateSemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2427 countingStream->rewind();
2428 uint32_t opcode_vkCreateSemaphore = OP_vkCreateSemaphore;
2429 stream->write(&opcode_vkCreateSemaphore, sizeof(uint32_t));
2430 stream->write(&packetSize_vkCreateSemaphore, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002431 uint64_t cgen_var_177;
2432 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_177, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002433 stream->write((uint64_t*)&cgen_var_177, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002434 marshal_VkSemaphoreCreateInfo(stream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002435 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002436 uint64_t cgen_var_178 = (uint64_t)(uintptr_t)local_pAllocator;
2437 stream->putBe64(cgen_var_178);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002438 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002439 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002440 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002441 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002442 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002443 uint64_t cgen_var_179;
2444 stream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_179, 1);
2445 stream->write((uint64_t*)&cgen_var_179, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002446 stream->setHandleMapping(resources->unwrapMapping());
2447 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002448 uint64_t cgen_var_180;
2449 stream->read((uint64_t*)&cgen_var_180, 8);
2450 stream->handleMapping()->mapHandles_u64_VkSemaphore(&cgen_var_180, (VkSemaphore*)pSemaphore, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002451 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002452 VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
2453 stream->read(&vkCreateSemaphore_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002454 countingStream->clearPool();
2455 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002456 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002457 return vkCreateSemaphore_VkResult_return;
2458}
2459
2460void VkEncoder::vkDestroySemaphore(
2461 VkDevice device,
2462 VkSemaphore semaphore,
2463 const VkAllocationCallbacks* pAllocator)
2464{
2465 auto stream = mImpl->stream();
2466 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002467 auto resources = mImpl->resources();
2468 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002469 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002470 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002471 VkSemaphore local_semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002472 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002473 local_device = device;
2474 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002475 local_pAllocator = nullptr;
2476 if (pAllocator)
2477 {
2478 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2479 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2480 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002481 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002482 countingStream->rewind();
2483 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002484 uint64_t cgen_var_181;
2485 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_181, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002486 countingStream->write((uint64_t*)&cgen_var_181, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002487 uint64_t cgen_var_182;
2488 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_182, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002489 countingStream->write((uint64_t*)&cgen_var_182, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002490 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002491 uint64_t cgen_var_183 = (uint64_t)(uintptr_t)local_pAllocator;
2492 countingStream->putBe64(cgen_var_183);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002493 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002494 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002495 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002496 }
2497 }
2498 uint32_t packetSize_vkDestroySemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2499 countingStream->rewind();
2500 uint32_t opcode_vkDestroySemaphore = OP_vkDestroySemaphore;
2501 stream->write(&opcode_vkDestroySemaphore, sizeof(uint32_t));
2502 stream->write(&packetSize_vkDestroySemaphore, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002503 uint64_t cgen_var_184;
2504 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_184, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002505 stream->write((uint64_t*)&cgen_var_184, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002506 uint64_t cgen_var_185;
2507 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_185, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002508 stream->write((uint64_t*)&cgen_var_185, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002509 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002510 uint64_t cgen_var_186 = (uint64_t)(uintptr_t)local_pAllocator;
2511 stream->putBe64(cgen_var_186);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002512 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002513 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002514 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002515 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002516 resources->destroyMapping()->mapHandles_VkSemaphore((VkSemaphore*)&semaphore);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002517}
2518
2519VkResult VkEncoder::vkCreateEvent(
2520 VkDevice device,
2521 const VkEventCreateInfo* pCreateInfo,
2522 const VkAllocationCallbacks* pAllocator,
2523 VkEvent* pEvent)
2524{
2525 auto stream = mImpl->stream();
2526 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002527 auto resources = mImpl->resources();
2528 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002529 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002530 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002531 VkEventCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002532 VkAllocationCallbacks* local_pAllocator;
2533 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002534 local_pCreateInfo = nullptr;
2535 if (pCreateInfo)
2536 {
2537 local_pCreateInfo = (VkEventCreateInfo*)pool->alloc(sizeof(const VkEventCreateInfo));
2538 deepcopy_VkEventCreateInfo(pool, pCreateInfo, (VkEventCreateInfo*)(local_pCreateInfo));
2539 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002540 local_pAllocator = nullptr;
2541 if (pAllocator)
2542 {
2543 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2544 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2545 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002546 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002547 countingStream->rewind();
2548 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002549 uint64_t cgen_var_187;
2550 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_187, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002551 countingStream->write((uint64_t*)&cgen_var_187, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002552 marshal_VkEventCreateInfo(countingStream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002553 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002554 uint64_t cgen_var_188 = (uint64_t)(uintptr_t)local_pAllocator;
2555 countingStream->putBe64(cgen_var_188);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002556 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002557 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002558 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002559 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002560 uint64_t cgen_var_189;
2561 countingStream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_189, 1);
2562 countingStream->write((uint64_t*)&cgen_var_189, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002563 }
2564 uint32_t packetSize_vkCreateEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2565 countingStream->rewind();
2566 uint32_t opcode_vkCreateEvent = OP_vkCreateEvent;
2567 stream->write(&opcode_vkCreateEvent, sizeof(uint32_t));
2568 stream->write(&packetSize_vkCreateEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002569 uint64_t cgen_var_190;
2570 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_190, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002571 stream->write((uint64_t*)&cgen_var_190, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002572 marshal_VkEventCreateInfo(stream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002573 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002574 uint64_t cgen_var_191 = (uint64_t)(uintptr_t)local_pAllocator;
2575 stream->putBe64(cgen_var_191);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002576 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002577 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002578 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002579 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002580 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002581 uint64_t cgen_var_192;
2582 stream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_192, 1);
2583 stream->write((uint64_t*)&cgen_var_192, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002584 stream->setHandleMapping(resources->unwrapMapping());
2585 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002586 uint64_t cgen_var_193;
2587 stream->read((uint64_t*)&cgen_var_193, 8);
2588 stream->handleMapping()->mapHandles_u64_VkEvent(&cgen_var_193, (VkEvent*)pEvent, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002589 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002590 VkResult vkCreateEvent_VkResult_return = (VkResult)0;
2591 stream->read(&vkCreateEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002592 countingStream->clearPool();
2593 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002594 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002595 return vkCreateEvent_VkResult_return;
2596}
2597
2598void VkEncoder::vkDestroyEvent(
2599 VkDevice device,
2600 VkEvent event,
2601 const VkAllocationCallbacks* pAllocator)
2602{
2603 auto stream = mImpl->stream();
2604 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002605 auto resources = mImpl->resources();
2606 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002607 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002608 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002609 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002610 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002611 local_device = device;
2612 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002613 local_pAllocator = nullptr;
2614 if (pAllocator)
2615 {
2616 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2617 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2618 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002619 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002620 countingStream->rewind();
2621 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002622 uint64_t cgen_var_194;
2623 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_194, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002624 countingStream->write((uint64_t*)&cgen_var_194, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002625 uint64_t cgen_var_195;
2626 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_195, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002627 countingStream->write((uint64_t*)&cgen_var_195, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002628 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002629 uint64_t cgen_var_196 = (uint64_t)(uintptr_t)local_pAllocator;
2630 countingStream->putBe64(cgen_var_196);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002631 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002632 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002633 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002634 }
2635 }
2636 uint32_t packetSize_vkDestroyEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2637 countingStream->rewind();
2638 uint32_t opcode_vkDestroyEvent = OP_vkDestroyEvent;
2639 stream->write(&opcode_vkDestroyEvent, sizeof(uint32_t));
2640 stream->write(&packetSize_vkDestroyEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002641 uint64_t cgen_var_197;
2642 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_197, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002643 stream->write((uint64_t*)&cgen_var_197, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002644 uint64_t cgen_var_198;
2645 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_198, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002646 stream->write((uint64_t*)&cgen_var_198, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002647 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002648 uint64_t cgen_var_199 = (uint64_t)(uintptr_t)local_pAllocator;
2649 stream->putBe64(cgen_var_199);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002650 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002651 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002652 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002653 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002654 resources->destroyMapping()->mapHandles_VkEvent((VkEvent*)&event);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002655}
2656
2657VkResult VkEncoder::vkGetEventStatus(
2658 VkDevice device,
2659 VkEvent event)
2660{
2661 auto stream = mImpl->stream();
2662 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002663 auto resources = mImpl->resources();
2664 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002665 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002666 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002667 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002668 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002669 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002670 countingStream->rewind();
2671 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002672 uint64_t cgen_var_200;
2673 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_200, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002674 countingStream->write((uint64_t*)&cgen_var_200, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002675 uint64_t cgen_var_201;
2676 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_201, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002677 countingStream->write((uint64_t*)&cgen_var_201, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002678 }
2679 uint32_t packetSize_vkGetEventStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2680 countingStream->rewind();
2681 uint32_t opcode_vkGetEventStatus = OP_vkGetEventStatus;
2682 stream->write(&opcode_vkGetEventStatus, sizeof(uint32_t));
2683 stream->write(&packetSize_vkGetEventStatus, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002684 uint64_t cgen_var_202;
2685 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_202, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002686 stream->write((uint64_t*)&cgen_var_202, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002687 uint64_t cgen_var_203;
2688 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_203, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002689 stream->write((uint64_t*)&cgen_var_203, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002690 VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
2691 stream->read(&vkGetEventStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002692 countingStream->clearPool();
2693 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002694 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002695 return vkGetEventStatus_VkResult_return;
2696}
2697
2698VkResult VkEncoder::vkSetEvent(
2699 VkDevice device,
2700 VkEvent event)
2701{
2702 auto stream = mImpl->stream();
2703 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002704 auto resources = mImpl->resources();
2705 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002706 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002707 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002708 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002709 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002710 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002711 countingStream->rewind();
2712 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002713 uint64_t cgen_var_204;
2714 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_204, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002715 countingStream->write((uint64_t*)&cgen_var_204, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002716 uint64_t cgen_var_205;
2717 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_205, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002718 countingStream->write((uint64_t*)&cgen_var_205, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002719 }
2720 uint32_t packetSize_vkSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2721 countingStream->rewind();
2722 uint32_t opcode_vkSetEvent = OP_vkSetEvent;
2723 stream->write(&opcode_vkSetEvent, sizeof(uint32_t));
2724 stream->write(&packetSize_vkSetEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002725 uint64_t cgen_var_206;
2726 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_206, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002727 stream->write((uint64_t*)&cgen_var_206, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002728 uint64_t cgen_var_207;
2729 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_207, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002730 stream->write((uint64_t*)&cgen_var_207, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002731 VkResult vkSetEvent_VkResult_return = (VkResult)0;
2732 stream->read(&vkSetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002733 countingStream->clearPool();
2734 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002735 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002736 return vkSetEvent_VkResult_return;
2737}
2738
2739VkResult VkEncoder::vkResetEvent(
2740 VkDevice device,
2741 VkEvent event)
2742{
2743 auto stream = mImpl->stream();
2744 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002745 auto resources = mImpl->resources();
2746 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002747 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002748 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002749 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002750 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002751 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002752 countingStream->rewind();
2753 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002754 uint64_t cgen_var_208;
2755 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_208, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002756 countingStream->write((uint64_t*)&cgen_var_208, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002757 uint64_t cgen_var_209;
2758 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_209, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002759 countingStream->write((uint64_t*)&cgen_var_209, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002760 }
2761 uint32_t packetSize_vkResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2762 countingStream->rewind();
2763 uint32_t opcode_vkResetEvent = OP_vkResetEvent;
2764 stream->write(&opcode_vkResetEvent, sizeof(uint32_t));
2765 stream->write(&packetSize_vkResetEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002766 uint64_t cgen_var_210;
2767 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_210, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002768 stream->write((uint64_t*)&cgen_var_210, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002769 uint64_t cgen_var_211;
2770 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_211, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002771 stream->write((uint64_t*)&cgen_var_211, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002772 VkResult vkResetEvent_VkResult_return = (VkResult)0;
2773 stream->read(&vkResetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002774 countingStream->clearPool();
2775 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002776 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002777 return vkResetEvent_VkResult_return;
2778}
2779
2780VkResult VkEncoder::vkCreateQueryPool(
2781 VkDevice device,
2782 const VkQueryPoolCreateInfo* pCreateInfo,
2783 const VkAllocationCallbacks* pAllocator,
2784 VkQueryPool* pQueryPool)
2785{
2786 auto stream = mImpl->stream();
2787 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002788 auto resources = mImpl->resources();
2789 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002790 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002791 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002792 VkQueryPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002793 VkAllocationCallbacks* local_pAllocator;
2794 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002795 local_pCreateInfo = nullptr;
2796 if (pCreateInfo)
2797 {
2798 local_pCreateInfo = (VkQueryPoolCreateInfo*)pool->alloc(sizeof(const VkQueryPoolCreateInfo));
2799 deepcopy_VkQueryPoolCreateInfo(pool, pCreateInfo, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
2800 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002801 local_pAllocator = nullptr;
2802 if (pAllocator)
2803 {
2804 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2805 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2806 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002807 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002808 countingStream->rewind();
2809 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002810 uint64_t cgen_var_212;
2811 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_212, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002812 countingStream->write((uint64_t*)&cgen_var_212, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002813 marshal_VkQueryPoolCreateInfo(countingStream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002814 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002815 uint64_t cgen_var_213 = (uint64_t)(uintptr_t)local_pAllocator;
2816 countingStream->putBe64(cgen_var_213);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002817 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002818 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002819 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002820 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002821 uint64_t cgen_var_214;
2822 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_214, 1);
2823 countingStream->write((uint64_t*)&cgen_var_214, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002824 }
2825 uint32_t packetSize_vkCreateQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2826 countingStream->rewind();
2827 uint32_t opcode_vkCreateQueryPool = OP_vkCreateQueryPool;
2828 stream->write(&opcode_vkCreateQueryPool, sizeof(uint32_t));
2829 stream->write(&packetSize_vkCreateQueryPool, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002830 uint64_t cgen_var_215;
2831 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_215, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002832 stream->write((uint64_t*)&cgen_var_215, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002833 marshal_VkQueryPoolCreateInfo(stream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002834 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002835 uint64_t cgen_var_216 = (uint64_t)(uintptr_t)local_pAllocator;
2836 stream->putBe64(cgen_var_216);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002837 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002838 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002839 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002840 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002841 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002842 uint64_t cgen_var_217;
2843 stream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_217, 1);
2844 stream->write((uint64_t*)&cgen_var_217, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002845 stream->setHandleMapping(resources->unwrapMapping());
2846 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002847 uint64_t cgen_var_218;
2848 stream->read((uint64_t*)&cgen_var_218, 8);
2849 stream->handleMapping()->mapHandles_u64_VkQueryPool(&cgen_var_218, (VkQueryPool*)pQueryPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002850 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002851 VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
2852 stream->read(&vkCreateQueryPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002853 countingStream->clearPool();
2854 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002855 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002856 return vkCreateQueryPool_VkResult_return;
2857}
2858
2859void VkEncoder::vkDestroyQueryPool(
2860 VkDevice device,
2861 VkQueryPool queryPool,
2862 const VkAllocationCallbacks* pAllocator)
2863{
2864 auto stream = mImpl->stream();
2865 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002866 auto resources = mImpl->resources();
2867 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002868 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002869 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002870 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002871 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002872 local_device = device;
2873 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002874 local_pAllocator = nullptr;
2875 if (pAllocator)
2876 {
2877 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2878 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2879 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002880 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002881 countingStream->rewind();
2882 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002883 uint64_t cgen_var_219;
2884 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_219, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002885 countingStream->write((uint64_t*)&cgen_var_219, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002886 uint64_t cgen_var_220;
2887 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_220, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002888 countingStream->write((uint64_t*)&cgen_var_220, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002889 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002890 uint64_t cgen_var_221 = (uint64_t)(uintptr_t)local_pAllocator;
2891 countingStream->putBe64(cgen_var_221);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002892 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002893 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002894 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002895 }
2896 }
2897 uint32_t packetSize_vkDestroyQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2898 countingStream->rewind();
2899 uint32_t opcode_vkDestroyQueryPool = OP_vkDestroyQueryPool;
2900 stream->write(&opcode_vkDestroyQueryPool, sizeof(uint32_t));
2901 stream->write(&packetSize_vkDestroyQueryPool, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002902 uint64_t cgen_var_222;
2903 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_222, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002904 stream->write((uint64_t*)&cgen_var_222, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002905 uint64_t cgen_var_223;
2906 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_223, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002907 stream->write((uint64_t*)&cgen_var_223, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002908 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002909 uint64_t cgen_var_224 = (uint64_t)(uintptr_t)local_pAllocator;
2910 stream->putBe64(cgen_var_224);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002911 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002912 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002913 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002914 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002915 resources->destroyMapping()->mapHandles_VkQueryPool((VkQueryPool*)&queryPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002916}
2917
2918VkResult VkEncoder::vkGetQueryPoolResults(
2919 VkDevice device,
2920 VkQueryPool queryPool,
2921 uint32_t firstQuery,
2922 uint32_t queryCount,
2923 size_t dataSize,
2924 void* pData,
2925 VkDeviceSize stride,
2926 VkQueryResultFlags flags)
2927{
2928 auto stream = mImpl->stream();
2929 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002930 auto resources = mImpl->resources();
2931 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002932 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002933 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002934 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002935 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002936 uint32_t local_queryCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002937 size_t local_dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002938 VkDeviceSize local_stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002939 VkQueryResultFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002940 local_device = device;
2941 local_queryPool = queryPool;
2942 local_firstQuery = firstQuery;
2943 local_queryCount = queryCount;
2944 local_dataSize = dataSize;
2945 local_stride = stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002946 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002947 countingStream->rewind();
2948 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002949 uint64_t cgen_var_225;
2950 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_225, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002951 countingStream->write((uint64_t*)&cgen_var_225, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002952 uint64_t cgen_var_226;
2953 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_226, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002954 countingStream->write((uint64_t*)&cgen_var_226, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002955 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
2956 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08002957 uint64_t cgen_var_227 = (uint64_t)local_dataSize;
2958 countingStream->putBe64(cgen_var_227);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002959 countingStream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002960 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
2961 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002962 }
2963 uint32_t packetSize_vkGetQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2964 countingStream->rewind();
2965 uint32_t opcode_vkGetQueryPoolResults = OP_vkGetQueryPoolResults;
2966 stream->write(&opcode_vkGetQueryPoolResults, sizeof(uint32_t));
2967 stream->write(&packetSize_vkGetQueryPoolResults, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002968 uint64_t cgen_var_228;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08002969 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_228, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002970 stream->write((uint64_t*)&cgen_var_228, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08002971 uint64_t cgen_var_229;
2972 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_229, 1);
2973 stream->write((uint64_t*)&cgen_var_229, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002974 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
2975 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08002976 uint64_t cgen_var_230 = (uint64_t)local_dataSize;
2977 stream->putBe64(cgen_var_230);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002978 stream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002979 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
2980 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002981 stream->read((void*)pData, ((dataSize)) * sizeof(uint8_t));
2982 VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
2983 stream->read(&vkGetQueryPoolResults_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002984 countingStream->clearPool();
2985 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002986 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002987 return vkGetQueryPoolResults_VkResult_return;
2988}
2989
2990VkResult VkEncoder::vkCreateBuffer(
2991 VkDevice device,
2992 const VkBufferCreateInfo* pCreateInfo,
2993 const VkAllocationCallbacks* pAllocator,
2994 VkBuffer* pBuffer)
2995{
2996 auto stream = mImpl->stream();
2997 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002998 auto resources = mImpl->resources();
2999 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003000 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003001 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003002 VkBufferCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003003 VkAllocationCallbacks* local_pAllocator;
3004 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003005 local_pCreateInfo = nullptr;
3006 if (pCreateInfo)
3007 {
3008 local_pCreateInfo = (VkBufferCreateInfo*)pool->alloc(sizeof(const VkBufferCreateInfo));
3009 deepcopy_VkBufferCreateInfo(pool, pCreateInfo, (VkBufferCreateInfo*)(local_pCreateInfo));
3010 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003011 local_pAllocator = nullptr;
3012 if (pAllocator)
3013 {
3014 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3015 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3016 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003017 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003018 countingStream->rewind();
3019 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003020 uint64_t cgen_var_231;
3021 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_231, 1);
3022 countingStream->write((uint64_t*)&cgen_var_231, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003023 marshal_VkBufferCreateInfo(countingStream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003024 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003025 uint64_t cgen_var_232 = (uint64_t)(uintptr_t)local_pAllocator;
3026 countingStream->putBe64(cgen_var_232);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003027 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003028 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003029 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003030 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003031 uint64_t cgen_var_233;
3032 countingStream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_233, 1);
3033 countingStream->write((uint64_t*)&cgen_var_233, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003034 }
3035 uint32_t packetSize_vkCreateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3036 countingStream->rewind();
3037 uint32_t opcode_vkCreateBuffer = OP_vkCreateBuffer;
3038 stream->write(&opcode_vkCreateBuffer, sizeof(uint32_t));
3039 stream->write(&packetSize_vkCreateBuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003040 uint64_t cgen_var_234;
3041 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_234, 1);
3042 stream->write((uint64_t*)&cgen_var_234, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003043 marshal_VkBufferCreateInfo(stream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003044 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003045 uint64_t cgen_var_235 = (uint64_t)(uintptr_t)local_pAllocator;
3046 stream->putBe64(cgen_var_235);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003047 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003048 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003049 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003050 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003051 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003052 uint64_t cgen_var_236;
3053 stream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_236, 1);
3054 stream->write((uint64_t*)&cgen_var_236, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003055 stream->setHandleMapping(resources->unwrapMapping());
3056 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003057 uint64_t cgen_var_237;
3058 stream->read((uint64_t*)&cgen_var_237, 8);
3059 stream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_237, (VkBuffer*)pBuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003060 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003061 VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
3062 stream->read(&vkCreateBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003063 countingStream->clearPool();
3064 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003065 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003066 return vkCreateBuffer_VkResult_return;
3067}
3068
3069void VkEncoder::vkDestroyBuffer(
3070 VkDevice device,
3071 VkBuffer buffer,
3072 const VkAllocationCallbacks* pAllocator)
3073{
3074 auto stream = mImpl->stream();
3075 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003076 auto resources = mImpl->resources();
3077 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003078 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003079 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003080 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003081 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003082 local_device = device;
3083 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003084 local_pAllocator = nullptr;
3085 if (pAllocator)
3086 {
3087 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3088 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3089 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003090 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003091 countingStream->rewind();
3092 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003093 uint64_t cgen_var_238;
3094 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_238, 1);
3095 countingStream->write((uint64_t*)&cgen_var_238, 1 * 8);
3096 uint64_t cgen_var_239;
3097 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_239, 1);
3098 countingStream->write((uint64_t*)&cgen_var_239, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003099 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003100 uint64_t cgen_var_240 = (uint64_t)(uintptr_t)local_pAllocator;
3101 countingStream->putBe64(cgen_var_240);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003102 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003103 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003104 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003105 }
3106 }
3107 uint32_t packetSize_vkDestroyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3108 countingStream->rewind();
3109 uint32_t opcode_vkDestroyBuffer = OP_vkDestroyBuffer;
3110 stream->write(&opcode_vkDestroyBuffer, sizeof(uint32_t));
3111 stream->write(&packetSize_vkDestroyBuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003112 uint64_t cgen_var_241;
3113 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_241, 1);
3114 stream->write((uint64_t*)&cgen_var_241, 1 * 8);
3115 uint64_t cgen_var_242;
3116 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_242, 1);
3117 stream->write((uint64_t*)&cgen_var_242, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003118 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003119 uint64_t cgen_var_243 = (uint64_t)(uintptr_t)local_pAllocator;
3120 stream->putBe64(cgen_var_243);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003121 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003122 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003123 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003124 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003125 resources->destroyMapping()->mapHandles_VkBuffer((VkBuffer*)&buffer);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003126}
3127
3128VkResult VkEncoder::vkCreateBufferView(
3129 VkDevice device,
3130 const VkBufferViewCreateInfo* pCreateInfo,
3131 const VkAllocationCallbacks* pAllocator,
3132 VkBufferView* pView)
3133{
3134 auto stream = mImpl->stream();
3135 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003136 auto resources = mImpl->resources();
3137 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003138 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003139 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003140 VkBufferViewCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003141 VkAllocationCallbacks* local_pAllocator;
3142 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003143 local_pCreateInfo = nullptr;
3144 if (pCreateInfo)
3145 {
3146 local_pCreateInfo = (VkBufferViewCreateInfo*)pool->alloc(sizeof(const VkBufferViewCreateInfo));
3147 deepcopy_VkBufferViewCreateInfo(pool, pCreateInfo, (VkBufferViewCreateInfo*)(local_pCreateInfo));
3148 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003149 local_pAllocator = nullptr;
3150 if (pAllocator)
3151 {
3152 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3153 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3154 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003155 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003156 countingStream->rewind();
3157 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003158 uint64_t cgen_var_244;
3159 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_244, 1);
3160 countingStream->write((uint64_t*)&cgen_var_244, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003161 marshal_VkBufferViewCreateInfo(countingStream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003162 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003163 uint64_t cgen_var_245 = (uint64_t)(uintptr_t)local_pAllocator;
3164 countingStream->putBe64(cgen_var_245);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003165 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003166 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003167 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003168 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003169 uint64_t cgen_var_246;
3170 countingStream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_246, 1);
3171 countingStream->write((uint64_t*)&cgen_var_246, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003172 }
3173 uint32_t packetSize_vkCreateBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3174 countingStream->rewind();
3175 uint32_t opcode_vkCreateBufferView = OP_vkCreateBufferView;
3176 stream->write(&opcode_vkCreateBufferView, sizeof(uint32_t));
3177 stream->write(&packetSize_vkCreateBufferView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003178 uint64_t cgen_var_247;
3179 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_247, 1);
3180 stream->write((uint64_t*)&cgen_var_247, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003181 marshal_VkBufferViewCreateInfo(stream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003182 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003183 uint64_t cgen_var_248 = (uint64_t)(uintptr_t)local_pAllocator;
3184 stream->putBe64(cgen_var_248);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003185 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003186 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003187 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003188 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003189 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003190 uint64_t cgen_var_249;
3191 stream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_249, 1);
3192 stream->write((uint64_t*)&cgen_var_249, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003193 stream->setHandleMapping(resources->unwrapMapping());
3194 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003195 uint64_t cgen_var_250;
3196 stream->read((uint64_t*)&cgen_var_250, 8);
3197 stream->handleMapping()->mapHandles_u64_VkBufferView(&cgen_var_250, (VkBufferView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003198 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003199 VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
3200 stream->read(&vkCreateBufferView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003201 countingStream->clearPool();
3202 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003203 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003204 return vkCreateBufferView_VkResult_return;
3205}
3206
3207void VkEncoder::vkDestroyBufferView(
3208 VkDevice device,
3209 VkBufferView bufferView,
3210 const VkAllocationCallbacks* pAllocator)
3211{
3212 auto stream = mImpl->stream();
3213 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003214 auto resources = mImpl->resources();
3215 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003216 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003217 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003218 VkBufferView local_bufferView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003219 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003220 local_device = device;
3221 local_bufferView = bufferView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003222 local_pAllocator = nullptr;
3223 if (pAllocator)
3224 {
3225 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3226 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3227 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003228 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003229 countingStream->rewind();
3230 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003231 uint64_t cgen_var_251;
3232 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_251, 1);
3233 countingStream->write((uint64_t*)&cgen_var_251, 1 * 8);
3234 uint64_t cgen_var_252;
3235 countingStream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_252, 1);
3236 countingStream->write((uint64_t*)&cgen_var_252, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003237 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003238 uint64_t cgen_var_253 = (uint64_t)(uintptr_t)local_pAllocator;
3239 countingStream->putBe64(cgen_var_253);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003240 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003241 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003242 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003243 }
3244 }
3245 uint32_t packetSize_vkDestroyBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3246 countingStream->rewind();
3247 uint32_t opcode_vkDestroyBufferView = OP_vkDestroyBufferView;
3248 stream->write(&opcode_vkDestroyBufferView, sizeof(uint32_t));
3249 stream->write(&packetSize_vkDestroyBufferView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003250 uint64_t cgen_var_254;
3251 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_254, 1);
3252 stream->write((uint64_t*)&cgen_var_254, 1 * 8);
3253 uint64_t cgen_var_255;
3254 stream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_255, 1);
3255 stream->write((uint64_t*)&cgen_var_255, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003256 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003257 uint64_t cgen_var_256 = (uint64_t)(uintptr_t)local_pAllocator;
3258 stream->putBe64(cgen_var_256);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003259 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003260 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003261 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003262 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003263 resources->destroyMapping()->mapHandles_VkBufferView((VkBufferView*)&bufferView);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003264}
3265
3266VkResult VkEncoder::vkCreateImage(
3267 VkDevice device,
3268 const VkImageCreateInfo* pCreateInfo,
3269 const VkAllocationCallbacks* pAllocator,
3270 VkImage* pImage)
3271{
3272 auto stream = mImpl->stream();
3273 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003274 auto resources = mImpl->resources();
3275 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003276 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003277 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003278 VkImageCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003279 VkAllocationCallbacks* local_pAllocator;
3280 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003281 local_pCreateInfo = nullptr;
3282 if (pCreateInfo)
3283 {
3284 local_pCreateInfo = (VkImageCreateInfo*)pool->alloc(sizeof(const VkImageCreateInfo));
3285 deepcopy_VkImageCreateInfo(pool, pCreateInfo, (VkImageCreateInfo*)(local_pCreateInfo));
3286 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003287 local_pAllocator = nullptr;
3288 if (pAllocator)
3289 {
3290 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3291 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3292 }
Lingfeng Yang9666b852018-11-13 23:09:59 -08003293 goldfish_unwrap_VkNativeBufferANDROID(pCreateInfo, local_pCreateInfo);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003294 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003295 countingStream->rewind();
3296 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003297 uint64_t cgen_var_257;
3298 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_257, 1);
3299 countingStream->write((uint64_t*)&cgen_var_257, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003300 marshal_VkImageCreateInfo(countingStream, (VkImageCreateInfo*)(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_258 = (uint64_t)(uintptr_t)local_pAllocator;
3303 countingStream->putBe64(cgen_var_258);
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_259;
3309 countingStream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_259, 1);
3310 countingStream->write((uint64_t*)&cgen_var_259, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003311 }
3312 uint32_t packetSize_vkCreateImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3313 countingStream->rewind();
3314 uint32_t opcode_vkCreateImage = OP_vkCreateImage;
3315 stream->write(&opcode_vkCreateImage, sizeof(uint32_t));
3316 stream->write(&packetSize_vkCreateImage, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003317 uint64_t cgen_var_260;
3318 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_260, 1);
3319 stream->write((uint64_t*)&cgen_var_260, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003320 marshal_VkImageCreateInfo(stream, (VkImageCreateInfo*)(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_261 = (uint64_t)(uintptr_t)local_pAllocator;
3323 stream->putBe64(cgen_var_261);
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_262;
3330 stream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_262, 1);
3331 stream->write((uint64_t*)&cgen_var_262, 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_263;
3335 stream->read((uint64_t*)&cgen_var_263, 8);
3336 stream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_263, (VkImage*)pImage, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003337 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003338 VkResult vkCreateImage_VkResult_return = (VkResult)0;
3339 stream->read(&vkCreateImage_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 vkCreateImage_VkResult_return;
3344}
3345
3346void VkEncoder::vkDestroyImage(
3347 VkDevice device,
3348 VkImage image,
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 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003358 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003359 local_device = device;
3360 local_image = image;
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 Yangf4d77ef2018-11-02 23:21:37 -07003368 countingStream->rewind();
3369 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003370 uint64_t cgen_var_264;
3371 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_264, 1);
3372 countingStream->write((uint64_t*)&cgen_var_264, 1 * 8);
3373 uint64_t cgen_var_265;
3374 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_265, 1);
3375 countingStream->write((uint64_t*)&cgen_var_265, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003376 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003377 uint64_t cgen_var_266 = (uint64_t)(uintptr_t)local_pAllocator;
3378 countingStream->putBe64(cgen_var_266);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003379 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003380 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003381 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003382 }
3383 }
3384 uint32_t packetSize_vkDestroyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3385 countingStream->rewind();
3386 uint32_t opcode_vkDestroyImage = OP_vkDestroyImage;
3387 stream->write(&opcode_vkDestroyImage, sizeof(uint32_t));
3388 stream->write(&packetSize_vkDestroyImage, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003389 uint64_t cgen_var_267;
3390 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_267, 1);
3391 stream->write((uint64_t*)&cgen_var_267, 1 * 8);
3392 uint64_t cgen_var_268;
3393 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_268, 1);
3394 stream->write((uint64_t*)&cgen_var_268, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003395 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003396 uint64_t cgen_var_269 = (uint64_t)(uintptr_t)local_pAllocator;
3397 stream->putBe64(cgen_var_269);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003398 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003399 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003400 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003401 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003402 resources->destroyMapping()->mapHandles_VkImage((VkImage*)&image);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003403}
3404
3405void VkEncoder::vkGetImageSubresourceLayout(
3406 VkDevice device,
3407 VkImage image,
3408 const VkImageSubresource* pSubresource,
3409 VkSubresourceLayout* pLayout)
3410{
3411 auto stream = mImpl->stream();
3412 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003413 auto resources = mImpl->resources();
3414 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003415 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003416 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003417 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003418 VkImageSubresource* local_pSubresource;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003419 local_device = device;
3420 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003421 local_pSubresource = nullptr;
3422 if (pSubresource)
3423 {
3424 local_pSubresource = (VkImageSubresource*)pool->alloc(sizeof(const VkImageSubresource));
3425 deepcopy_VkImageSubresource(pool, pSubresource, (VkImageSubresource*)(local_pSubresource));
3426 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003427 countingStream->rewind();
3428 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003429 uint64_t cgen_var_270;
3430 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_270, 1);
3431 countingStream->write((uint64_t*)&cgen_var_270, 1 * 8);
3432 uint64_t cgen_var_271;
3433 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_271, 1);
3434 countingStream->write((uint64_t*)&cgen_var_271, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003435 marshal_VkImageSubresource(countingStream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003436 marshal_VkSubresourceLayout(countingStream, (VkSubresourceLayout*)(pLayout));
3437 }
3438 uint32_t packetSize_vkGetImageSubresourceLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3439 countingStream->rewind();
3440 uint32_t opcode_vkGetImageSubresourceLayout = OP_vkGetImageSubresourceLayout;
3441 stream->write(&opcode_vkGetImageSubresourceLayout, sizeof(uint32_t));
3442 stream->write(&packetSize_vkGetImageSubresourceLayout, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003443 uint64_t cgen_var_272;
3444 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_272, 1);
3445 stream->write((uint64_t*)&cgen_var_272, 1 * 8);
3446 uint64_t cgen_var_273;
3447 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_273, 1);
3448 stream->write((uint64_t*)&cgen_var_273, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003449 marshal_VkImageSubresource(stream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003450 marshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
3451 unmarshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
3452}
3453
3454VkResult VkEncoder::vkCreateImageView(
3455 VkDevice device,
3456 const VkImageViewCreateInfo* pCreateInfo,
3457 const VkAllocationCallbacks* pAllocator,
3458 VkImageView* pView)
3459{
3460 auto stream = mImpl->stream();
3461 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003462 auto resources = mImpl->resources();
3463 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003464 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003465 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003466 VkImageViewCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003467 VkAllocationCallbacks* local_pAllocator;
3468 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003469 local_pCreateInfo = nullptr;
3470 if (pCreateInfo)
3471 {
3472 local_pCreateInfo = (VkImageViewCreateInfo*)pool->alloc(sizeof(const VkImageViewCreateInfo));
3473 deepcopy_VkImageViewCreateInfo(pool, pCreateInfo, (VkImageViewCreateInfo*)(local_pCreateInfo));
3474 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003475 local_pAllocator = nullptr;
3476 if (pAllocator)
3477 {
3478 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3479 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3480 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003481 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003482 countingStream->rewind();
3483 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003484 uint64_t cgen_var_274;
3485 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_274, 1);
3486 countingStream->write((uint64_t*)&cgen_var_274, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003487 marshal_VkImageViewCreateInfo(countingStream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003488 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003489 uint64_t cgen_var_275 = (uint64_t)(uintptr_t)local_pAllocator;
3490 countingStream->putBe64(cgen_var_275);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003491 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003492 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003493 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003494 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003495 uint64_t cgen_var_276;
3496 countingStream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_276, 1);
3497 countingStream->write((uint64_t*)&cgen_var_276, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003498 }
3499 uint32_t packetSize_vkCreateImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3500 countingStream->rewind();
3501 uint32_t opcode_vkCreateImageView = OP_vkCreateImageView;
3502 stream->write(&opcode_vkCreateImageView, sizeof(uint32_t));
3503 stream->write(&packetSize_vkCreateImageView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003504 uint64_t cgen_var_277;
3505 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_277, 1);
3506 stream->write((uint64_t*)&cgen_var_277, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003507 marshal_VkImageViewCreateInfo(stream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003508 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003509 uint64_t cgen_var_278 = (uint64_t)(uintptr_t)local_pAllocator;
3510 stream->putBe64(cgen_var_278);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003511 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003512 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003513 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003514 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003515 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003516 uint64_t cgen_var_279;
3517 stream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_279, 1);
3518 stream->write((uint64_t*)&cgen_var_279, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003519 stream->setHandleMapping(resources->unwrapMapping());
3520 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003521 uint64_t cgen_var_280;
3522 stream->read((uint64_t*)&cgen_var_280, 8);
3523 stream->handleMapping()->mapHandles_u64_VkImageView(&cgen_var_280, (VkImageView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003524 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003525 VkResult vkCreateImageView_VkResult_return = (VkResult)0;
3526 stream->read(&vkCreateImageView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003527 countingStream->clearPool();
3528 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003529 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003530 return vkCreateImageView_VkResult_return;
3531}
3532
3533void VkEncoder::vkDestroyImageView(
3534 VkDevice device,
3535 VkImageView imageView,
3536 const VkAllocationCallbacks* pAllocator)
3537{
3538 auto stream = mImpl->stream();
3539 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003540 auto resources = mImpl->resources();
3541 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003542 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003543 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003544 VkImageView local_imageView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003545 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003546 local_device = device;
3547 local_imageView = imageView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003548 local_pAllocator = nullptr;
3549 if (pAllocator)
3550 {
3551 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3552 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3553 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003554 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003555 countingStream->rewind();
3556 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003557 uint64_t cgen_var_281;
3558 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_281, 1);
3559 countingStream->write((uint64_t*)&cgen_var_281, 1 * 8);
3560 uint64_t cgen_var_282;
3561 countingStream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_282, 1);
3562 countingStream->write((uint64_t*)&cgen_var_282, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003563 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003564 uint64_t cgen_var_283 = (uint64_t)(uintptr_t)local_pAllocator;
3565 countingStream->putBe64(cgen_var_283);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003566 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003567 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003568 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003569 }
3570 }
3571 uint32_t packetSize_vkDestroyImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3572 countingStream->rewind();
3573 uint32_t opcode_vkDestroyImageView = OP_vkDestroyImageView;
3574 stream->write(&opcode_vkDestroyImageView, sizeof(uint32_t));
3575 stream->write(&packetSize_vkDestroyImageView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003576 uint64_t cgen_var_284;
3577 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_284, 1);
3578 stream->write((uint64_t*)&cgen_var_284, 1 * 8);
3579 uint64_t cgen_var_285;
3580 stream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_285, 1);
3581 stream->write((uint64_t*)&cgen_var_285, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003582 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003583 uint64_t cgen_var_286 = (uint64_t)(uintptr_t)local_pAllocator;
3584 stream->putBe64(cgen_var_286);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003585 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003586 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003587 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003588 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003589 resources->destroyMapping()->mapHandles_VkImageView((VkImageView*)&imageView);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003590}
3591
3592VkResult VkEncoder::vkCreateShaderModule(
3593 VkDevice device,
3594 const VkShaderModuleCreateInfo* pCreateInfo,
3595 const VkAllocationCallbacks* pAllocator,
3596 VkShaderModule* pShaderModule)
3597{
3598 auto stream = mImpl->stream();
3599 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003600 auto resources = mImpl->resources();
3601 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003602 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003603 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003604 VkShaderModuleCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003605 VkAllocationCallbacks* local_pAllocator;
3606 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003607 local_pCreateInfo = nullptr;
3608 if (pCreateInfo)
3609 {
3610 local_pCreateInfo = (VkShaderModuleCreateInfo*)pool->alloc(sizeof(const VkShaderModuleCreateInfo));
3611 deepcopy_VkShaderModuleCreateInfo(pool, pCreateInfo, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
3612 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003613 local_pAllocator = nullptr;
3614 if (pAllocator)
3615 {
3616 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3617 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3618 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003619 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003620 countingStream->rewind();
3621 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003622 uint64_t cgen_var_287;
3623 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_287, 1);
3624 countingStream->write((uint64_t*)&cgen_var_287, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003625 marshal_VkShaderModuleCreateInfo(countingStream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003626 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003627 uint64_t cgen_var_288 = (uint64_t)(uintptr_t)local_pAllocator;
3628 countingStream->putBe64(cgen_var_288);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003629 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003630 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003631 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003632 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003633 uint64_t cgen_var_289;
3634 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_289, 1);
3635 countingStream->write((uint64_t*)&cgen_var_289, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003636 }
3637 uint32_t packetSize_vkCreateShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3638 countingStream->rewind();
3639 uint32_t opcode_vkCreateShaderModule = OP_vkCreateShaderModule;
3640 stream->write(&opcode_vkCreateShaderModule, sizeof(uint32_t));
3641 stream->write(&packetSize_vkCreateShaderModule, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003642 uint64_t cgen_var_290;
3643 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_290, 1);
3644 stream->write((uint64_t*)&cgen_var_290, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003645 marshal_VkShaderModuleCreateInfo(stream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003646 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003647 uint64_t cgen_var_291 = (uint64_t)(uintptr_t)local_pAllocator;
3648 stream->putBe64(cgen_var_291);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003649 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003650 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003651 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003652 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003653 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003654 uint64_t cgen_var_292;
3655 stream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_292, 1);
3656 stream->write((uint64_t*)&cgen_var_292, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003657 stream->setHandleMapping(resources->unwrapMapping());
3658 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003659 uint64_t cgen_var_293;
3660 stream->read((uint64_t*)&cgen_var_293, 8);
3661 stream->handleMapping()->mapHandles_u64_VkShaderModule(&cgen_var_293, (VkShaderModule*)pShaderModule, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003662 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003663 VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
3664 stream->read(&vkCreateShaderModule_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003665 countingStream->clearPool();
3666 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003667 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003668 return vkCreateShaderModule_VkResult_return;
3669}
3670
3671void VkEncoder::vkDestroyShaderModule(
3672 VkDevice device,
3673 VkShaderModule shaderModule,
3674 const VkAllocationCallbacks* pAllocator)
3675{
3676 auto stream = mImpl->stream();
3677 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003678 auto resources = mImpl->resources();
3679 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003680 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003681 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003682 VkShaderModule local_shaderModule;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003683 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003684 local_device = device;
3685 local_shaderModule = shaderModule;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003686 local_pAllocator = nullptr;
3687 if (pAllocator)
3688 {
3689 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3690 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3691 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003692 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003693 countingStream->rewind();
3694 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003695 uint64_t cgen_var_294;
3696 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_294, 1);
3697 countingStream->write((uint64_t*)&cgen_var_294, 1 * 8);
3698 uint64_t cgen_var_295;
3699 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_295, 1);
3700 countingStream->write((uint64_t*)&cgen_var_295, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003701 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003702 uint64_t cgen_var_296 = (uint64_t)(uintptr_t)local_pAllocator;
3703 countingStream->putBe64(cgen_var_296);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003704 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003705 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003706 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003707 }
3708 }
3709 uint32_t packetSize_vkDestroyShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3710 countingStream->rewind();
3711 uint32_t opcode_vkDestroyShaderModule = OP_vkDestroyShaderModule;
3712 stream->write(&opcode_vkDestroyShaderModule, sizeof(uint32_t));
3713 stream->write(&packetSize_vkDestroyShaderModule, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003714 uint64_t cgen_var_297;
3715 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_297, 1);
3716 stream->write((uint64_t*)&cgen_var_297, 1 * 8);
3717 uint64_t cgen_var_298;
3718 stream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_298, 1);
3719 stream->write((uint64_t*)&cgen_var_298, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003720 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003721 uint64_t cgen_var_299 = (uint64_t)(uintptr_t)local_pAllocator;
3722 stream->putBe64(cgen_var_299);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003723 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003724 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003725 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003726 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003727 resources->destroyMapping()->mapHandles_VkShaderModule((VkShaderModule*)&shaderModule);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003728}
3729
3730VkResult VkEncoder::vkCreatePipelineCache(
3731 VkDevice device,
3732 const VkPipelineCacheCreateInfo* pCreateInfo,
3733 const VkAllocationCallbacks* pAllocator,
3734 VkPipelineCache* pPipelineCache)
3735{
3736 auto stream = mImpl->stream();
3737 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003738 auto resources = mImpl->resources();
3739 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003740 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003741 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003742 VkPipelineCacheCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003743 VkAllocationCallbacks* local_pAllocator;
3744 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003745 local_pCreateInfo = nullptr;
3746 if (pCreateInfo)
3747 {
3748 local_pCreateInfo = (VkPipelineCacheCreateInfo*)pool->alloc(sizeof(const VkPipelineCacheCreateInfo));
3749 deepcopy_VkPipelineCacheCreateInfo(pool, pCreateInfo, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
3750 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003751 local_pAllocator = nullptr;
3752 if (pAllocator)
3753 {
3754 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3755 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3756 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003757 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003758 countingStream->rewind();
3759 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003760 uint64_t cgen_var_300;
3761 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_300, 1);
3762 countingStream->write((uint64_t*)&cgen_var_300, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003763 marshal_VkPipelineCacheCreateInfo(countingStream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003764 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003765 uint64_t cgen_var_301 = (uint64_t)(uintptr_t)local_pAllocator;
3766 countingStream->putBe64(cgen_var_301);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003767 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003768 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003769 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003770 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003771 uint64_t cgen_var_302;
3772 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_302, 1);
3773 countingStream->write((uint64_t*)&cgen_var_302, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003774 }
3775 uint32_t packetSize_vkCreatePipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3776 countingStream->rewind();
3777 uint32_t opcode_vkCreatePipelineCache = OP_vkCreatePipelineCache;
3778 stream->write(&opcode_vkCreatePipelineCache, sizeof(uint32_t));
3779 stream->write(&packetSize_vkCreatePipelineCache, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003780 uint64_t cgen_var_303;
3781 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_303, 1);
3782 stream->write((uint64_t*)&cgen_var_303, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003783 marshal_VkPipelineCacheCreateInfo(stream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003784 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003785 uint64_t cgen_var_304 = (uint64_t)(uintptr_t)local_pAllocator;
3786 stream->putBe64(cgen_var_304);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003787 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003788 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003789 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003790 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003791 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003792 uint64_t cgen_var_305;
3793 stream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_305, 1);
3794 stream->write((uint64_t*)&cgen_var_305, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003795 stream->setHandleMapping(resources->unwrapMapping());
3796 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003797 uint64_t cgen_var_306;
3798 stream->read((uint64_t*)&cgen_var_306, 8);
3799 stream->handleMapping()->mapHandles_u64_VkPipelineCache(&cgen_var_306, (VkPipelineCache*)pPipelineCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003800 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003801 VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
3802 stream->read(&vkCreatePipelineCache_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003803 countingStream->clearPool();
3804 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003805 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003806 return vkCreatePipelineCache_VkResult_return;
3807}
3808
3809void VkEncoder::vkDestroyPipelineCache(
3810 VkDevice device,
3811 VkPipelineCache pipelineCache,
3812 const VkAllocationCallbacks* pAllocator)
3813{
3814 auto stream = mImpl->stream();
3815 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003816 auto resources = mImpl->resources();
3817 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003818 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003819 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003820 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003821 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003822 local_device = device;
3823 local_pipelineCache = pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003824 local_pAllocator = nullptr;
3825 if (pAllocator)
3826 {
3827 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3828 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3829 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003830 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003831 countingStream->rewind();
3832 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003833 uint64_t cgen_var_307;
3834 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_307, 1);
3835 countingStream->write((uint64_t*)&cgen_var_307, 1 * 8);
3836 uint64_t cgen_var_308;
3837 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_308, 1);
3838 countingStream->write((uint64_t*)&cgen_var_308, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003839 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003840 uint64_t cgen_var_309 = (uint64_t)(uintptr_t)local_pAllocator;
3841 countingStream->putBe64(cgen_var_309);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003842 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003843 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003844 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003845 }
3846 }
3847 uint32_t packetSize_vkDestroyPipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3848 countingStream->rewind();
3849 uint32_t opcode_vkDestroyPipelineCache = OP_vkDestroyPipelineCache;
3850 stream->write(&opcode_vkDestroyPipelineCache, sizeof(uint32_t));
3851 stream->write(&packetSize_vkDestroyPipelineCache, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003852 uint64_t cgen_var_310;
3853 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_310, 1);
3854 stream->write((uint64_t*)&cgen_var_310, 1 * 8);
3855 uint64_t cgen_var_311;
3856 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_311, 1);
3857 stream->write((uint64_t*)&cgen_var_311, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003858 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003859 uint64_t cgen_var_312 = (uint64_t)(uintptr_t)local_pAllocator;
3860 stream->putBe64(cgen_var_312);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003861 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003862 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003863 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003864 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003865 resources->destroyMapping()->mapHandles_VkPipelineCache((VkPipelineCache*)&pipelineCache);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003866}
3867
3868VkResult VkEncoder::vkGetPipelineCacheData(
3869 VkDevice device,
3870 VkPipelineCache pipelineCache,
3871 size_t* pDataSize,
3872 void* pData)
3873{
3874 auto stream = mImpl->stream();
3875 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003876 auto resources = mImpl->resources();
3877 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003878 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003879 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003880 VkPipelineCache local_pipelineCache;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003881 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003882 local_pipelineCache = pipelineCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003883 countingStream->rewind();
3884 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003885 uint64_t cgen_var_313;
3886 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_313, 1);
3887 countingStream->write((uint64_t*)&cgen_var_313, 1 * 8);
3888 uint64_t cgen_var_314;
3889 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_314, 1);
3890 countingStream->write((uint64_t*)&cgen_var_314, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003891 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003892 uint64_t cgen_var_315 = (uint64_t)(uintptr_t)pDataSize;
3893 countingStream->putBe64(cgen_var_315);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003894 if (pDataSize)
3895 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003896 uint64_t cgen_var_316 = (uint64_t)(*pDataSize);
3897 countingStream->putBe64(cgen_var_316);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003898 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003899 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003900 uint64_t cgen_var_317 = (uint64_t)(uintptr_t)pData;
3901 countingStream->putBe64(cgen_var_317);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003902 if (pData)
3903 {
3904 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
3905 }
3906 }
3907 uint32_t packetSize_vkGetPipelineCacheData = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3908 countingStream->rewind();
3909 uint32_t opcode_vkGetPipelineCacheData = OP_vkGetPipelineCacheData;
3910 stream->write(&opcode_vkGetPipelineCacheData, sizeof(uint32_t));
3911 stream->write(&packetSize_vkGetPipelineCacheData, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003912 uint64_t cgen_var_318;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003913 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_318, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003914 stream->write((uint64_t*)&cgen_var_318, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003915 uint64_t cgen_var_319;
3916 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_319, 1);
3917 stream->write((uint64_t*)&cgen_var_319, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003918 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003919 uint64_t cgen_var_320 = (uint64_t)(uintptr_t)pDataSize;
3920 stream->putBe64(cgen_var_320);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003921 if (pDataSize)
3922 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003923 uint64_t cgen_var_321 = (uint64_t)(*pDataSize);
3924 stream->putBe64(cgen_var_321);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003925 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003926 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003927 uint64_t cgen_var_322 = (uint64_t)(uintptr_t)pData;
3928 stream->putBe64(cgen_var_322);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003929 if (pData)
3930 {
3931 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
3932 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003933 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003934 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003935 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003936 if (pDataSize)
3937 {
3938 if (!(check_pDataSize))
3939 {
3940 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
3941 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003942 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003943 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003944 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003945 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003946 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003947 if (pData)
3948 {
3949 if (!(check_pData))
3950 {
3951 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
3952 }
3953 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
3954 }
3955 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
3956 stream->read(&vkGetPipelineCacheData_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003957 countingStream->clearPool();
3958 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003959 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003960 return vkGetPipelineCacheData_VkResult_return;
3961}
3962
3963VkResult VkEncoder::vkMergePipelineCaches(
3964 VkDevice device,
3965 VkPipelineCache dstCache,
3966 uint32_t srcCacheCount,
3967 const VkPipelineCache* pSrcCaches)
3968{
3969 auto stream = mImpl->stream();
3970 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003971 auto resources = mImpl->resources();
3972 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003973 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003974 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003975 VkPipelineCache local_dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003976 uint32_t local_srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003977 VkPipelineCache* local_pSrcCaches;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003978 local_device = device;
3979 local_dstCache = dstCache;
3980 local_srcCacheCount = srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003981 local_pSrcCaches = nullptr;
3982 if (pSrcCaches)
3983 {
3984 local_pSrcCaches = (VkPipelineCache*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache));
3985 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003986 countingStream->rewind();
3987 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003988 uint64_t cgen_var_326;
3989 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_326, 1);
3990 countingStream->write((uint64_t*)&cgen_var_326, 1 * 8);
3991 uint64_t cgen_var_327;
3992 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_327, 1);
3993 countingStream->write((uint64_t*)&cgen_var_327, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003994 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003995 if (((srcCacheCount)))
3996 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003997 uint64_t* cgen_var_328;
3998 countingStream->alloc((void**)&cgen_var_328, ((srcCacheCount)) * 8);
3999 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_328, ((srcCacheCount)));
4000 countingStream->write((uint64_t*)cgen_var_328, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004001 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004002 }
4003 uint32_t packetSize_vkMergePipelineCaches = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4004 countingStream->rewind();
4005 uint32_t opcode_vkMergePipelineCaches = OP_vkMergePipelineCaches;
4006 stream->write(&opcode_vkMergePipelineCaches, sizeof(uint32_t));
4007 stream->write(&packetSize_vkMergePipelineCaches, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004008 uint64_t cgen_var_329;
4009 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_329, 1);
4010 stream->write((uint64_t*)&cgen_var_329, 1 * 8);
4011 uint64_t cgen_var_330;
4012 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_330, 1);
4013 stream->write((uint64_t*)&cgen_var_330, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004014 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004015 if (((srcCacheCount)))
4016 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004017 uint64_t* cgen_var_331;
4018 stream->alloc((void**)&cgen_var_331, ((srcCacheCount)) * 8);
4019 stream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_331, ((srcCacheCount)));
4020 stream->write((uint64_t*)cgen_var_331, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004021 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004022 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
4023 stream->read(&vkMergePipelineCaches_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004024 countingStream->clearPool();
4025 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004026 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004027 return vkMergePipelineCaches_VkResult_return;
4028}
4029
4030VkResult VkEncoder::vkCreateGraphicsPipelines(
4031 VkDevice device,
4032 VkPipelineCache pipelineCache,
4033 uint32_t createInfoCount,
4034 const VkGraphicsPipelineCreateInfo* pCreateInfos,
4035 const VkAllocationCallbacks* pAllocator,
4036 VkPipeline* pPipelines)
4037{
4038 auto stream = mImpl->stream();
4039 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004040 auto resources = mImpl->resources();
4041 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004042 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004043 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004044 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004045 uint32_t local_createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004046 VkGraphicsPipelineCreateInfo* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004047 VkAllocationCallbacks* local_pAllocator;
4048 local_device = device;
4049 local_pipelineCache = pipelineCache;
4050 local_createInfoCount = createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004051 local_pCreateInfos = nullptr;
4052 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004053 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004054 local_pCreateInfos = (VkGraphicsPipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkGraphicsPipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004055 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4056 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004057 deepcopy_VkGraphicsPipelineCreateInfo(pool, pCreateInfos + i, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004058 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004059 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004060 local_pAllocator = nullptr;
4061 if (pAllocator)
4062 {
4063 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4064 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4065 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004066 local_pAllocator = nullptr;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004067 countingStream->rewind();
4068 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004069 uint64_t cgen_var_332;
4070 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_332, 1);
4071 countingStream->write((uint64_t*)&cgen_var_332, 1 * 8);
4072 uint64_t cgen_var_333;
4073 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_333, 1);
4074 countingStream->write((uint64_t*)&cgen_var_333, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004075 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4076 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4077 {
4078 marshal_VkGraphicsPipelineCreateInfo(countingStream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
4079 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004080 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004081 uint64_t cgen_var_334 = (uint64_t)(uintptr_t)local_pAllocator;
4082 countingStream->putBe64(cgen_var_334);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004083 if (local_pAllocator)
4084 {
4085 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004086 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004087 if (((createInfoCount)))
4088 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004089 uint64_t* cgen_var_335;
4090 countingStream->alloc((void**)&cgen_var_335, ((createInfoCount)) * 8);
4091 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_335, ((createInfoCount)));
4092 countingStream->write((uint64_t*)cgen_var_335, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004093 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004094 }
4095 uint32_t packetSize_vkCreateGraphicsPipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4096 countingStream->rewind();
4097 uint32_t opcode_vkCreateGraphicsPipelines = OP_vkCreateGraphicsPipelines;
4098 stream->write(&opcode_vkCreateGraphicsPipelines, sizeof(uint32_t));
4099 stream->write(&packetSize_vkCreateGraphicsPipelines, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004100 uint64_t cgen_var_336;
4101 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_336, 1);
4102 stream->write((uint64_t*)&cgen_var_336, 1 * 8);
4103 uint64_t cgen_var_337;
4104 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_337, 1);
4105 stream->write((uint64_t*)&cgen_var_337, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004106 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004107 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4108 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004109 marshal_VkGraphicsPipelineCreateInfo(stream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004110 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004111 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004112 uint64_t cgen_var_338 = (uint64_t)(uintptr_t)local_pAllocator;
4113 stream->putBe64(cgen_var_338);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004114 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004115 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004116 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004117 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004118 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004119 if (((createInfoCount)))
4120 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004121 uint64_t* cgen_var_339;
4122 stream->alloc((void**)&cgen_var_339, ((createInfoCount)) * 8);
4123 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_339, ((createInfoCount)));
4124 stream->write((uint64_t*)cgen_var_339, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004125 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004126 stream->setHandleMapping(resources->unwrapMapping());
4127 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004128 if (((createInfoCount)))
4129 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004130 uint64_t* cgen_var_340;
4131 stream->alloc((void**)&cgen_var_340, ((createInfoCount)) * 8);
4132 stream->read((uint64_t*)cgen_var_340, ((createInfoCount)) * 8);
4133 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_340, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004134 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004135 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004136 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
4137 stream->read(&vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004138 countingStream->clearPool();
4139 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004140 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004141 return vkCreateGraphicsPipelines_VkResult_return;
4142}
4143
4144VkResult VkEncoder::vkCreateComputePipelines(
4145 VkDevice device,
4146 VkPipelineCache pipelineCache,
4147 uint32_t createInfoCount,
4148 const VkComputePipelineCreateInfo* pCreateInfos,
4149 const VkAllocationCallbacks* pAllocator,
4150 VkPipeline* pPipelines)
4151{
4152 auto stream = mImpl->stream();
4153 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004154 auto resources = mImpl->resources();
4155 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004156 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004157 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004158 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004159 uint32_t local_createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004160 VkComputePipelineCreateInfo* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004161 VkAllocationCallbacks* local_pAllocator;
4162 local_device = device;
4163 local_pipelineCache = pipelineCache;
4164 local_createInfoCount = createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004165 local_pCreateInfos = nullptr;
4166 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004167 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004168 local_pCreateInfos = (VkComputePipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkComputePipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004169 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4170 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004171 deepcopy_VkComputePipelineCreateInfo(pool, pCreateInfos + i, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004172 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004173 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004174 local_pAllocator = nullptr;
4175 if (pAllocator)
4176 {
4177 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4178 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4179 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004180 local_pAllocator = nullptr;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004181 countingStream->rewind();
4182 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004183 uint64_t cgen_var_341;
4184 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_341, 1);
4185 countingStream->write((uint64_t*)&cgen_var_341, 1 * 8);
4186 uint64_t cgen_var_342;
4187 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_342, 1);
4188 countingStream->write((uint64_t*)&cgen_var_342, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004189 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4190 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4191 {
4192 marshal_VkComputePipelineCreateInfo(countingStream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
4193 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004194 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004195 uint64_t cgen_var_343 = (uint64_t)(uintptr_t)local_pAllocator;
4196 countingStream->putBe64(cgen_var_343);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004197 if (local_pAllocator)
4198 {
4199 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004200 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004201 if (((createInfoCount)))
4202 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004203 uint64_t* cgen_var_344;
4204 countingStream->alloc((void**)&cgen_var_344, ((createInfoCount)) * 8);
4205 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_344, ((createInfoCount)));
4206 countingStream->write((uint64_t*)cgen_var_344, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004207 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004208 }
4209 uint32_t packetSize_vkCreateComputePipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4210 countingStream->rewind();
4211 uint32_t opcode_vkCreateComputePipelines = OP_vkCreateComputePipelines;
4212 stream->write(&opcode_vkCreateComputePipelines, sizeof(uint32_t));
4213 stream->write(&packetSize_vkCreateComputePipelines, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004214 uint64_t cgen_var_345;
4215 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_345, 1);
4216 stream->write((uint64_t*)&cgen_var_345, 1 * 8);
4217 uint64_t cgen_var_346;
4218 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_346, 1);
4219 stream->write((uint64_t*)&cgen_var_346, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004220 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004221 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4222 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004223 marshal_VkComputePipelineCreateInfo(stream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004224 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004225 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004226 uint64_t cgen_var_347 = (uint64_t)(uintptr_t)local_pAllocator;
4227 stream->putBe64(cgen_var_347);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004228 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004229 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004230 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004231 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004232 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004233 if (((createInfoCount)))
4234 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004235 uint64_t* cgen_var_348;
4236 stream->alloc((void**)&cgen_var_348, ((createInfoCount)) * 8);
4237 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_348, ((createInfoCount)));
4238 stream->write((uint64_t*)cgen_var_348, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004239 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004240 stream->setHandleMapping(resources->unwrapMapping());
4241 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004242 if (((createInfoCount)))
4243 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004244 uint64_t* cgen_var_349;
4245 stream->alloc((void**)&cgen_var_349, ((createInfoCount)) * 8);
4246 stream->read((uint64_t*)cgen_var_349, ((createInfoCount)) * 8);
4247 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_349, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004248 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004249 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004250 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
4251 stream->read(&vkCreateComputePipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004252 countingStream->clearPool();
4253 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004254 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004255 return vkCreateComputePipelines_VkResult_return;
4256}
4257
4258void VkEncoder::vkDestroyPipeline(
4259 VkDevice device,
4260 VkPipeline pipeline,
4261 const VkAllocationCallbacks* pAllocator)
4262{
4263 auto stream = mImpl->stream();
4264 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004265 auto resources = mImpl->resources();
4266 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004267 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004268 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004269 VkPipeline local_pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004270 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004271 local_device = device;
4272 local_pipeline = pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004273 local_pAllocator = nullptr;
4274 if (pAllocator)
4275 {
4276 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4277 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4278 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004279 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004280 countingStream->rewind();
4281 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004282 uint64_t cgen_var_350;
4283 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_350, 1);
4284 countingStream->write((uint64_t*)&cgen_var_350, 1 * 8);
4285 uint64_t cgen_var_351;
4286 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_351, 1);
4287 countingStream->write((uint64_t*)&cgen_var_351, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004288 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004289 uint64_t cgen_var_352 = (uint64_t)(uintptr_t)local_pAllocator;
4290 countingStream->putBe64(cgen_var_352);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004291 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004292 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004293 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004294 }
4295 }
4296 uint32_t packetSize_vkDestroyPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4297 countingStream->rewind();
4298 uint32_t opcode_vkDestroyPipeline = OP_vkDestroyPipeline;
4299 stream->write(&opcode_vkDestroyPipeline, sizeof(uint32_t));
4300 stream->write(&packetSize_vkDestroyPipeline, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004301 uint64_t cgen_var_353;
4302 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_353, 1);
4303 stream->write((uint64_t*)&cgen_var_353, 1 * 8);
4304 uint64_t cgen_var_354;
4305 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_354, 1);
4306 stream->write((uint64_t*)&cgen_var_354, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004307 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004308 uint64_t cgen_var_355 = (uint64_t)(uintptr_t)local_pAllocator;
4309 stream->putBe64(cgen_var_355);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004310 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004311 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004312 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004313 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004314 resources->destroyMapping()->mapHandles_VkPipeline((VkPipeline*)&pipeline);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004315}
4316
4317VkResult VkEncoder::vkCreatePipelineLayout(
4318 VkDevice device,
4319 const VkPipelineLayoutCreateInfo* pCreateInfo,
4320 const VkAllocationCallbacks* pAllocator,
4321 VkPipelineLayout* pPipelineLayout)
4322{
4323 auto stream = mImpl->stream();
4324 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004325 auto resources = mImpl->resources();
4326 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004327 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004328 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004329 VkPipelineLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004330 VkAllocationCallbacks* local_pAllocator;
4331 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004332 local_pCreateInfo = nullptr;
4333 if (pCreateInfo)
4334 {
4335 local_pCreateInfo = (VkPipelineLayoutCreateInfo*)pool->alloc(sizeof(const VkPipelineLayoutCreateInfo));
4336 deepcopy_VkPipelineLayoutCreateInfo(pool, pCreateInfo, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
4337 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004338 local_pAllocator = nullptr;
4339 if (pAllocator)
4340 {
4341 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4342 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4343 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004344 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004345 countingStream->rewind();
4346 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004347 uint64_t cgen_var_356;
4348 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_356, 1);
4349 countingStream->write((uint64_t*)&cgen_var_356, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004350 marshal_VkPipelineLayoutCreateInfo(countingStream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004351 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004352 uint64_t cgen_var_357 = (uint64_t)(uintptr_t)local_pAllocator;
4353 countingStream->putBe64(cgen_var_357);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004354 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004355 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004356 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004357 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004358 uint64_t cgen_var_358;
4359 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_358, 1);
4360 countingStream->write((uint64_t*)&cgen_var_358, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004361 }
4362 uint32_t packetSize_vkCreatePipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4363 countingStream->rewind();
4364 uint32_t opcode_vkCreatePipelineLayout = OP_vkCreatePipelineLayout;
4365 stream->write(&opcode_vkCreatePipelineLayout, sizeof(uint32_t));
4366 stream->write(&packetSize_vkCreatePipelineLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004367 uint64_t cgen_var_359;
4368 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_359, 1);
4369 stream->write((uint64_t*)&cgen_var_359, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004370 marshal_VkPipelineLayoutCreateInfo(stream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004371 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004372 uint64_t cgen_var_360 = (uint64_t)(uintptr_t)local_pAllocator;
4373 stream->putBe64(cgen_var_360);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004374 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004375 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004376 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004377 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004378 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004379 uint64_t cgen_var_361;
4380 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_361, 1);
4381 stream->write((uint64_t*)&cgen_var_361, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004382 stream->setHandleMapping(resources->unwrapMapping());
4383 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004384 uint64_t cgen_var_362;
4385 stream->read((uint64_t*)&cgen_var_362, 8);
4386 stream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_362, (VkPipelineLayout*)pPipelineLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004387 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004388 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
4389 stream->read(&vkCreatePipelineLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004390 countingStream->clearPool();
4391 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004392 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004393 return vkCreatePipelineLayout_VkResult_return;
4394}
4395
4396void VkEncoder::vkDestroyPipelineLayout(
4397 VkDevice device,
4398 VkPipelineLayout pipelineLayout,
4399 const VkAllocationCallbacks* pAllocator)
4400{
4401 auto stream = mImpl->stream();
4402 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004403 auto resources = mImpl->resources();
4404 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004405 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004406 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004407 VkPipelineLayout local_pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004408 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004409 local_device = device;
4410 local_pipelineLayout = pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004411 local_pAllocator = nullptr;
4412 if (pAllocator)
4413 {
4414 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4415 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4416 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004417 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004418 countingStream->rewind();
4419 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004420 uint64_t cgen_var_363;
4421 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_363, 1);
4422 countingStream->write((uint64_t*)&cgen_var_363, 1 * 8);
4423 uint64_t cgen_var_364;
4424 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_364, 1);
4425 countingStream->write((uint64_t*)&cgen_var_364, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004426 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004427 uint64_t cgen_var_365 = (uint64_t)(uintptr_t)local_pAllocator;
4428 countingStream->putBe64(cgen_var_365);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004429 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004430 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004431 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004432 }
4433 }
4434 uint32_t packetSize_vkDestroyPipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4435 countingStream->rewind();
4436 uint32_t opcode_vkDestroyPipelineLayout = OP_vkDestroyPipelineLayout;
4437 stream->write(&opcode_vkDestroyPipelineLayout, sizeof(uint32_t));
4438 stream->write(&packetSize_vkDestroyPipelineLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004439 uint64_t cgen_var_366;
4440 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_366, 1);
4441 stream->write((uint64_t*)&cgen_var_366, 1 * 8);
4442 uint64_t cgen_var_367;
4443 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_367, 1);
4444 stream->write((uint64_t*)&cgen_var_367, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004445 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004446 uint64_t cgen_var_368 = (uint64_t)(uintptr_t)local_pAllocator;
4447 stream->putBe64(cgen_var_368);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004448 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004449 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004450 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004451 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004452 resources->destroyMapping()->mapHandles_VkPipelineLayout((VkPipelineLayout*)&pipelineLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004453}
4454
4455VkResult VkEncoder::vkCreateSampler(
4456 VkDevice device,
4457 const VkSamplerCreateInfo* pCreateInfo,
4458 const VkAllocationCallbacks* pAllocator,
4459 VkSampler* pSampler)
4460{
4461 auto stream = mImpl->stream();
4462 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004463 auto resources = mImpl->resources();
4464 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004465 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004466 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004467 VkSamplerCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004468 VkAllocationCallbacks* local_pAllocator;
4469 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004470 local_pCreateInfo = nullptr;
4471 if (pCreateInfo)
4472 {
4473 local_pCreateInfo = (VkSamplerCreateInfo*)pool->alloc(sizeof(const VkSamplerCreateInfo));
4474 deepcopy_VkSamplerCreateInfo(pool, pCreateInfo, (VkSamplerCreateInfo*)(local_pCreateInfo));
4475 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004476 local_pAllocator = nullptr;
4477 if (pAllocator)
4478 {
4479 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4480 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4481 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004482 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004483 countingStream->rewind();
4484 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004485 uint64_t cgen_var_369;
4486 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_369, 1);
4487 countingStream->write((uint64_t*)&cgen_var_369, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004488 marshal_VkSamplerCreateInfo(countingStream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004489 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004490 uint64_t cgen_var_370 = (uint64_t)(uintptr_t)local_pAllocator;
4491 countingStream->putBe64(cgen_var_370);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004492 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004493 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004494 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004495 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004496 uint64_t cgen_var_371;
4497 countingStream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_371, 1);
4498 countingStream->write((uint64_t*)&cgen_var_371, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004499 }
4500 uint32_t packetSize_vkCreateSampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4501 countingStream->rewind();
4502 uint32_t opcode_vkCreateSampler = OP_vkCreateSampler;
4503 stream->write(&opcode_vkCreateSampler, sizeof(uint32_t));
4504 stream->write(&packetSize_vkCreateSampler, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004505 uint64_t cgen_var_372;
4506 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_372, 1);
4507 stream->write((uint64_t*)&cgen_var_372, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004508 marshal_VkSamplerCreateInfo(stream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004509 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004510 uint64_t cgen_var_373 = (uint64_t)(uintptr_t)local_pAllocator;
4511 stream->putBe64(cgen_var_373);
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(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004515 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004516 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004517 uint64_t cgen_var_374;
4518 stream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_374, 1);
4519 stream->write((uint64_t*)&cgen_var_374, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004520 stream->setHandleMapping(resources->unwrapMapping());
4521 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004522 uint64_t cgen_var_375;
4523 stream->read((uint64_t*)&cgen_var_375, 8);
4524 stream->handleMapping()->mapHandles_u64_VkSampler(&cgen_var_375, (VkSampler*)pSampler, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004525 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004526 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
4527 stream->read(&vkCreateSampler_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004528 countingStream->clearPool();
4529 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004530 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004531 return vkCreateSampler_VkResult_return;
4532}
4533
4534void VkEncoder::vkDestroySampler(
4535 VkDevice device,
4536 VkSampler sampler,
4537 const VkAllocationCallbacks* pAllocator)
4538{
4539 auto stream = mImpl->stream();
4540 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004541 auto resources = mImpl->resources();
4542 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004543 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004544 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004545 VkSampler local_sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004546 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004547 local_device = device;
4548 local_sampler = sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004549 local_pAllocator = nullptr;
4550 if (pAllocator)
4551 {
4552 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4553 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4554 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004555 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004556 countingStream->rewind();
4557 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004558 uint64_t cgen_var_376;
4559 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_376, 1);
4560 countingStream->write((uint64_t*)&cgen_var_376, 1 * 8);
4561 uint64_t cgen_var_377;
4562 countingStream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_377, 1);
4563 countingStream->write((uint64_t*)&cgen_var_377, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004564 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004565 uint64_t cgen_var_378 = (uint64_t)(uintptr_t)local_pAllocator;
4566 countingStream->putBe64(cgen_var_378);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004567 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004568 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004569 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004570 }
4571 }
4572 uint32_t packetSize_vkDestroySampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4573 countingStream->rewind();
4574 uint32_t opcode_vkDestroySampler = OP_vkDestroySampler;
4575 stream->write(&opcode_vkDestroySampler, sizeof(uint32_t));
4576 stream->write(&packetSize_vkDestroySampler, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004577 uint64_t cgen_var_379;
4578 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_379, 1);
4579 stream->write((uint64_t*)&cgen_var_379, 1 * 8);
4580 uint64_t cgen_var_380;
4581 stream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_380, 1);
4582 stream->write((uint64_t*)&cgen_var_380, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004583 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004584 uint64_t cgen_var_381 = (uint64_t)(uintptr_t)local_pAllocator;
4585 stream->putBe64(cgen_var_381);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004586 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004587 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004588 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004589 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004590 resources->destroyMapping()->mapHandles_VkSampler((VkSampler*)&sampler);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004591}
4592
4593VkResult VkEncoder::vkCreateDescriptorSetLayout(
4594 VkDevice device,
4595 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
4596 const VkAllocationCallbacks* pAllocator,
4597 VkDescriptorSetLayout* pSetLayout)
4598{
4599 auto stream = mImpl->stream();
4600 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004601 auto resources = mImpl->resources();
4602 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004603 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004604 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004605 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004606 VkAllocationCallbacks* local_pAllocator;
4607 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004608 local_pCreateInfo = nullptr;
4609 if (pCreateInfo)
4610 {
4611 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
4612 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
4613 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004614 local_pAllocator = nullptr;
4615 if (pAllocator)
4616 {
4617 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4618 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4619 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004620 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004621 countingStream->rewind();
4622 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004623 uint64_t cgen_var_382;
4624 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_382, 1);
4625 countingStream->write((uint64_t*)&cgen_var_382, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004626 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004627 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004628 uint64_t cgen_var_383 = (uint64_t)(uintptr_t)local_pAllocator;
4629 countingStream->putBe64(cgen_var_383);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004630 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004631 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004632 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004633 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004634 uint64_t cgen_var_384;
4635 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_384, 1);
4636 countingStream->write((uint64_t*)&cgen_var_384, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004637 }
4638 uint32_t packetSize_vkCreateDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4639 countingStream->rewind();
4640 uint32_t opcode_vkCreateDescriptorSetLayout = OP_vkCreateDescriptorSetLayout;
4641 stream->write(&opcode_vkCreateDescriptorSetLayout, sizeof(uint32_t));
4642 stream->write(&packetSize_vkCreateDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004643 uint64_t cgen_var_385;
4644 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_385, 1);
4645 stream->write((uint64_t*)&cgen_var_385, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004646 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004647 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004648 uint64_t cgen_var_386 = (uint64_t)(uintptr_t)local_pAllocator;
4649 stream->putBe64(cgen_var_386);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004650 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004651 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004652 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004653 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004654 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004655 uint64_t cgen_var_387;
4656 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_387, 1);
4657 stream->write((uint64_t*)&cgen_var_387, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004658 stream->setHandleMapping(resources->unwrapMapping());
4659 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004660 uint64_t cgen_var_388;
4661 stream->read((uint64_t*)&cgen_var_388, 8);
4662 stream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(&cgen_var_388, (VkDescriptorSetLayout*)pSetLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004663 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004664 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
4665 stream->read(&vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004666 countingStream->clearPool();
4667 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004668 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004669 return vkCreateDescriptorSetLayout_VkResult_return;
4670}
4671
4672void VkEncoder::vkDestroyDescriptorSetLayout(
4673 VkDevice device,
4674 VkDescriptorSetLayout descriptorSetLayout,
4675 const VkAllocationCallbacks* pAllocator)
4676{
4677 auto stream = mImpl->stream();
4678 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004679 auto resources = mImpl->resources();
4680 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004681 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004682 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004683 VkDescriptorSetLayout local_descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004684 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004685 local_device = device;
4686 local_descriptorSetLayout = descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004687 local_pAllocator = nullptr;
4688 if (pAllocator)
4689 {
4690 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4691 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4692 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004693 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004694 countingStream->rewind();
4695 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004696 uint64_t cgen_var_389;
4697 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_389, 1);
4698 countingStream->write((uint64_t*)&cgen_var_389, 1 * 8);
4699 uint64_t cgen_var_390;
4700 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_390, 1);
4701 countingStream->write((uint64_t*)&cgen_var_390, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004702 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004703 uint64_t cgen_var_391 = (uint64_t)(uintptr_t)local_pAllocator;
4704 countingStream->putBe64(cgen_var_391);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004705 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004706 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004707 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004708 }
4709 }
4710 uint32_t packetSize_vkDestroyDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4711 countingStream->rewind();
4712 uint32_t opcode_vkDestroyDescriptorSetLayout = OP_vkDestroyDescriptorSetLayout;
4713 stream->write(&opcode_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
4714 stream->write(&packetSize_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004715 uint64_t cgen_var_392;
4716 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_392, 1);
4717 stream->write((uint64_t*)&cgen_var_392, 1 * 8);
4718 uint64_t cgen_var_393;
4719 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_393, 1);
4720 stream->write((uint64_t*)&cgen_var_393, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004721 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004722 uint64_t cgen_var_394 = (uint64_t)(uintptr_t)local_pAllocator;
4723 stream->putBe64(cgen_var_394);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004724 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004725 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004726 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004727 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004728 resources->destroyMapping()->mapHandles_VkDescriptorSetLayout((VkDescriptorSetLayout*)&descriptorSetLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004729}
4730
4731VkResult VkEncoder::vkCreateDescriptorPool(
4732 VkDevice device,
4733 const VkDescriptorPoolCreateInfo* pCreateInfo,
4734 const VkAllocationCallbacks* pAllocator,
4735 VkDescriptorPool* pDescriptorPool)
4736{
4737 auto stream = mImpl->stream();
4738 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004739 auto resources = mImpl->resources();
4740 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004741 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004742 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004743 VkDescriptorPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004744 VkAllocationCallbacks* local_pAllocator;
4745 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004746 local_pCreateInfo = nullptr;
4747 if (pCreateInfo)
4748 {
4749 local_pCreateInfo = (VkDescriptorPoolCreateInfo*)pool->alloc(sizeof(const VkDescriptorPoolCreateInfo));
4750 deepcopy_VkDescriptorPoolCreateInfo(pool, pCreateInfo, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
4751 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004752 local_pAllocator = nullptr;
4753 if (pAllocator)
4754 {
4755 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4756 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4757 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004758 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004759 countingStream->rewind();
4760 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004761 uint64_t cgen_var_395;
4762 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_395, 1);
4763 countingStream->write((uint64_t*)&cgen_var_395, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004764 marshal_VkDescriptorPoolCreateInfo(countingStream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004765 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004766 uint64_t cgen_var_396 = (uint64_t)(uintptr_t)local_pAllocator;
4767 countingStream->putBe64(cgen_var_396);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004768 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004769 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004770 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004771 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004772 uint64_t cgen_var_397;
4773 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_397, 1);
4774 countingStream->write((uint64_t*)&cgen_var_397, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004775 }
4776 uint32_t packetSize_vkCreateDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4777 countingStream->rewind();
4778 uint32_t opcode_vkCreateDescriptorPool = OP_vkCreateDescriptorPool;
4779 stream->write(&opcode_vkCreateDescriptorPool, sizeof(uint32_t));
4780 stream->write(&packetSize_vkCreateDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004781 uint64_t cgen_var_398;
4782 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_398, 1);
4783 stream->write((uint64_t*)&cgen_var_398, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004784 marshal_VkDescriptorPoolCreateInfo(stream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004785 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004786 uint64_t cgen_var_399 = (uint64_t)(uintptr_t)local_pAllocator;
4787 stream->putBe64(cgen_var_399);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004788 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004789 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004790 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004791 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004792 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004793 uint64_t cgen_var_400;
4794 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_400, 1);
4795 stream->write((uint64_t*)&cgen_var_400, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004796 stream->setHandleMapping(resources->unwrapMapping());
4797 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004798 uint64_t cgen_var_401;
4799 stream->read((uint64_t*)&cgen_var_401, 8);
4800 stream->handleMapping()->mapHandles_u64_VkDescriptorPool(&cgen_var_401, (VkDescriptorPool*)pDescriptorPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004801 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004802 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
4803 stream->read(&vkCreateDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004804 countingStream->clearPool();
4805 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004806 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004807 return vkCreateDescriptorPool_VkResult_return;
4808}
4809
4810void VkEncoder::vkDestroyDescriptorPool(
4811 VkDevice device,
4812 VkDescriptorPool descriptorPool,
4813 const VkAllocationCallbacks* pAllocator)
4814{
4815 auto stream = mImpl->stream();
4816 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004817 auto resources = mImpl->resources();
4818 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004819 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004820 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004821 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004822 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004823 local_device = device;
4824 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004825 local_pAllocator = nullptr;
4826 if (pAllocator)
4827 {
4828 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4829 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4830 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004831 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004832 countingStream->rewind();
4833 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004834 uint64_t cgen_var_402;
4835 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_402, 1);
4836 countingStream->write((uint64_t*)&cgen_var_402, 1 * 8);
4837 uint64_t cgen_var_403;
4838 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_403, 1);
4839 countingStream->write((uint64_t*)&cgen_var_403, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004840 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004841 uint64_t cgen_var_404 = (uint64_t)(uintptr_t)local_pAllocator;
4842 countingStream->putBe64(cgen_var_404);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004843 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004844 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004845 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004846 }
4847 }
4848 uint32_t packetSize_vkDestroyDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4849 countingStream->rewind();
4850 uint32_t opcode_vkDestroyDescriptorPool = OP_vkDestroyDescriptorPool;
4851 stream->write(&opcode_vkDestroyDescriptorPool, sizeof(uint32_t));
4852 stream->write(&packetSize_vkDestroyDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004853 uint64_t cgen_var_405;
4854 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_405, 1);
4855 stream->write((uint64_t*)&cgen_var_405, 1 * 8);
4856 uint64_t cgen_var_406;
4857 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_406, 1);
4858 stream->write((uint64_t*)&cgen_var_406, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004859 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004860 uint64_t cgen_var_407 = (uint64_t)(uintptr_t)local_pAllocator;
4861 stream->putBe64(cgen_var_407);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004862 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004863 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004864 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004865 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004866 resources->destroyMapping()->mapHandles_VkDescriptorPool((VkDescriptorPool*)&descriptorPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004867}
4868
4869VkResult VkEncoder::vkResetDescriptorPool(
4870 VkDevice device,
4871 VkDescriptorPool descriptorPool,
4872 VkDescriptorPoolResetFlags flags)
4873{
4874 auto stream = mImpl->stream();
4875 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004876 auto resources = mImpl->resources();
4877 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004878 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004879 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004880 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004881 VkDescriptorPoolResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004882 local_device = device;
4883 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004884 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004885 countingStream->rewind();
4886 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004887 uint64_t cgen_var_408;
4888 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_408, 1);
4889 countingStream->write((uint64_t*)&cgen_var_408, 1 * 8);
4890 uint64_t cgen_var_409;
4891 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_409, 1);
4892 countingStream->write((uint64_t*)&cgen_var_409, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004893 countingStream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004894 }
4895 uint32_t packetSize_vkResetDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4896 countingStream->rewind();
4897 uint32_t opcode_vkResetDescriptorPool = OP_vkResetDescriptorPool;
4898 stream->write(&opcode_vkResetDescriptorPool, sizeof(uint32_t));
4899 stream->write(&packetSize_vkResetDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004900 uint64_t cgen_var_410;
4901 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_410, 1);
4902 stream->write((uint64_t*)&cgen_var_410, 1 * 8);
4903 uint64_t cgen_var_411;
4904 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_411, 1);
4905 stream->write((uint64_t*)&cgen_var_411, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004906 stream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004907 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
4908 stream->read(&vkResetDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004909 countingStream->clearPool();
4910 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004911 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004912 return vkResetDescriptorPool_VkResult_return;
4913}
4914
4915VkResult VkEncoder::vkAllocateDescriptorSets(
4916 VkDevice device,
4917 const VkDescriptorSetAllocateInfo* pAllocateInfo,
4918 VkDescriptorSet* pDescriptorSets)
4919{
4920 auto stream = mImpl->stream();
4921 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004922 auto resources = mImpl->resources();
4923 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004924 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004925 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004926 VkDescriptorSetAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004927 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004928 local_pAllocateInfo = nullptr;
4929 if (pAllocateInfo)
4930 {
4931 local_pAllocateInfo = (VkDescriptorSetAllocateInfo*)pool->alloc(sizeof(const VkDescriptorSetAllocateInfo));
4932 deepcopy_VkDescriptorSetAllocateInfo(pool, pAllocateInfo, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
4933 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004934 countingStream->rewind();
4935 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004936 uint64_t cgen_var_412;
4937 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_412, 1);
4938 countingStream->write((uint64_t*)&cgen_var_412, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004939 marshal_VkDescriptorSetAllocateInfo(countingStream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004940 if (pAllocateInfo->descriptorSetCount)
4941 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004942 uint64_t* cgen_var_413;
4943 countingStream->alloc((void**)&cgen_var_413, pAllocateInfo->descriptorSetCount * 8);
4944 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_413, pAllocateInfo->descriptorSetCount);
4945 countingStream->write((uint64_t*)cgen_var_413, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004946 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004947 }
4948 uint32_t packetSize_vkAllocateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4949 countingStream->rewind();
4950 uint32_t opcode_vkAllocateDescriptorSets = OP_vkAllocateDescriptorSets;
4951 stream->write(&opcode_vkAllocateDescriptorSets, sizeof(uint32_t));
4952 stream->write(&packetSize_vkAllocateDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004953 uint64_t cgen_var_414;
4954 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_414, 1);
4955 stream->write((uint64_t*)&cgen_var_414, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004956 marshal_VkDescriptorSetAllocateInfo(stream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08004957 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004958 if (pAllocateInfo->descriptorSetCount)
4959 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004960 uint64_t* cgen_var_415;
4961 stream->alloc((void**)&cgen_var_415, pAllocateInfo->descriptorSetCount * 8);
4962 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_415, pAllocateInfo->descriptorSetCount);
4963 stream->write((uint64_t*)cgen_var_415, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004964 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004965 stream->setHandleMapping(resources->unwrapMapping());
4966 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004967 if (pAllocateInfo->descriptorSetCount)
4968 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004969 uint64_t* cgen_var_416;
4970 stream->alloc((void**)&cgen_var_416, pAllocateInfo->descriptorSetCount * 8);
4971 stream->read((uint64_t*)cgen_var_416, pAllocateInfo->descriptorSetCount * 8);
4972 stream->handleMapping()->mapHandles_u64_VkDescriptorSet(cgen_var_416, (VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004973 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004974 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004975 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
4976 stream->read(&vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004977 countingStream->clearPool();
4978 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004979 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004980 return vkAllocateDescriptorSets_VkResult_return;
4981}
4982
4983VkResult VkEncoder::vkFreeDescriptorSets(
4984 VkDevice device,
4985 VkDescriptorPool descriptorPool,
4986 uint32_t descriptorSetCount,
4987 const VkDescriptorSet* pDescriptorSets)
4988{
4989 auto stream = mImpl->stream();
4990 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004991 auto resources = mImpl->resources();
4992 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004993 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004994 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004995 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004996 uint32_t local_descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004997 VkDescriptorSet* local_pDescriptorSets;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004998 local_device = device;
4999 local_descriptorPool = descriptorPool;
5000 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005001 local_pDescriptorSets = nullptr;
5002 if (pDescriptorSets)
5003 {
5004 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
5005 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005006 countingStream->rewind();
5007 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005008 uint64_t cgen_var_417;
5009 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_417, 1);
5010 countingStream->write((uint64_t*)&cgen_var_417, 1 * 8);
5011 uint64_t cgen_var_418;
5012 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_418, 1);
5013 countingStream->write((uint64_t*)&cgen_var_418, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005014 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005015 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005016 uint64_t cgen_var_419 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5017 countingStream->putBe64(cgen_var_419);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005018 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005019 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005020 if (((descriptorSetCount)))
5021 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005022 uint64_t* cgen_var_420;
5023 countingStream->alloc((void**)&cgen_var_420, ((descriptorSetCount)) * 8);
5024 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_420, ((descriptorSetCount)));
5025 countingStream->write((uint64_t*)cgen_var_420, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005026 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005027 }
5028 }
5029 uint32_t packetSize_vkFreeDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5030 countingStream->rewind();
5031 uint32_t opcode_vkFreeDescriptorSets = OP_vkFreeDescriptorSets;
5032 stream->write(&opcode_vkFreeDescriptorSets, sizeof(uint32_t));
5033 stream->write(&packetSize_vkFreeDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005034 uint64_t cgen_var_421;
5035 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_421, 1);
5036 stream->write((uint64_t*)&cgen_var_421, 1 * 8);
5037 uint64_t cgen_var_422;
5038 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_422, 1);
5039 stream->write((uint64_t*)&cgen_var_422, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005040 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005041 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005042 uint64_t cgen_var_423 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5043 stream->putBe64(cgen_var_423);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005044 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005045 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005046 if (((descriptorSetCount)))
5047 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005048 uint64_t* cgen_var_424;
5049 stream->alloc((void**)&cgen_var_424, ((descriptorSetCount)) * 8);
5050 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_424, ((descriptorSetCount)));
5051 stream->write((uint64_t*)cgen_var_424, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005052 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005053 }
5054 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
5055 stream->read(&vkFreeDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005056 countingStream->clearPool();
5057 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005058 pool->freeAll();
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08005059 if (pDescriptorSets)
5060 {
5061 resources->destroyMapping()->mapHandles_VkDescriptorSet((VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)));
5062 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005063 return vkFreeDescriptorSets_VkResult_return;
5064}
5065
5066void VkEncoder::vkUpdateDescriptorSets(
5067 VkDevice device,
5068 uint32_t descriptorWriteCount,
5069 const VkWriteDescriptorSet* pDescriptorWrites,
5070 uint32_t descriptorCopyCount,
5071 const VkCopyDescriptorSet* pDescriptorCopies)
5072{
5073 auto stream = mImpl->stream();
5074 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005075 auto resources = mImpl->resources();
5076 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005077 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005078 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005079 uint32_t local_descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005080 VkWriteDescriptorSet* local_pDescriptorWrites;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005081 uint32_t local_descriptorCopyCount;
5082 VkCopyDescriptorSet* local_pDescriptorCopies;
5083 local_device = device;
5084 local_descriptorWriteCount = descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005085 local_pDescriptorWrites = nullptr;
5086 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005087 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005088 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005089 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5090 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005091 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005092 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005093 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005094 local_descriptorCopyCount = descriptorCopyCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005095 local_pDescriptorCopies = nullptr;
5096 if (pDescriptorCopies)
5097 {
5098 local_pDescriptorCopies = (VkCopyDescriptorSet*)pool->alloc(((descriptorCopyCount)) * sizeof(const VkCopyDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005099 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5100 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005101 deepcopy_VkCopyDescriptorSet(pool, pDescriptorCopies + i, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
5102 }
5103 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005104 countingStream->rewind();
5105 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005106 uint64_t cgen_var_425;
5107 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_425, 1);
5108 countingStream->write((uint64_t*)&cgen_var_425, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005109 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
5110 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5111 {
5112 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
5113 }
5114 countingStream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
5115 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5116 {
5117 marshal_VkCopyDescriptorSet(countingStream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005118 }
5119 }
5120 uint32_t packetSize_vkUpdateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5121 countingStream->rewind();
5122 uint32_t opcode_vkUpdateDescriptorSets = OP_vkUpdateDescriptorSets;
5123 stream->write(&opcode_vkUpdateDescriptorSets, sizeof(uint32_t));
5124 stream->write(&packetSize_vkUpdateDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005125 uint64_t cgen_var_426;
5126 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_426, 1);
5127 stream->write((uint64_t*)&cgen_var_426, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005128 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005129 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5130 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005131 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005132 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005133 stream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005134 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5135 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005136 marshal_VkCopyDescriptorSet(stream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005137 }
5138}
5139
5140VkResult VkEncoder::vkCreateFramebuffer(
5141 VkDevice device,
5142 const VkFramebufferCreateInfo* pCreateInfo,
5143 const VkAllocationCallbacks* pAllocator,
5144 VkFramebuffer* pFramebuffer)
5145{
5146 auto stream = mImpl->stream();
5147 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005148 auto resources = mImpl->resources();
5149 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005150 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005151 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005152 VkFramebufferCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005153 VkAllocationCallbacks* local_pAllocator;
5154 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005155 local_pCreateInfo = nullptr;
5156 if (pCreateInfo)
5157 {
5158 local_pCreateInfo = (VkFramebufferCreateInfo*)pool->alloc(sizeof(const VkFramebufferCreateInfo));
5159 deepcopy_VkFramebufferCreateInfo(pool, pCreateInfo, (VkFramebufferCreateInfo*)(local_pCreateInfo));
5160 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005161 local_pAllocator = nullptr;
5162 if (pAllocator)
5163 {
5164 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5165 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5166 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005167 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005168 countingStream->rewind();
5169 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005170 uint64_t cgen_var_427;
5171 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_427, 1);
5172 countingStream->write((uint64_t*)&cgen_var_427, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005173 marshal_VkFramebufferCreateInfo(countingStream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005174 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005175 uint64_t cgen_var_428 = (uint64_t)(uintptr_t)local_pAllocator;
5176 countingStream->putBe64(cgen_var_428);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005177 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005178 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005179 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005180 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005181 uint64_t cgen_var_429;
5182 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_429, 1);
5183 countingStream->write((uint64_t*)&cgen_var_429, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005184 }
5185 uint32_t packetSize_vkCreateFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5186 countingStream->rewind();
5187 uint32_t opcode_vkCreateFramebuffer = OP_vkCreateFramebuffer;
5188 stream->write(&opcode_vkCreateFramebuffer, sizeof(uint32_t));
5189 stream->write(&packetSize_vkCreateFramebuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005190 uint64_t cgen_var_430;
5191 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_430, 1);
5192 stream->write((uint64_t*)&cgen_var_430, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005193 marshal_VkFramebufferCreateInfo(stream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005194 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005195 uint64_t cgen_var_431 = (uint64_t)(uintptr_t)local_pAllocator;
5196 stream->putBe64(cgen_var_431);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005197 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005198 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005199 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005200 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005201 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005202 uint64_t cgen_var_432;
5203 stream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_432, 1);
5204 stream->write((uint64_t*)&cgen_var_432, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005205 stream->setHandleMapping(resources->unwrapMapping());
5206 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005207 uint64_t cgen_var_433;
5208 stream->read((uint64_t*)&cgen_var_433, 8);
5209 stream->handleMapping()->mapHandles_u64_VkFramebuffer(&cgen_var_433, (VkFramebuffer*)pFramebuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005210 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005211 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
5212 stream->read(&vkCreateFramebuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005213 countingStream->clearPool();
5214 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005215 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005216 return vkCreateFramebuffer_VkResult_return;
5217}
5218
5219void VkEncoder::vkDestroyFramebuffer(
5220 VkDevice device,
5221 VkFramebuffer framebuffer,
5222 const VkAllocationCallbacks* pAllocator)
5223{
5224 auto stream = mImpl->stream();
5225 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005226 auto resources = mImpl->resources();
5227 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005228 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005229 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005230 VkFramebuffer local_framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005231 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005232 local_device = device;
5233 local_framebuffer = framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005234 local_pAllocator = nullptr;
5235 if (pAllocator)
5236 {
5237 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5238 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5239 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005240 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005241 countingStream->rewind();
5242 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005243 uint64_t cgen_var_434;
5244 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_434, 1);
5245 countingStream->write((uint64_t*)&cgen_var_434, 1 * 8);
5246 uint64_t cgen_var_435;
5247 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_435, 1);
5248 countingStream->write((uint64_t*)&cgen_var_435, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005249 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005250 uint64_t cgen_var_436 = (uint64_t)(uintptr_t)local_pAllocator;
5251 countingStream->putBe64(cgen_var_436);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005252 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005253 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005254 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005255 }
5256 }
5257 uint32_t packetSize_vkDestroyFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5258 countingStream->rewind();
5259 uint32_t opcode_vkDestroyFramebuffer = OP_vkDestroyFramebuffer;
5260 stream->write(&opcode_vkDestroyFramebuffer, sizeof(uint32_t));
5261 stream->write(&packetSize_vkDestroyFramebuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005262 uint64_t cgen_var_437;
5263 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_437, 1);
5264 stream->write((uint64_t*)&cgen_var_437, 1 * 8);
5265 uint64_t cgen_var_438;
5266 stream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_438, 1);
5267 stream->write((uint64_t*)&cgen_var_438, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005268 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005269 uint64_t cgen_var_439 = (uint64_t)(uintptr_t)local_pAllocator;
5270 stream->putBe64(cgen_var_439);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005271 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005272 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005273 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005274 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005275 resources->destroyMapping()->mapHandles_VkFramebuffer((VkFramebuffer*)&framebuffer);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005276}
5277
5278VkResult VkEncoder::vkCreateRenderPass(
5279 VkDevice device,
5280 const VkRenderPassCreateInfo* pCreateInfo,
5281 const VkAllocationCallbacks* pAllocator,
5282 VkRenderPass* pRenderPass)
5283{
5284 auto stream = mImpl->stream();
5285 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005286 auto resources = mImpl->resources();
5287 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005288 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005289 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005290 VkRenderPassCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005291 VkAllocationCallbacks* local_pAllocator;
5292 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005293 local_pCreateInfo = nullptr;
5294 if (pCreateInfo)
5295 {
5296 local_pCreateInfo = (VkRenderPassCreateInfo*)pool->alloc(sizeof(const VkRenderPassCreateInfo));
5297 deepcopy_VkRenderPassCreateInfo(pool, pCreateInfo, (VkRenderPassCreateInfo*)(local_pCreateInfo));
5298 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005299 local_pAllocator = nullptr;
5300 if (pAllocator)
5301 {
5302 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5303 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5304 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005305 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005306 countingStream->rewind();
5307 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005308 uint64_t cgen_var_440;
5309 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_440, 1);
5310 countingStream->write((uint64_t*)&cgen_var_440, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005311 marshal_VkRenderPassCreateInfo(countingStream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005312 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005313 uint64_t cgen_var_441 = (uint64_t)(uintptr_t)local_pAllocator;
5314 countingStream->putBe64(cgen_var_441);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005315 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005316 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005317 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005318 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005319 uint64_t cgen_var_442;
5320 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_442, 1);
5321 countingStream->write((uint64_t*)&cgen_var_442, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005322 }
5323 uint32_t packetSize_vkCreateRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5324 countingStream->rewind();
5325 uint32_t opcode_vkCreateRenderPass = OP_vkCreateRenderPass;
5326 stream->write(&opcode_vkCreateRenderPass, sizeof(uint32_t));
5327 stream->write(&packetSize_vkCreateRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005328 uint64_t cgen_var_443;
5329 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_443, 1);
5330 stream->write((uint64_t*)&cgen_var_443, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005331 marshal_VkRenderPassCreateInfo(stream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005332 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005333 uint64_t cgen_var_444 = (uint64_t)(uintptr_t)local_pAllocator;
5334 stream->putBe64(cgen_var_444);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005335 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005336 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005337 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005338 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005339 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005340 uint64_t cgen_var_445;
5341 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_445, 1);
5342 stream->write((uint64_t*)&cgen_var_445, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005343 stream->setHandleMapping(resources->unwrapMapping());
5344 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005345 uint64_t cgen_var_446;
5346 stream->read((uint64_t*)&cgen_var_446, 8);
5347 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_446, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005348 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005349 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
5350 stream->read(&vkCreateRenderPass_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005351 countingStream->clearPool();
5352 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005353 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005354 return vkCreateRenderPass_VkResult_return;
5355}
5356
5357void VkEncoder::vkDestroyRenderPass(
5358 VkDevice device,
5359 VkRenderPass renderPass,
5360 const VkAllocationCallbacks* pAllocator)
5361{
5362 auto stream = mImpl->stream();
5363 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005364 auto resources = mImpl->resources();
5365 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005366 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005367 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005368 VkRenderPass local_renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005369 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005370 local_device = device;
5371 local_renderPass = renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005372 local_pAllocator = nullptr;
5373 if (pAllocator)
5374 {
5375 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5376 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5377 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005378 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005379 countingStream->rewind();
5380 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005381 uint64_t cgen_var_447;
5382 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_447, 1);
5383 countingStream->write((uint64_t*)&cgen_var_447, 1 * 8);
5384 uint64_t cgen_var_448;
5385 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_448, 1);
5386 countingStream->write((uint64_t*)&cgen_var_448, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005387 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005388 uint64_t cgen_var_449 = (uint64_t)(uintptr_t)local_pAllocator;
5389 countingStream->putBe64(cgen_var_449);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005390 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005391 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005392 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005393 }
5394 }
5395 uint32_t packetSize_vkDestroyRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5396 countingStream->rewind();
5397 uint32_t opcode_vkDestroyRenderPass = OP_vkDestroyRenderPass;
5398 stream->write(&opcode_vkDestroyRenderPass, sizeof(uint32_t));
5399 stream->write(&packetSize_vkDestroyRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005400 uint64_t cgen_var_450;
5401 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_450, 1);
5402 stream->write((uint64_t*)&cgen_var_450, 1 * 8);
5403 uint64_t cgen_var_451;
5404 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_451, 1);
5405 stream->write((uint64_t*)&cgen_var_451, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005406 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005407 uint64_t cgen_var_452 = (uint64_t)(uintptr_t)local_pAllocator;
5408 stream->putBe64(cgen_var_452);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005409 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005410 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005411 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005412 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005413 resources->destroyMapping()->mapHandles_VkRenderPass((VkRenderPass*)&renderPass);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005414}
5415
5416void VkEncoder::vkGetRenderAreaGranularity(
5417 VkDevice device,
5418 VkRenderPass renderPass,
5419 VkExtent2D* pGranularity)
5420{
5421 auto stream = mImpl->stream();
5422 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005423 auto resources = mImpl->resources();
5424 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005425 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005426 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005427 VkRenderPass local_renderPass;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005428 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005429 local_renderPass = renderPass;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005430 countingStream->rewind();
5431 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005432 uint64_t cgen_var_453;
5433 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_453, 1);
5434 countingStream->write((uint64_t*)&cgen_var_453, 1 * 8);
5435 uint64_t cgen_var_454;
5436 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_454, 1);
5437 countingStream->write((uint64_t*)&cgen_var_454, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005438 marshal_VkExtent2D(countingStream, (VkExtent2D*)(pGranularity));
5439 }
5440 uint32_t packetSize_vkGetRenderAreaGranularity = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5441 countingStream->rewind();
5442 uint32_t opcode_vkGetRenderAreaGranularity = OP_vkGetRenderAreaGranularity;
5443 stream->write(&opcode_vkGetRenderAreaGranularity, sizeof(uint32_t));
5444 stream->write(&packetSize_vkGetRenderAreaGranularity, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005445 uint64_t cgen_var_455;
5446 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_455, 1);
5447 stream->write((uint64_t*)&cgen_var_455, 1 * 8);
5448 uint64_t cgen_var_456;
5449 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_456, 1);
5450 stream->write((uint64_t*)&cgen_var_456, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005451 marshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
5452 unmarshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
5453}
5454
5455VkResult VkEncoder::vkCreateCommandPool(
5456 VkDevice device,
5457 const VkCommandPoolCreateInfo* pCreateInfo,
5458 const VkAllocationCallbacks* pAllocator,
5459 VkCommandPool* pCommandPool)
5460{
5461 auto stream = mImpl->stream();
5462 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005463 auto resources = mImpl->resources();
5464 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005465 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005466 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005467 VkCommandPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005468 VkAllocationCallbacks* local_pAllocator;
5469 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005470 local_pCreateInfo = nullptr;
5471 if (pCreateInfo)
5472 {
5473 local_pCreateInfo = (VkCommandPoolCreateInfo*)pool->alloc(sizeof(const VkCommandPoolCreateInfo));
5474 deepcopy_VkCommandPoolCreateInfo(pool, pCreateInfo, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
5475 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005476 local_pAllocator = nullptr;
5477 if (pAllocator)
5478 {
5479 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5480 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5481 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005482 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005483 countingStream->rewind();
5484 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005485 uint64_t cgen_var_457;
5486 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_457, 1);
5487 countingStream->write((uint64_t*)&cgen_var_457, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005488 marshal_VkCommandPoolCreateInfo(countingStream, (VkCommandPoolCreateInfo*)(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_458 = (uint64_t)(uintptr_t)local_pAllocator;
5491 countingStream->putBe64(cgen_var_458);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005492 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005493 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005494 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005495 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005496 uint64_t cgen_var_459;
5497 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_459, 1);
5498 countingStream->write((uint64_t*)&cgen_var_459, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005499 }
5500 uint32_t packetSize_vkCreateCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5501 countingStream->rewind();
5502 uint32_t opcode_vkCreateCommandPool = OP_vkCreateCommandPool;
5503 stream->write(&opcode_vkCreateCommandPool, sizeof(uint32_t));
5504 stream->write(&packetSize_vkCreateCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005505 uint64_t cgen_var_460;
5506 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_460, 1);
5507 stream->write((uint64_t*)&cgen_var_460, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005508 marshal_VkCommandPoolCreateInfo(stream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005509 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005510 uint64_t cgen_var_461 = (uint64_t)(uintptr_t)local_pAllocator;
5511 stream->putBe64(cgen_var_461);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005512 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005513 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005514 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005515 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005516 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005517 uint64_t cgen_var_462;
5518 stream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_462, 1);
5519 stream->write((uint64_t*)&cgen_var_462, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005520 stream->setHandleMapping(resources->unwrapMapping());
5521 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005522 uint64_t cgen_var_463;
5523 stream->read((uint64_t*)&cgen_var_463, 8);
5524 stream->handleMapping()->mapHandles_u64_VkCommandPool(&cgen_var_463, (VkCommandPool*)pCommandPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005525 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005526 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
5527 stream->read(&vkCreateCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005528 countingStream->clearPool();
5529 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005530 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005531 return vkCreateCommandPool_VkResult_return;
5532}
5533
5534void VkEncoder::vkDestroyCommandPool(
5535 VkDevice device,
5536 VkCommandPool commandPool,
5537 const VkAllocationCallbacks* pAllocator)
5538{
5539 auto stream = mImpl->stream();
5540 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005541 auto resources = mImpl->resources();
5542 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005543 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005544 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005545 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005546 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005547 local_device = device;
5548 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005549 local_pAllocator = nullptr;
5550 if (pAllocator)
5551 {
5552 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5553 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5554 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005555 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005556 countingStream->rewind();
5557 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005558 uint64_t cgen_var_464;
5559 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_464, 1);
5560 countingStream->write((uint64_t*)&cgen_var_464, 1 * 8);
5561 uint64_t cgen_var_465;
5562 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_465, 1);
5563 countingStream->write((uint64_t*)&cgen_var_465, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005564 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005565 uint64_t cgen_var_466 = (uint64_t)(uintptr_t)local_pAllocator;
5566 countingStream->putBe64(cgen_var_466);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005567 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005568 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005569 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005570 }
5571 }
5572 uint32_t packetSize_vkDestroyCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5573 countingStream->rewind();
5574 uint32_t opcode_vkDestroyCommandPool = OP_vkDestroyCommandPool;
5575 stream->write(&opcode_vkDestroyCommandPool, sizeof(uint32_t));
5576 stream->write(&packetSize_vkDestroyCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005577 uint64_t cgen_var_467;
5578 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_467, 1);
5579 stream->write((uint64_t*)&cgen_var_467, 1 * 8);
5580 uint64_t cgen_var_468;
5581 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_468, 1);
5582 stream->write((uint64_t*)&cgen_var_468, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005583 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005584 uint64_t cgen_var_469 = (uint64_t)(uintptr_t)local_pAllocator;
5585 stream->putBe64(cgen_var_469);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005586 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005587 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005588 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005589 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005590 resources->destroyMapping()->mapHandles_VkCommandPool((VkCommandPool*)&commandPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005591}
5592
5593VkResult VkEncoder::vkResetCommandPool(
5594 VkDevice device,
5595 VkCommandPool commandPool,
5596 VkCommandPoolResetFlags flags)
5597{
5598 auto stream = mImpl->stream();
5599 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005600 auto resources = mImpl->resources();
5601 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005602 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005603 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005604 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005605 VkCommandPoolResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005606 local_device = device;
5607 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005608 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005609 countingStream->rewind();
5610 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005611 uint64_t cgen_var_470;
5612 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_470, 1);
5613 countingStream->write((uint64_t*)&cgen_var_470, 1 * 8);
5614 uint64_t cgen_var_471;
5615 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_471, 1);
5616 countingStream->write((uint64_t*)&cgen_var_471, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005617 countingStream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005618 }
5619 uint32_t packetSize_vkResetCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5620 countingStream->rewind();
5621 uint32_t opcode_vkResetCommandPool = OP_vkResetCommandPool;
5622 stream->write(&opcode_vkResetCommandPool, sizeof(uint32_t));
5623 stream->write(&packetSize_vkResetCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005624 uint64_t cgen_var_472;
5625 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_472, 1);
5626 stream->write((uint64_t*)&cgen_var_472, 1 * 8);
5627 uint64_t cgen_var_473;
5628 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_473, 1);
5629 stream->write((uint64_t*)&cgen_var_473, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005630 stream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005631 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
5632 stream->read(&vkResetCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005633 countingStream->clearPool();
5634 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005635 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005636 return vkResetCommandPool_VkResult_return;
5637}
5638
5639VkResult VkEncoder::vkAllocateCommandBuffers(
5640 VkDevice device,
5641 const VkCommandBufferAllocateInfo* pAllocateInfo,
5642 VkCommandBuffer* pCommandBuffers)
5643{
5644 auto stream = mImpl->stream();
5645 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005646 auto resources = mImpl->resources();
5647 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005648 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005649 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005650 VkCommandBufferAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005651 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005652 local_pAllocateInfo = nullptr;
5653 if (pAllocateInfo)
5654 {
5655 local_pAllocateInfo = (VkCommandBufferAllocateInfo*)pool->alloc(sizeof(const VkCommandBufferAllocateInfo));
5656 deepcopy_VkCommandBufferAllocateInfo(pool, pAllocateInfo, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
5657 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005658 countingStream->rewind();
5659 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005660 uint64_t cgen_var_474;
5661 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_474, 1);
5662 countingStream->write((uint64_t*)&cgen_var_474, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005663 marshal_VkCommandBufferAllocateInfo(countingStream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005664 if (pAllocateInfo->commandBufferCount)
5665 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005666 uint64_t* cgen_var_475;
5667 countingStream->alloc((void**)&cgen_var_475, pAllocateInfo->commandBufferCount * 8);
5668 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_475, pAllocateInfo->commandBufferCount);
5669 countingStream->write((uint64_t*)cgen_var_475, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005670 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005671 }
5672 uint32_t packetSize_vkAllocateCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5673 countingStream->rewind();
5674 uint32_t opcode_vkAllocateCommandBuffers = OP_vkAllocateCommandBuffers;
5675 stream->write(&opcode_vkAllocateCommandBuffers, sizeof(uint32_t));
5676 stream->write(&packetSize_vkAllocateCommandBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005677 uint64_t cgen_var_476;
5678 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_476, 1);
5679 stream->write((uint64_t*)&cgen_var_476, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005680 marshal_VkCommandBufferAllocateInfo(stream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08005681 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08005682 if (pAllocateInfo->commandBufferCount)
5683 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005684 uint64_t* cgen_var_477;
5685 stream->alloc((void**)&cgen_var_477, pAllocateInfo->commandBufferCount * 8);
5686 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_477, pAllocateInfo->commandBufferCount);
5687 stream->write((uint64_t*)cgen_var_477, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005688 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005689 stream->setHandleMapping(resources->unwrapMapping());
5690 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08005691 if (pAllocateInfo->commandBufferCount)
5692 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005693 uint64_t* cgen_var_478;
5694 stream->alloc((void**)&cgen_var_478, pAllocateInfo->commandBufferCount * 8);
5695 stream->read((uint64_t*)cgen_var_478, pAllocateInfo->commandBufferCount * 8);
5696 stream->handleMapping()->mapHandles_u64_VkCommandBuffer(cgen_var_478, (VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005697 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005698 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005699 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
5700 stream->read(&vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005701 countingStream->clearPool();
5702 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005703 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005704 return vkAllocateCommandBuffers_VkResult_return;
5705}
5706
5707void VkEncoder::vkFreeCommandBuffers(
5708 VkDevice device,
5709 VkCommandPool commandPool,
5710 uint32_t commandBufferCount,
5711 const VkCommandBuffer* pCommandBuffers)
5712{
5713 auto stream = mImpl->stream();
5714 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005715 auto resources = mImpl->resources();
5716 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005717 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005718 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005719 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005720 uint32_t local_commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005721 VkCommandBuffer* local_pCommandBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005722 local_device = device;
5723 local_commandPool = commandPool;
5724 local_commandBufferCount = commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005725 local_pCommandBuffers = nullptr;
5726 if (pCommandBuffers)
5727 {
5728 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
5729 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005730 countingStream->rewind();
5731 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005732 uint64_t cgen_var_479;
5733 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_479, 1);
5734 countingStream->write((uint64_t*)&cgen_var_479, 1 * 8);
5735 uint64_t cgen_var_480;
5736 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_480, 1);
5737 countingStream->write((uint64_t*)&cgen_var_480, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005738 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005739 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005740 uint64_t cgen_var_481 = (uint64_t)(uintptr_t)local_pCommandBuffers;
5741 countingStream->putBe64(cgen_var_481);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005742 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005743 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005744 if (((commandBufferCount)))
5745 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005746 uint64_t* cgen_var_482;
5747 countingStream->alloc((void**)&cgen_var_482, ((commandBufferCount)) * 8);
5748 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_482, ((commandBufferCount)));
5749 countingStream->write((uint64_t*)cgen_var_482, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005750 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005751 }
5752 }
5753 uint32_t packetSize_vkFreeCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5754 countingStream->rewind();
5755 uint32_t opcode_vkFreeCommandBuffers = OP_vkFreeCommandBuffers;
5756 stream->write(&opcode_vkFreeCommandBuffers, sizeof(uint32_t));
5757 stream->write(&packetSize_vkFreeCommandBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005758 uint64_t cgen_var_483;
5759 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_483, 1);
5760 stream->write((uint64_t*)&cgen_var_483, 1 * 8);
5761 uint64_t cgen_var_484;
5762 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_484, 1);
5763 stream->write((uint64_t*)&cgen_var_484, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005764 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005765 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005766 uint64_t cgen_var_485 = (uint64_t)(uintptr_t)local_pCommandBuffers;
5767 stream->putBe64(cgen_var_485);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005768 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005769 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005770 if (((commandBufferCount)))
5771 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005772 uint64_t* cgen_var_486;
5773 stream->alloc((void**)&cgen_var_486, ((commandBufferCount)) * 8);
5774 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_486, ((commandBufferCount)));
5775 stream->write((uint64_t*)cgen_var_486, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005776 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005777 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005778 if (pCommandBuffers)
5779 {
5780 resources->destroyMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)));
5781 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005782}
5783
5784VkResult VkEncoder::vkBeginCommandBuffer(
5785 VkCommandBuffer commandBuffer,
5786 const VkCommandBufferBeginInfo* pBeginInfo)
5787{
5788 auto stream = mImpl->stream();
5789 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005790 auto resources = mImpl->resources();
5791 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005792 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005793 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005794 VkCommandBufferBeginInfo* local_pBeginInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005795 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005796 local_pBeginInfo = nullptr;
5797 if (pBeginInfo)
5798 {
5799 local_pBeginInfo = (VkCommandBufferBeginInfo*)pool->alloc(sizeof(const VkCommandBufferBeginInfo));
5800 deepcopy_VkCommandBufferBeginInfo(pool, pBeginInfo, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
5801 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005802 countingStream->rewind();
5803 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005804 uint64_t cgen_var_487;
5805 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_487, 1);
5806 countingStream->write((uint64_t*)&cgen_var_487, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005807 marshal_VkCommandBufferBeginInfo(countingStream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005808 }
5809 uint32_t packetSize_vkBeginCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5810 countingStream->rewind();
5811 uint32_t opcode_vkBeginCommandBuffer = OP_vkBeginCommandBuffer;
5812 stream->write(&opcode_vkBeginCommandBuffer, sizeof(uint32_t));
5813 stream->write(&packetSize_vkBeginCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005814 uint64_t cgen_var_488;
5815 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_488, 1);
5816 stream->write((uint64_t*)&cgen_var_488, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005817 marshal_VkCommandBufferBeginInfo(stream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005818 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
5819 stream->read(&vkBeginCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005820 countingStream->clearPool();
5821 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005822 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005823 return vkBeginCommandBuffer_VkResult_return;
5824}
5825
5826VkResult VkEncoder::vkEndCommandBuffer(
5827 VkCommandBuffer commandBuffer)
5828{
5829 auto stream = mImpl->stream();
5830 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005831 auto resources = mImpl->resources();
5832 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005833 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005834 VkCommandBuffer local_commandBuffer;
5835 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005836 countingStream->rewind();
5837 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005838 uint64_t cgen_var_489;
5839 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_489, 1);
5840 countingStream->write((uint64_t*)&cgen_var_489, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005841 }
5842 uint32_t packetSize_vkEndCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5843 countingStream->rewind();
5844 uint32_t opcode_vkEndCommandBuffer = OP_vkEndCommandBuffer;
5845 stream->write(&opcode_vkEndCommandBuffer, sizeof(uint32_t));
5846 stream->write(&packetSize_vkEndCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005847 uint64_t cgen_var_490;
5848 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_490, 1);
5849 stream->write((uint64_t*)&cgen_var_490, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005850 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
5851 stream->read(&vkEndCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005852 countingStream->clearPool();
5853 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005854 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005855 return vkEndCommandBuffer_VkResult_return;
5856}
5857
5858VkResult VkEncoder::vkResetCommandBuffer(
5859 VkCommandBuffer commandBuffer,
5860 VkCommandBufferResetFlags flags)
5861{
5862 auto stream = mImpl->stream();
5863 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005864 auto resources = mImpl->resources();
5865 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005866 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005867 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005868 VkCommandBufferResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005869 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005870 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005871 countingStream->rewind();
5872 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005873 uint64_t cgen_var_491;
5874 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_491, 1);
5875 countingStream->write((uint64_t*)&cgen_var_491, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005876 countingStream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005877 }
5878 uint32_t packetSize_vkResetCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5879 countingStream->rewind();
5880 uint32_t opcode_vkResetCommandBuffer = OP_vkResetCommandBuffer;
5881 stream->write(&opcode_vkResetCommandBuffer, sizeof(uint32_t));
5882 stream->write(&packetSize_vkResetCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005883 uint64_t cgen_var_492;
5884 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_492, 1);
5885 stream->write((uint64_t*)&cgen_var_492, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005886 stream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005887 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
5888 stream->read(&vkResetCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005889 countingStream->clearPool();
5890 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005891 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005892 return vkResetCommandBuffer_VkResult_return;
5893}
5894
5895void VkEncoder::vkCmdBindPipeline(
5896 VkCommandBuffer commandBuffer,
5897 VkPipelineBindPoint pipelineBindPoint,
5898 VkPipeline pipeline)
5899{
5900 auto stream = mImpl->stream();
5901 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005902 auto resources = mImpl->resources();
5903 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005904 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005905 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005906 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005907 VkPipeline local_pipeline;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005908 local_commandBuffer = commandBuffer;
5909 local_pipelineBindPoint = pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005910 local_pipeline = pipeline;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005911 countingStream->rewind();
5912 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005913 uint64_t cgen_var_493;
5914 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_493, 1);
5915 countingStream->write((uint64_t*)&cgen_var_493, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005916 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005917 uint64_t cgen_var_494;
5918 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_494, 1);
5919 countingStream->write((uint64_t*)&cgen_var_494, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005920 }
5921 uint32_t packetSize_vkCmdBindPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5922 countingStream->rewind();
5923 uint32_t opcode_vkCmdBindPipeline = OP_vkCmdBindPipeline;
5924 stream->write(&opcode_vkCmdBindPipeline, sizeof(uint32_t));
5925 stream->write(&packetSize_vkCmdBindPipeline, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005926 uint64_t cgen_var_495;
5927 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_495, 1);
5928 stream->write((uint64_t*)&cgen_var_495, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005929 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005930 uint64_t cgen_var_496;
5931 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_496, 1);
5932 stream->write((uint64_t*)&cgen_var_496, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005933}
5934
5935void VkEncoder::vkCmdSetViewport(
5936 VkCommandBuffer commandBuffer,
5937 uint32_t firstViewport,
5938 uint32_t viewportCount,
5939 const VkViewport* pViewports)
5940{
5941 auto stream = mImpl->stream();
5942 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005943 auto resources = mImpl->resources();
5944 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005945 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005946 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005947 uint32_t local_firstViewport;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005948 uint32_t local_viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005949 VkViewport* local_pViewports;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005950 local_commandBuffer = commandBuffer;
5951 local_firstViewport = firstViewport;
5952 local_viewportCount = viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005953 local_pViewports = nullptr;
5954 if (pViewports)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005955 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005956 local_pViewports = (VkViewport*)pool->alloc(((viewportCount)) * sizeof(const VkViewport));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005957 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
5958 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005959 deepcopy_VkViewport(pool, pViewports + i, (VkViewport*)(local_pViewports + i));
5960 }
5961 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005962 countingStream->rewind();
5963 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005964 uint64_t cgen_var_497;
5965 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_497, 1);
5966 countingStream->write((uint64_t*)&cgen_var_497, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005967 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
5968 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
5969 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
5970 {
5971 marshal_VkViewport(countingStream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005972 }
5973 }
5974 uint32_t packetSize_vkCmdSetViewport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5975 countingStream->rewind();
5976 uint32_t opcode_vkCmdSetViewport = OP_vkCmdSetViewport;
5977 stream->write(&opcode_vkCmdSetViewport, sizeof(uint32_t));
5978 stream->write(&packetSize_vkCmdSetViewport, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005979 uint64_t cgen_var_498;
5980 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_498, 1);
5981 stream->write((uint64_t*)&cgen_var_498, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005982 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
5983 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005984 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
5985 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005986 marshal_VkViewport(stream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005987 }
5988}
5989
5990void VkEncoder::vkCmdSetScissor(
5991 VkCommandBuffer commandBuffer,
5992 uint32_t firstScissor,
5993 uint32_t scissorCount,
5994 const VkRect2D* pScissors)
5995{
5996 auto stream = mImpl->stream();
5997 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005998 auto resources = mImpl->resources();
5999 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006000 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006001 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006002 uint32_t local_firstScissor;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006003 uint32_t local_scissorCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006004 VkRect2D* local_pScissors;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006005 local_commandBuffer = commandBuffer;
6006 local_firstScissor = firstScissor;
6007 local_scissorCount = scissorCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006008 local_pScissors = nullptr;
6009 if (pScissors)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006010 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006011 local_pScissors = (VkRect2D*)pool->alloc(((scissorCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006012 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6013 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006014 deepcopy_VkRect2D(pool, pScissors + i, (VkRect2D*)(local_pScissors + i));
6015 }
6016 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006017 countingStream->rewind();
6018 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006019 uint64_t cgen_var_499;
6020 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_499, 1);
6021 countingStream->write((uint64_t*)&cgen_var_499, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006022 countingStream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
6023 countingStream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
6024 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6025 {
6026 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006027 }
6028 }
6029 uint32_t packetSize_vkCmdSetScissor = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6030 countingStream->rewind();
6031 uint32_t opcode_vkCmdSetScissor = OP_vkCmdSetScissor;
6032 stream->write(&opcode_vkCmdSetScissor, sizeof(uint32_t));
6033 stream->write(&packetSize_vkCmdSetScissor, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006034 uint64_t cgen_var_500;
6035 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_500, 1);
6036 stream->write((uint64_t*)&cgen_var_500, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006037 stream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
6038 stream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006039 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6040 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006041 marshal_VkRect2D(stream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006042 }
6043}
6044
6045void VkEncoder::vkCmdSetLineWidth(
6046 VkCommandBuffer commandBuffer,
6047 float lineWidth)
6048{
6049 auto stream = mImpl->stream();
6050 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006051 auto resources = mImpl->resources();
6052 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006053 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006054 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006055 float local_lineWidth;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006056 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006057 local_lineWidth = lineWidth;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006058 countingStream->rewind();
6059 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006060 uint64_t cgen_var_501;
6061 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_501, 1);
6062 countingStream->write((uint64_t*)&cgen_var_501, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006063 countingStream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006064 }
6065 uint32_t packetSize_vkCmdSetLineWidth = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6066 countingStream->rewind();
6067 uint32_t opcode_vkCmdSetLineWidth = OP_vkCmdSetLineWidth;
6068 stream->write(&opcode_vkCmdSetLineWidth, sizeof(uint32_t));
6069 stream->write(&packetSize_vkCmdSetLineWidth, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006070 uint64_t cgen_var_502;
6071 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_502, 1);
6072 stream->write((uint64_t*)&cgen_var_502, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006073 stream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006074}
6075
6076void VkEncoder::vkCmdSetDepthBias(
6077 VkCommandBuffer commandBuffer,
6078 float depthBiasConstantFactor,
6079 float depthBiasClamp,
6080 float depthBiasSlopeFactor)
6081{
6082 auto stream = mImpl->stream();
6083 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006084 auto resources = mImpl->resources();
6085 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006086 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006087 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006088 float local_depthBiasConstantFactor;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006089 float local_depthBiasClamp;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006090 float local_depthBiasSlopeFactor;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006091 local_commandBuffer = commandBuffer;
6092 local_depthBiasConstantFactor = depthBiasConstantFactor;
6093 local_depthBiasClamp = depthBiasClamp;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006094 local_depthBiasSlopeFactor = depthBiasSlopeFactor;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006095 countingStream->rewind();
6096 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006097 uint64_t cgen_var_503;
6098 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_503, 1);
6099 countingStream->write((uint64_t*)&cgen_var_503, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006100 countingStream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
6101 countingStream->write((float*)&local_depthBiasClamp, sizeof(float));
6102 countingStream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006103 }
6104 uint32_t packetSize_vkCmdSetDepthBias = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6105 countingStream->rewind();
6106 uint32_t opcode_vkCmdSetDepthBias = OP_vkCmdSetDepthBias;
6107 stream->write(&opcode_vkCmdSetDepthBias, sizeof(uint32_t));
6108 stream->write(&packetSize_vkCmdSetDepthBias, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006109 uint64_t cgen_var_504;
6110 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_504, 1);
6111 stream->write((uint64_t*)&cgen_var_504, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006112 stream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
6113 stream->write((float*)&local_depthBiasClamp, sizeof(float));
6114 stream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006115}
6116
6117void VkEncoder::vkCmdSetBlendConstants(
6118 VkCommandBuffer commandBuffer,
6119 const float blendConstants)
6120{
6121 auto stream = mImpl->stream();
6122 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006123 auto resources = mImpl->resources();
6124 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006125 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006126 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006127 float local_blendConstants[4];
Lingfeng Yang9666b852018-11-13 23:09:59 -08006128 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006129 memcpy(&local_blendConstants, &blendConstants, 4 * sizeof(const float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006130 countingStream->rewind();
6131 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006132 uint64_t cgen_var_505;
6133 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_505, 1);
6134 countingStream->write((uint64_t*)&cgen_var_505, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006135 countingStream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006136 }
6137 uint32_t packetSize_vkCmdSetBlendConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6138 countingStream->rewind();
6139 uint32_t opcode_vkCmdSetBlendConstants = OP_vkCmdSetBlendConstants;
6140 stream->write(&opcode_vkCmdSetBlendConstants, sizeof(uint32_t));
6141 stream->write(&packetSize_vkCmdSetBlendConstants, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006142 uint64_t cgen_var_506;
6143 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_506, 1);
6144 stream->write((uint64_t*)&cgen_var_506, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006145 stream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006146}
6147
6148void VkEncoder::vkCmdSetDepthBounds(
6149 VkCommandBuffer commandBuffer,
6150 float minDepthBounds,
6151 float maxDepthBounds)
6152{
6153 auto stream = mImpl->stream();
6154 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006155 auto resources = mImpl->resources();
6156 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006157 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006158 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006159 float local_minDepthBounds;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006160 float local_maxDepthBounds;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006161 local_commandBuffer = commandBuffer;
6162 local_minDepthBounds = minDepthBounds;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006163 local_maxDepthBounds = maxDepthBounds;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006164 countingStream->rewind();
6165 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006166 uint64_t cgen_var_507;
6167 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_507, 1);
6168 countingStream->write((uint64_t*)&cgen_var_507, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006169 countingStream->write((float*)&local_minDepthBounds, sizeof(float));
6170 countingStream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006171 }
6172 uint32_t packetSize_vkCmdSetDepthBounds = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6173 countingStream->rewind();
6174 uint32_t opcode_vkCmdSetDepthBounds = OP_vkCmdSetDepthBounds;
6175 stream->write(&opcode_vkCmdSetDepthBounds, sizeof(uint32_t));
6176 stream->write(&packetSize_vkCmdSetDepthBounds, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006177 uint64_t cgen_var_508;
6178 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_508, 1);
6179 stream->write((uint64_t*)&cgen_var_508, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006180 stream->write((float*)&local_minDepthBounds, sizeof(float));
6181 stream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006182}
6183
6184void VkEncoder::vkCmdSetStencilCompareMask(
6185 VkCommandBuffer commandBuffer,
6186 VkStencilFaceFlags faceMask,
6187 uint32_t compareMask)
6188{
6189 auto stream = mImpl->stream();
6190 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006191 auto resources = mImpl->resources();
6192 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006193 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006194 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006195 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006196 uint32_t local_compareMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006197 local_commandBuffer = commandBuffer;
6198 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006199 local_compareMask = compareMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006200 countingStream->rewind();
6201 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006202 uint64_t cgen_var_509;
6203 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_509, 1);
6204 countingStream->write((uint64_t*)&cgen_var_509, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006205 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6206 countingStream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006207 }
6208 uint32_t packetSize_vkCmdSetStencilCompareMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6209 countingStream->rewind();
6210 uint32_t opcode_vkCmdSetStencilCompareMask = OP_vkCmdSetStencilCompareMask;
6211 stream->write(&opcode_vkCmdSetStencilCompareMask, sizeof(uint32_t));
6212 stream->write(&packetSize_vkCmdSetStencilCompareMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006213 uint64_t cgen_var_510;
6214 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_510, 1);
6215 stream->write((uint64_t*)&cgen_var_510, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006216 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6217 stream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006218}
6219
6220void VkEncoder::vkCmdSetStencilWriteMask(
6221 VkCommandBuffer commandBuffer,
6222 VkStencilFaceFlags faceMask,
6223 uint32_t writeMask)
6224{
6225 auto stream = mImpl->stream();
6226 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006227 auto resources = mImpl->resources();
6228 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006229 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006230 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006231 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006232 uint32_t local_writeMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006233 local_commandBuffer = commandBuffer;
6234 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006235 local_writeMask = writeMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006236 countingStream->rewind();
6237 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006238 uint64_t cgen_var_511;
6239 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_511, 1);
6240 countingStream->write((uint64_t*)&cgen_var_511, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006241 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6242 countingStream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006243 }
6244 uint32_t packetSize_vkCmdSetStencilWriteMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6245 countingStream->rewind();
6246 uint32_t opcode_vkCmdSetStencilWriteMask = OP_vkCmdSetStencilWriteMask;
6247 stream->write(&opcode_vkCmdSetStencilWriteMask, sizeof(uint32_t));
6248 stream->write(&packetSize_vkCmdSetStencilWriteMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006249 uint64_t cgen_var_512;
6250 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_512, 1);
6251 stream->write((uint64_t*)&cgen_var_512, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006252 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6253 stream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006254}
6255
6256void VkEncoder::vkCmdSetStencilReference(
6257 VkCommandBuffer commandBuffer,
6258 VkStencilFaceFlags faceMask,
6259 uint32_t reference)
6260{
6261 auto stream = mImpl->stream();
6262 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006263 auto resources = mImpl->resources();
6264 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006265 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006266 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006267 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006268 uint32_t local_reference;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006269 local_commandBuffer = commandBuffer;
6270 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006271 local_reference = reference;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006272 countingStream->rewind();
6273 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006274 uint64_t cgen_var_513;
6275 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_513, 1);
6276 countingStream->write((uint64_t*)&cgen_var_513, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006277 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6278 countingStream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006279 }
6280 uint32_t packetSize_vkCmdSetStencilReference = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6281 countingStream->rewind();
6282 uint32_t opcode_vkCmdSetStencilReference = OP_vkCmdSetStencilReference;
6283 stream->write(&opcode_vkCmdSetStencilReference, sizeof(uint32_t));
6284 stream->write(&packetSize_vkCmdSetStencilReference, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006285 uint64_t cgen_var_514;
6286 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_514, 1);
6287 stream->write((uint64_t*)&cgen_var_514, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006288 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6289 stream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006290}
6291
6292void VkEncoder::vkCmdBindDescriptorSets(
6293 VkCommandBuffer commandBuffer,
6294 VkPipelineBindPoint pipelineBindPoint,
6295 VkPipelineLayout layout,
6296 uint32_t firstSet,
6297 uint32_t descriptorSetCount,
6298 const VkDescriptorSet* pDescriptorSets,
6299 uint32_t dynamicOffsetCount,
6300 const uint32_t* pDynamicOffsets)
6301{
6302 auto stream = mImpl->stream();
6303 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006304 auto resources = mImpl->resources();
6305 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006306 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006307 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006308 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006309 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006310 uint32_t local_firstSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006311 uint32_t local_descriptorSetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006312 VkDescriptorSet* local_pDescriptorSets;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006313 uint32_t local_dynamicOffsetCount;
6314 uint32_t* local_pDynamicOffsets;
6315 local_commandBuffer = commandBuffer;
6316 local_pipelineBindPoint = pipelineBindPoint;
6317 local_layout = layout;
6318 local_firstSet = firstSet;
6319 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006320 local_pDescriptorSets = nullptr;
6321 if (pDescriptorSets)
6322 {
6323 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
6324 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006325 local_dynamicOffsetCount = dynamicOffsetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006326 local_pDynamicOffsets = nullptr;
6327 if (pDynamicOffsets)
6328 {
6329 local_pDynamicOffsets = (uint32_t*)pool->dupArray(pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t));
6330 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006331 countingStream->rewind();
6332 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006333 uint64_t cgen_var_515;
6334 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_515, 1);
6335 countingStream->write((uint64_t*)&cgen_var_515, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006336 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006337 uint64_t cgen_var_516;
6338 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_516, 1);
6339 countingStream->write((uint64_t*)&cgen_var_516, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006340 countingStream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
6341 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006342 if (((descriptorSetCount)))
6343 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006344 uint64_t* cgen_var_517;
6345 countingStream->alloc((void**)&cgen_var_517, ((descriptorSetCount)) * 8);
6346 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_517, ((descriptorSetCount)));
6347 countingStream->write((uint64_t*)cgen_var_517, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006348 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006349 countingStream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
6350 countingStream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006351 }
6352 uint32_t packetSize_vkCmdBindDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6353 countingStream->rewind();
6354 uint32_t opcode_vkCmdBindDescriptorSets = OP_vkCmdBindDescriptorSets;
6355 stream->write(&opcode_vkCmdBindDescriptorSets, sizeof(uint32_t));
6356 stream->write(&packetSize_vkCmdBindDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006357 uint64_t cgen_var_518;
6358 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_518, 1);
6359 stream->write((uint64_t*)&cgen_var_518, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006360 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006361 uint64_t cgen_var_519;
6362 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_519, 1);
6363 stream->write((uint64_t*)&cgen_var_519, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006364 stream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
6365 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006366 if (((descriptorSetCount)))
6367 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006368 uint64_t* cgen_var_520;
6369 stream->alloc((void**)&cgen_var_520, ((descriptorSetCount)) * 8);
6370 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_520, ((descriptorSetCount)));
6371 stream->write((uint64_t*)cgen_var_520, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006372 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006373 stream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
6374 stream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006375}
6376
6377void VkEncoder::vkCmdBindIndexBuffer(
6378 VkCommandBuffer commandBuffer,
6379 VkBuffer buffer,
6380 VkDeviceSize offset,
6381 VkIndexType indexType)
6382{
6383 auto stream = mImpl->stream();
6384 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006385 auto resources = mImpl->resources();
6386 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006387 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006388 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006389 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006390 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006391 VkIndexType local_indexType;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006392 local_commandBuffer = commandBuffer;
6393 local_buffer = buffer;
6394 local_offset = offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006395 local_indexType = indexType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006396 countingStream->rewind();
6397 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006398 uint64_t cgen_var_521;
6399 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_521, 1);
6400 countingStream->write((uint64_t*)&cgen_var_521, 1 * 8);
6401 uint64_t cgen_var_522;
6402 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_522, 1);
6403 countingStream->write((uint64_t*)&cgen_var_522, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006404 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6405 countingStream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006406 }
6407 uint32_t packetSize_vkCmdBindIndexBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6408 countingStream->rewind();
6409 uint32_t opcode_vkCmdBindIndexBuffer = OP_vkCmdBindIndexBuffer;
6410 stream->write(&opcode_vkCmdBindIndexBuffer, sizeof(uint32_t));
6411 stream->write(&packetSize_vkCmdBindIndexBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006412 uint64_t cgen_var_523;
6413 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_523, 1);
6414 stream->write((uint64_t*)&cgen_var_523, 1 * 8);
6415 uint64_t cgen_var_524;
6416 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_524, 1);
6417 stream->write((uint64_t*)&cgen_var_524, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006418 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6419 stream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006420}
6421
6422void VkEncoder::vkCmdBindVertexBuffers(
6423 VkCommandBuffer commandBuffer,
6424 uint32_t firstBinding,
6425 uint32_t bindingCount,
6426 const VkBuffer* pBuffers,
6427 const VkDeviceSize* pOffsets)
6428{
6429 auto stream = mImpl->stream();
6430 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006431 auto resources = mImpl->resources();
6432 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006433 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006434 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006435 uint32_t local_firstBinding;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006436 uint32_t local_bindingCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006437 VkBuffer* local_pBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006438 VkDeviceSize* local_pOffsets;
6439 local_commandBuffer = commandBuffer;
6440 local_firstBinding = firstBinding;
6441 local_bindingCount = bindingCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006442 local_pBuffers = nullptr;
6443 if (pBuffers)
6444 {
6445 local_pBuffers = (VkBuffer*)pool->dupArray(pBuffers, ((bindingCount)) * sizeof(const VkBuffer));
6446 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006447 local_pOffsets = nullptr;
6448 if (pOffsets)
6449 {
6450 local_pOffsets = (VkDeviceSize*)pool->dupArray(pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize));
6451 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006452 countingStream->rewind();
6453 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006454 uint64_t cgen_var_525;
6455 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_525, 1);
6456 countingStream->write((uint64_t*)&cgen_var_525, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006457 countingStream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
6458 countingStream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006459 if (((bindingCount)))
6460 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006461 uint64_t* cgen_var_526;
6462 countingStream->alloc((void**)&cgen_var_526, ((bindingCount)) * 8);
6463 countingStream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_526, ((bindingCount)));
6464 countingStream->write((uint64_t*)cgen_var_526, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006465 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006466 countingStream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006467 }
6468 uint32_t packetSize_vkCmdBindVertexBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6469 countingStream->rewind();
6470 uint32_t opcode_vkCmdBindVertexBuffers = OP_vkCmdBindVertexBuffers;
6471 stream->write(&opcode_vkCmdBindVertexBuffers, sizeof(uint32_t));
6472 stream->write(&packetSize_vkCmdBindVertexBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006473 uint64_t cgen_var_527;
6474 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_527, 1);
6475 stream->write((uint64_t*)&cgen_var_527, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006476 stream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
6477 stream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006478 if (((bindingCount)))
6479 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006480 uint64_t* cgen_var_528;
6481 stream->alloc((void**)&cgen_var_528, ((bindingCount)) * 8);
6482 stream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_528, ((bindingCount)));
6483 stream->write((uint64_t*)cgen_var_528, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006484 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006485 stream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006486}
6487
6488void VkEncoder::vkCmdDraw(
6489 VkCommandBuffer commandBuffer,
6490 uint32_t vertexCount,
6491 uint32_t instanceCount,
6492 uint32_t firstVertex,
6493 uint32_t firstInstance)
6494{
6495 auto stream = mImpl->stream();
6496 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006497 auto resources = mImpl->resources();
6498 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006499 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006500 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006501 uint32_t local_vertexCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006502 uint32_t local_instanceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006503 uint32_t local_firstVertex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006504 uint32_t local_firstInstance;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006505 local_commandBuffer = commandBuffer;
6506 local_vertexCount = vertexCount;
6507 local_instanceCount = instanceCount;
6508 local_firstVertex = firstVertex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006509 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006510 countingStream->rewind();
6511 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006512 uint64_t cgen_var_529;
6513 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_529, 1);
6514 countingStream->write((uint64_t*)&cgen_var_529, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006515 countingStream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
6516 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6517 countingStream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
6518 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006519 }
6520 uint32_t packetSize_vkCmdDraw = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6521 countingStream->rewind();
6522 uint32_t opcode_vkCmdDraw = OP_vkCmdDraw;
6523 stream->write(&opcode_vkCmdDraw, sizeof(uint32_t));
6524 stream->write(&packetSize_vkCmdDraw, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006525 uint64_t cgen_var_530;
6526 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_530, 1);
6527 stream->write((uint64_t*)&cgen_var_530, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006528 stream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
6529 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6530 stream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
6531 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006532}
6533
6534void VkEncoder::vkCmdDrawIndexed(
6535 VkCommandBuffer commandBuffer,
6536 uint32_t indexCount,
6537 uint32_t instanceCount,
6538 uint32_t firstIndex,
6539 int32_t vertexOffset,
6540 uint32_t firstInstance)
6541{
6542 auto stream = mImpl->stream();
6543 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006544 auto resources = mImpl->resources();
6545 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006546 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006547 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006548 uint32_t local_indexCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006549 uint32_t local_instanceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006550 uint32_t local_firstIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006551 int32_t local_vertexOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006552 uint32_t local_firstInstance;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006553 local_commandBuffer = commandBuffer;
6554 local_indexCount = indexCount;
6555 local_instanceCount = instanceCount;
6556 local_firstIndex = firstIndex;
6557 local_vertexOffset = vertexOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006558 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006559 countingStream->rewind();
6560 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006561 uint64_t cgen_var_531;
6562 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_531, 1);
6563 countingStream->write((uint64_t*)&cgen_var_531, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006564 countingStream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
6565 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6566 countingStream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
6567 countingStream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
6568 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006569 }
6570 uint32_t packetSize_vkCmdDrawIndexed = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6571 countingStream->rewind();
6572 uint32_t opcode_vkCmdDrawIndexed = OP_vkCmdDrawIndexed;
6573 stream->write(&opcode_vkCmdDrawIndexed, sizeof(uint32_t));
6574 stream->write(&packetSize_vkCmdDrawIndexed, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006575 uint64_t cgen_var_532;
6576 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_532, 1);
6577 stream->write((uint64_t*)&cgen_var_532, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006578 stream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
6579 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6580 stream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
6581 stream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
6582 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006583}
6584
6585void VkEncoder::vkCmdDrawIndirect(
6586 VkCommandBuffer commandBuffer,
6587 VkBuffer buffer,
6588 VkDeviceSize offset,
6589 uint32_t drawCount,
6590 uint32_t stride)
6591{
6592 auto stream = mImpl->stream();
6593 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006594 auto resources = mImpl->resources();
6595 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006596 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006597 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006598 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006599 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006600 uint32_t local_drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006601 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006602 local_commandBuffer = commandBuffer;
6603 local_buffer = buffer;
6604 local_offset = offset;
6605 local_drawCount = drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006606 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006607 countingStream->rewind();
6608 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006609 uint64_t cgen_var_533;
6610 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_533, 1);
6611 countingStream->write((uint64_t*)&cgen_var_533, 1 * 8);
6612 uint64_t cgen_var_534;
6613 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_534, 1);
6614 countingStream->write((uint64_t*)&cgen_var_534, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006615 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6616 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6617 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006618 }
6619 uint32_t packetSize_vkCmdDrawIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6620 countingStream->rewind();
6621 uint32_t opcode_vkCmdDrawIndirect = OP_vkCmdDrawIndirect;
6622 stream->write(&opcode_vkCmdDrawIndirect, sizeof(uint32_t));
6623 stream->write(&packetSize_vkCmdDrawIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006624 uint64_t cgen_var_535;
6625 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_535, 1);
6626 stream->write((uint64_t*)&cgen_var_535, 1 * 8);
6627 uint64_t cgen_var_536;
6628 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_536, 1);
6629 stream->write((uint64_t*)&cgen_var_536, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006630 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6631 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6632 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006633}
6634
6635void VkEncoder::vkCmdDrawIndexedIndirect(
6636 VkCommandBuffer commandBuffer,
6637 VkBuffer buffer,
6638 VkDeviceSize offset,
6639 uint32_t drawCount,
6640 uint32_t stride)
6641{
6642 auto stream = mImpl->stream();
6643 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006644 auto resources = mImpl->resources();
6645 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006646 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006647 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006648 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006649 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006650 uint32_t local_drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006651 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006652 local_commandBuffer = commandBuffer;
6653 local_buffer = buffer;
6654 local_offset = offset;
6655 local_drawCount = drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006656 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006657 countingStream->rewind();
6658 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006659 uint64_t cgen_var_537;
6660 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_537, 1);
6661 countingStream->write((uint64_t*)&cgen_var_537, 1 * 8);
6662 uint64_t cgen_var_538;
6663 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_538, 1);
6664 countingStream->write((uint64_t*)&cgen_var_538, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006665 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6666 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6667 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006668 }
6669 uint32_t packetSize_vkCmdDrawIndexedIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6670 countingStream->rewind();
6671 uint32_t opcode_vkCmdDrawIndexedIndirect = OP_vkCmdDrawIndexedIndirect;
6672 stream->write(&opcode_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
6673 stream->write(&packetSize_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006674 uint64_t cgen_var_539;
6675 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_539, 1);
6676 stream->write((uint64_t*)&cgen_var_539, 1 * 8);
6677 uint64_t cgen_var_540;
6678 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_540, 1);
6679 stream->write((uint64_t*)&cgen_var_540, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006680 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6681 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6682 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006683}
6684
6685void VkEncoder::vkCmdDispatch(
6686 VkCommandBuffer commandBuffer,
6687 uint32_t groupCountX,
6688 uint32_t groupCountY,
6689 uint32_t groupCountZ)
6690{
6691 auto stream = mImpl->stream();
6692 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006693 auto resources = mImpl->resources();
6694 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006695 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006696 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006697 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006698 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006699 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006700 local_commandBuffer = commandBuffer;
6701 local_groupCountX = groupCountX;
6702 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006703 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006704 countingStream->rewind();
6705 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006706 uint64_t cgen_var_541;
6707 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_541, 1);
6708 countingStream->write((uint64_t*)&cgen_var_541, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006709 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
6710 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
6711 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006712 }
6713 uint32_t packetSize_vkCmdDispatch = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6714 countingStream->rewind();
6715 uint32_t opcode_vkCmdDispatch = OP_vkCmdDispatch;
6716 stream->write(&opcode_vkCmdDispatch, sizeof(uint32_t));
6717 stream->write(&packetSize_vkCmdDispatch, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006718 uint64_t cgen_var_542;
6719 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_542, 1);
6720 stream->write((uint64_t*)&cgen_var_542, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006721 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
6722 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
6723 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006724}
6725
6726void VkEncoder::vkCmdDispatchIndirect(
6727 VkCommandBuffer commandBuffer,
6728 VkBuffer buffer,
6729 VkDeviceSize offset)
6730{
6731 auto stream = mImpl->stream();
6732 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006733 auto resources = mImpl->resources();
6734 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006735 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006736 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006737 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006738 VkDeviceSize local_offset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006739 local_commandBuffer = commandBuffer;
6740 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006741 local_offset = offset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006742 countingStream->rewind();
6743 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006744 uint64_t cgen_var_543;
6745 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_543, 1);
6746 countingStream->write((uint64_t*)&cgen_var_543, 1 * 8);
6747 uint64_t cgen_var_544;
6748 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_544, 1);
6749 countingStream->write((uint64_t*)&cgen_var_544, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006750 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006751 }
6752 uint32_t packetSize_vkCmdDispatchIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6753 countingStream->rewind();
6754 uint32_t opcode_vkCmdDispatchIndirect = OP_vkCmdDispatchIndirect;
6755 stream->write(&opcode_vkCmdDispatchIndirect, sizeof(uint32_t));
6756 stream->write(&packetSize_vkCmdDispatchIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006757 uint64_t cgen_var_545;
6758 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_545, 1);
6759 stream->write((uint64_t*)&cgen_var_545, 1 * 8);
6760 uint64_t cgen_var_546;
6761 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_546, 1);
6762 stream->write((uint64_t*)&cgen_var_546, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006763 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006764}
6765
6766void VkEncoder::vkCmdCopyBuffer(
6767 VkCommandBuffer commandBuffer,
6768 VkBuffer srcBuffer,
6769 VkBuffer dstBuffer,
6770 uint32_t regionCount,
6771 const VkBufferCopy* pRegions)
6772{
6773 auto stream = mImpl->stream();
6774 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006775 auto resources = mImpl->resources();
6776 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006777 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006778 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006779 VkBuffer local_srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006780 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006781 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006782 VkBufferCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006783 local_commandBuffer = commandBuffer;
6784 local_srcBuffer = srcBuffer;
6785 local_dstBuffer = dstBuffer;
6786 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006787 local_pRegions = nullptr;
6788 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006789 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006790 local_pRegions = (VkBufferCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006791 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6792 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006793 deepcopy_VkBufferCopy(pool, pRegions + i, (VkBufferCopy*)(local_pRegions + i));
6794 }
6795 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006796 countingStream->rewind();
6797 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006798 uint64_t cgen_var_547;
6799 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_547, 1);
6800 countingStream->write((uint64_t*)&cgen_var_547, 1 * 8);
6801 uint64_t cgen_var_548;
6802 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_548, 1);
6803 countingStream->write((uint64_t*)&cgen_var_548, 1 * 8);
6804 uint64_t cgen_var_549;
6805 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_549, 1);
6806 countingStream->write((uint64_t*)&cgen_var_549, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006807 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
6808 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6809 {
6810 marshal_VkBufferCopy(countingStream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006811 }
6812 }
6813 uint32_t packetSize_vkCmdCopyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6814 countingStream->rewind();
6815 uint32_t opcode_vkCmdCopyBuffer = OP_vkCmdCopyBuffer;
6816 stream->write(&opcode_vkCmdCopyBuffer, sizeof(uint32_t));
6817 stream->write(&packetSize_vkCmdCopyBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006818 uint64_t cgen_var_550;
6819 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_550, 1);
6820 stream->write((uint64_t*)&cgen_var_550, 1 * 8);
6821 uint64_t cgen_var_551;
6822 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_551, 1);
6823 stream->write((uint64_t*)&cgen_var_551, 1 * 8);
6824 uint64_t cgen_var_552;
6825 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_552, 1);
6826 stream->write((uint64_t*)&cgen_var_552, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006827 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006828 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6829 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006830 marshal_VkBufferCopy(stream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006831 }
6832}
6833
6834void VkEncoder::vkCmdCopyImage(
6835 VkCommandBuffer commandBuffer,
6836 VkImage srcImage,
6837 VkImageLayout srcImageLayout,
6838 VkImage dstImage,
6839 VkImageLayout dstImageLayout,
6840 uint32_t regionCount,
6841 const VkImageCopy* pRegions)
6842{
6843 auto stream = mImpl->stream();
6844 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006845 auto resources = mImpl->resources();
6846 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006847 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006848 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006849 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006850 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006851 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006852 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006853 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006854 VkImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006855 local_commandBuffer = commandBuffer;
6856 local_srcImage = srcImage;
6857 local_srcImageLayout = srcImageLayout;
6858 local_dstImage = dstImage;
6859 local_dstImageLayout = dstImageLayout;
6860 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006861 local_pRegions = nullptr;
6862 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006863 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006864 local_pRegions = (VkImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006865 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6866 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006867 deepcopy_VkImageCopy(pool, pRegions + i, (VkImageCopy*)(local_pRegions + i));
6868 }
6869 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006870 countingStream->rewind();
6871 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006872 uint64_t cgen_var_553;
6873 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_553, 1);
6874 countingStream->write((uint64_t*)&cgen_var_553, 1 * 8);
6875 uint64_t cgen_var_554;
6876 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_554, 1);
6877 countingStream->write((uint64_t*)&cgen_var_554, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006878 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006879 uint64_t cgen_var_555;
6880 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_555, 1);
6881 countingStream->write((uint64_t*)&cgen_var_555, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006882 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6883 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
6884 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6885 {
6886 marshal_VkImageCopy(countingStream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006887 }
6888 }
6889 uint32_t packetSize_vkCmdCopyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6890 countingStream->rewind();
6891 uint32_t opcode_vkCmdCopyImage = OP_vkCmdCopyImage;
6892 stream->write(&opcode_vkCmdCopyImage, sizeof(uint32_t));
6893 stream->write(&packetSize_vkCmdCopyImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006894 uint64_t cgen_var_556;
6895 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_556, 1);
6896 stream->write((uint64_t*)&cgen_var_556, 1 * 8);
6897 uint64_t cgen_var_557;
6898 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_557, 1);
6899 stream->write((uint64_t*)&cgen_var_557, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006900 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006901 uint64_t cgen_var_558;
6902 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_558, 1);
6903 stream->write((uint64_t*)&cgen_var_558, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006904 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6905 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006906 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6907 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006908 marshal_VkImageCopy(stream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006909 }
6910}
6911
6912void VkEncoder::vkCmdBlitImage(
6913 VkCommandBuffer commandBuffer,
6914 VkImage srcImage,
6915 VkImageLayout srcImageLayout,
6916 VkImage dstImage,
6917 VkImageLayout dstImageLayout,
6918 uint32_t regionCount,
6919 const VkImageBlit* pRegions,
6920 VkFilter filter)
6921{
6922 auto stream = mImpl->stream();
6923 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006924 auto resources = mImpl->resources();
6925 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006926 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006927 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006928 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006929 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006930 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006931 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006932 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006933 VkImageBlit* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006934 VkFilter local_filter;
6935 local_commandBuffer = commandBuffer;
6936 local_srcImage = srcImage;
6937 local_srcImageLayout = srcImageLayout;
6938 local_dstImage = dstImage;
6939 local_dstImageLayout = dstImageLayout;
6940 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006941 local_pRegions = nullptr;
6942 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006943 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006944 local_pRegions = (VkImageBlit*)pool->alloc(((regionCount)) * sizeof(const VkImageBlit));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006945 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6946 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006947 deepcopy_VkImageBlit(pool, pRegions + i, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006948 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006949 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006950 local_filter = filter;
6951 countingStream->rewind();
6952 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006953 uint64_t cgen_var_559;
6954 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_559, 1);
6955 countingStream->write((uint64_t*)&cgen_var_559, 1 * 8);
6956 uint64_t cgen_var_560;
6957 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_560, 1);
6958 countingStream->write((uint64_t*)&cgen_var_560, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006959 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006960 uint64_t cgen_var_561;
6961 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_561, 1);
6962 countingStream->write((uint64_t*)&cgen_var_561, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006963 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6964 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
6965 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6966 {
6967 marshal_VkImageBlit(countingStream, (VkImageBlit*)(local_pRegions + i));
6968 }
6969 countingStream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006970 }
6971 uint32_t packetSize_vkCmdBlitImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6972 countingStream->rewind();
6973 uint32_t opcode_vkCmdBlitImage = OP_vkCmdBlitImage;
6974 stream->write(&opcode_vkCmdBlitImage, sizeof(uint32_t));
6975 stream->write(&packetSize_vkCmdBlitImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006976 uint64_t cgen_var_562;
6977 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_562, 1);
6978 stream->write((uint64_t*)&cgen_var_562, 1 * 8);
6979 uint64_t cgen_var_563;
6980 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_563, 1);
6981 stream->write((uint64_t*)&cgen_var_563, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006982 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006983 uint64_t cgen_var_564;
6984 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_564, 1);
6985 stream->write((uint64_t*)&cgen_var_564, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006986 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6987 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006988 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6989 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006990 marshal_VkImageBlit(stream, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006991 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006992 stream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006993}
6994
6995void VkEncoder::vkCmdCopyBufferToImage(
6996 VkCommandBuffer commandBuffer,
6997 VkBuffer srcBuffer,
6998 VkImage dstImage,
6999 VkImageLayout dstImageLayout,
7000 uint32_t regionCount,
7001 const VkBufferImageCopy* pRegions)
7002{
7003 auto stream = mImpl->stream();
7004 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007005 auto resources = mImpl->resources();
7006 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007007 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007008 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007009 VkBuffer local_srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007010 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007011 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007012 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007013 VkBufferImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007014 local_commandBuffer = commandBuffer;
7015 local_srcBuffer = srcBuffer;
7016 local_dstImage = dstImage;
7017 local_dstImageLayout = dstImageLayout;
7018 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007019 local_pRegions = nullptr;
7020 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007021 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007022 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007023 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7024 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007025 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
7026 }
7027 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007028 countingStream->rewind();
7029 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007030 uint64_t cgen_var_565;
7031 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_565, 1);
7032 countingStream->write((uint64_t*)&cgen_var_565, 1 * 8);
7033 uint64_t cgen_var_566;
7034 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_566, 1);
7035 countingStream->write((uint64_t*)&cgen_var_566, 1 * 8);
7036 uint64_t cgen_var_567;
7037 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_567, 1);
7038 countingStream->write((uint64_t*)&cgen_var_567, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007039 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7040 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7041 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7042 {
7043 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007044 }
7045 }
7046 uint32_t packetSize_vkCmdCopyBufferToImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7047 countingStream->rewind();
7048 uint32_t opcode_vkCmdCopyBufferToImage = OP_vkCmdCopyBufferToImage;
7049 stream->write(&opcode_vkCmdCopyBufferToImage, sizeof(uint32_t));
7050 stream->write(&packetSize_vkCmdCopyBufferToImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007051 uint64_t cgen_var_568;
7052 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_568, 1);
7053 stream->write((uint64_t*)&cgen_var_568, 1 * 8);
7054 uint64_t cgen_var_569;
7055 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_569, 1);
7056 stream->write((uint64_t*)&cgen_var_569, 1 * 8);
7057 uint64_t cgen_var_570;
7058 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_570, 1);
7059 stream->write((uint64_t*)&cgen_var_570, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007060 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7061 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007062 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7063 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007064 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007065 }
7066}
7067
7068void VkEncoder::vkCmdCopyImageToBuffer(
7069 VkCommandBuffer commandBuffer,
7070 VkImage srcImage,
7071 VkImageLayout srcImageLayout,
7072 VkBuffer dstBuffer,
7073 uint32_t regionCount,
7074 const VkBufferImageCopy* pRegions)
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 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007083 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007084 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007085 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007086 VkBufferImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007087 local_commandBuffer = commandBuffer;
7088 local_srcImage = srcImage;
7089 local_srcImageLayout = srcImageLayout;
7090 local_dstBuffer = dstBuffer;
7091 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007092 local_pRegions = nullptr;
7093 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007094 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007095 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007096 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7097 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007098 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
7099 }
7100 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007101 countingStream->rewind();
7102 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007103 uint64_t cgen_var_571;
7104 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_571, 1);
7105 countingStream->write((uint64_t*)&cgen_var_571, 1 * 8);
7106 uint64_t cgen_var_572;
7107 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_572, 1);
7108 countingStream->write((uint64_t*)&cgen_var_572, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007109 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007110 uint64_t cgen_var_573;
7111 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_573, 1);
7112 countingStream->write((uint64_t*)&cgen_var_573, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007113 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7114 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7115 {
7116 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007117 }
7118 }
7119 uint32_t packetSize_vkCmdCopyImageToBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7120 countingStream->rewind();
7121 uint32_t opcode_vkCmdCopyImageToBuffer = OP_vkCmdCopyImageToBuffer;
7122 stream->write(&opcode_vkCmdCopyImageToBuffer, sizeof(uint32_t));
7123 stream->write(&packetSize_vkCmdCopyImageToBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007124 uint64_t cgen_var_574;
7125 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_574, 1);
7126 stream->write((uint64_t*)&cgen_var_574, 1 * 8);
7127 uint64_t cgen_var_575;
7128 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_575, 1);
7129 stream->write((uint64_t*)&cgen_var_575, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007130 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007131 uint64_t cgen_var_576;
7132 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_576, 1);
7133 stream->write((uint64_t*)&cgen_var_576, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007134 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007135 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7136 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007137 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007138 }
7139}
7140
7141void VkEncoder::vkCmdUpdateBuffer(
7142 VkCommandBuffer commandBuffer,
7143 VkBuffer dstBuffer,
7144 VkDeviceSize dstOffset,
7145 VkDeviceSize dataSize,
7146 const void* pData)
7147{
7148 auto stream = mImpl->stream();
7149 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007150 auto resources = mImpl->resources();
7151 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007152 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007153 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007154 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007155 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007156 VkDeviceSize local_dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007157 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007158 local_commandBuffer = commandBuffer;
7159 local_dstBuffer = dstBuffer;
7160 local_dstOffset = dstOffset;
7161 local_dataSize = dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007162 local_pData = nullptr;
7163 if (pData)
7164 {
7165 local_pData = (void*)pool->dupArray(pData, ((dataSize)) * sizeof(const uint8_t));
7166 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007167 countingStream->rewind();
7168 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007169 uint64_t cgen_var_577;
7170 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_577, 1);
7171 countingStream->write((uint64_t*)&cgen_var_577, 1 * 8);
7172 uint64_t cgen_var_578;
7173 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_578, 1);
7174 countingStream->write((uint64_t*)&cgen_var_578, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007175 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7176 countingStream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
7177 countingStream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007178 }
7179 uint32_t packetSize_vkCmdUpdateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7180 countingStream->rewind();
7181 uint32_t opcode_vkCmdUpdateBuffer = OP_vkCmdUpdateBuffer;
7182 stream->write(&opcode_vkCmdUpdateBuffer, sizeof(uint32_t));
7183 stream->write(&packetSize_vkCmdUpdateBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007184 uint64_t cgen_var_579;
7185 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_579, 1);
7186 stream->write((uint64_t*)&cgen_var_579, 1 * 8);
7187 uint64_t cgen_var_580;
7188 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_580, 1);
7189 stream->write((uint64_t*)&cgen_var_580, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007190 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7191 stream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
7192 stream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007193}
7194
7195void VkEncoder::vkCmdFillBuffer(
7196 VkCommandBuffer commandBuffer,
7197 VkBuffer dstBuffer,
7198 VkDeviceSize dstOffset,
7199 VkDeviceSize size,
7200 uint32_t data)
7201{
7202 auto stream = mImpl->stream();
7203 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007204 auto resources = mImpl->resources();
7205 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007206 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007207 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007208 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007209 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007210 VkDeviceSize local_size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007211 uint32_t local_data;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007212 local_commandBuffer = commandBuffer;
7213 local_dstBuffer = dstBuffer;
7214 local_dstOffset = dstOffset;
7215 local_size = size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007216 local_data = data;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007217 countingStream->rewind();
7218 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007219 uint64_t cgen_var_581;
7220 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_581, 1);
7221 countingStream->write((uint64_t*)&cgen_var_581, 1 * 8);
7222 uint64_t cgen_var_582;
7223 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_582, 1);
7224 countingStream->write((uint64_t*)&cgen_var_582, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007225 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7226 countingStream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
7227 countingStream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007228 }
7229 uint32_t packetSize_vkCmdFillBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7230 countingStream->rewind();
7231 uint32_t opcode_vkCmdFillBuffer = OP_vkCmdFillBuffer;
7232 stream->write(&opcode_vkCmdFillBuffer, sizeof(uint32_t));
7233 stream->write(&packetSize_vkCmdFillBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007234 uint64_t cgen_var_583;
7235 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_583, 1);
7236 stream->write((uint64_t*)&cgen_var_583, 1 * 8);
7237 uint64_t cgen_var_584;
7238 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_584, 1);
7239 stream->write((uint64_t*)&cgen_var_584, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007240 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7241 stream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
7242 stream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007243}
7244
7245void VkEncoder::vkCmdClearColorImage(
7246 VkCommandBuffer commandBuffer,
7247 VkImage image,
7248 VkImageLayout imageLayout,
7249 const VkClearColorValue* pColor,
7250 uint32_t rangeCount,
7251 const VkImageSubresourceRange* pRanges)
7252{
7253 auto stream = mImpl->stream();
7254 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007255 auto resources = mImpl->resources();
7256 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007257 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007258 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007259 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007260 VkImageLayout local_imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007261 VkClearColorValue* local_pColor;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007262 uint32_t local_rangeCount;
7263 VkImageSubresourceRange* local_pRanges;
7264 local_commandBuffer = commandBuffer;
7265 local_image = image;
7266 local_imageLayout = imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007267 local_pColor = nullptr;
7268 if (pColor)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007269 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007270 local_pColor = (VkClearColorValue*)pool->alloc(sizeof(const VkClearColorValue));
7271 deepcopy_VkClearColorValue(pool, pColor, (VkClearColorValue*)(local_pColor));
7272 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007273 local_rangeCount = rangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007274 local_pRanges = nullptr;
7275 if (pRanges)
7276 {
7277 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007278 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7279 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007280 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
7281 }
7282 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007283 countingStream->rewind();
7284 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007285 uint64_t cgen_var_585;
7286 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_585, 1);
7287 countingStream->write((uint64_t*)&cgen_var_585, 1 * 8);
7288 uint64_t cgen_var_586;
7289 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_586, 1);
7290 countingStream->write((uint64_t*)&cgen_var_586, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007291 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7292 marshal_VkClearColorValue(countingStream, (VkClearColorValue*)(local_pColor));
7293 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
7294 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7295 {
7296 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007297 }
7298 }
7299 uint32_t packetSize_vkCmdClearColorImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7300 countingStream->rewind();
7301 uint32_t opcode_vkCmdClearColorImage = OP_vkCmdClearColorImage;
7302 stream->write(&opcode_vkCmdClearColorImage, sizeof(uint32_t));
7303 stream->write(&packetSize_vkCmdClearColorImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007304 uint64_t cgen_var_587;
7305 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_587, 1);
7306 stream->write((uint64_t*)&cgen_var_587, 1 * 8);
7307 uint64_t cgen_var_588;
7308 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_588, 1);
7309 stream->write((uint64_t*)&cgen_var_588, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007310 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7311 marshal_VkClearColorValue(stream, (VkClearColorValue*)(local_pColor));
7312 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007313 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7314 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007315 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007316 }
7317}
7318
7319void VkEncoder::vkCmdClearDepthStencilImage(
7320 VkCommandBuffer commandBuffer,
7321 VkImage image,
7322 VkImageLayout imageLayout,
7323 const VkClearDepthStencilValue* pDepthStencil,
7324 uint32_t rangeCount,
7325 const VkImageSubresourceRange* pRanges)
7326{
7327 auto stream = mImpl->stream();
7328 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007329 auto resources = mImpl->resources();
7330 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007331 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007332 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007333 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007334 VkImageLayout local_imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007335 VkClearDepthStencilValue* local_pDepthStencil;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007336 uint32_t local_rangeCount;
7337 VkImageSubresourceRange* local_pRanges;
7338 local_commandBuffer = commandBuffer;
7339 local_image = image;
7340 local_imageLayout = imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007341 local_pDepthStencil = nullptr;
7342 if (pDepthStencil)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007343 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007344 local_pDepthStencil = (VkClearDepthStencilValue*)pool->alloc(sizeof(const VkClearDepthStencilValue));
7345 deepcopy_VkClearDepthStencilValue(pool, pDepthStencil, (VkClearDepthStencilValue*)(local_pDepthStencil));
7346 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007347 local_rangeCount = rangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007348 local_pRanges = nullptr;
7349 if (pRanges)
7350 {
7351 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007352 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7353 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007354 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
7355 }
7356 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007357 countingStream->rewind();
7358 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007359 uint64_t cgen_var_589;
7360 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_589, 1);
7361 countingStream->write((uint64_t*)&cgen_var_589, 1 * 8);
7362 uint64_t cgen_var_590;
7363 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_590, 1);
7364 countingStream->write((uint64_t*)&cgen_var_590, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007365 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7366 marshal_VkClearDepthStencilValue(countingStream, (VkClearDepthStencilValue*)(local_pDepthStencil));
7367 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
7368 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7369 {
7370 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007371 }
7372 }
7373 uint32_t packetSize_vkCmdClearDepthStencilImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7374 countingStream->rewind();
7375 uint32_t opcode_vkCmdClearDepthStencilImage = OP_vkCmdClearDepthStencilImage;
7376 stream->write(&opcode_vkCmdClearDepthStencilImage, sizeof(uint32_t));
7377 stream->write(&packetSize_vkCmdClearDepthStencilImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007378 uint64_t cgen_var_591;
7379 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_591, 1);
7380 stream->write((uint64_t*)&cgen_var_591, 1 * 8);
7381 uint64_t cgen_var_592;
7382 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_592, 1);
7383 stream->write((uint64_t*)&cgen_var_592, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007384 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7385 marshal_VkClearDepthStencilValue(stream, (VkClearDepthStencilValue*)(local_pDepthStencil));
7386 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007387 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7388 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007389 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007390 }
7391}
7392
7393void VkEncoder::vkCmdClearAttachments(
7394 VkCommandBuffer commandBuffer,
7395 uint32_t attachmentCount,
7396 const VkClearAttachment* pAttachments,
7397 uint32_t rectCount,
7398 const VkClearRect* pRects)
7399{
7400 auto stream = mImpl->stream();
7401 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007402 auto resources = mImpl->resources();
7403 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007404 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007405 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007406 uint32_t local_attachmentCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007407 VkClearAttachment* local_pAttachments;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007408 uint32_t local_rectCount;
7409 VkClearRect* local_pRects;
7410 local_commandBuffer = commandBuffer;
7411 local_attachmentCount = attachmentCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007412 local_pAttachments = nullptr;
7413 if (pAttachments)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007414 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007415 local_pAttachments = (VkClearAttachment*)pool->alloc(((attachmentCount)) * sizeof(const VkClearAttachment));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007416 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7417 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007418 deepcopy_VkClearAttachment(pool, pAttachments + i, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007419 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007420 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007421 local_rectCount = rectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007422 local_pRects = nullptr;
7423 if (pRects)
7424 {
7425 local_pRects = (VkClearRect*)pool->alloc(((rectCount)) * sizeof(const VkClearRect));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007426 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7427 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007428 deepcopy_VkClearRect(pool, pRects + i, (VkClearRect*)(local_pRects + i));
7429 }
7430 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007431 countingStream->rewind();
7432 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007433 uint64_t cgen_var_593;
7434 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_593, 1);
7435 countingStream->write((uint64_t*)&cgen_var_593, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007436 countingStream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
7437 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7438 {
7439 marshal_VkClearAttachment(countingStream, (VkClearAttachment*)(local_pAttachments + i));
7440 }
7441 countingStream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
7442 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7443 {
7444 marshal_VkClearRect(countingStream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007445 }
7446 }
7447 uint32_t packetSize_vkCmdClearAttachments = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7448 countingStream->rewind();
7449 uint32_t opcode_vkCmdClearAttachments = OP_vkCmdClearAttachments;
7450 stream->write(&opcode_vkCmdClearAttachments, sizeof(uint32_t));
7451 stream->write(&packetSize_vkCmdClearAttachments, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007452 uint64_t cgen_var_594;
7453 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_594, 1);
7454 stream->write((uint64_t*)&cgen_var_594, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007455 stream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007456 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7457 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007458 marshal_VkClearAttachment(stream, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007459 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007460 stream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007461 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7462 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007463 marshal_VkClearRect(stream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007464 }
7465}
7466
7467void VkEncoder::vkCmdResolveImage(
7468 VkCommandBuffer commandBuffer,
7469 VkImage srcImage,
7470 VkImageLayout srcImageLayout,
7471 VkImage dstImage,
7472 VkImageLayout dstImageLayout,
7473 uint32_t regionCount,
7474 const VkImageResolve* pRegions)
7475{
7476 auto stream = mImpl->stream();
7477 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007478 auto resources = mImpl->resources();
7479 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007480 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007481 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007482 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007483 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007484 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007485 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007486 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007487 VkImageResolve* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007488 local_commandBuffer = commandBuffer;
7489 local_srcImage = srcImage;
7490 local_srcImageLayout = srcImageLayout;
7491 local_dstImage = dstImage;
7492 local_dstImageLayout = dstImageLayout;
7493 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007494 local_pRegions = nullptr;
7495 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007496 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007497 local_pRegions = (VkImageResolve*)pool->alloc(((regionCount)) * sizeof(const VkImageResolve));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007498 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7499 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007500 deepcopy_VkImageResolve(pool, pRegions + i, (VkImageResolve*)(local_pRegions + i));
7501 }
7502 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007503 countingStream->rewind();
7504 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007505 uint64_t cgen_var_595;
7506 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_595, 1);
7507 countingStream->write((uint64_t*)&cgen_var_595, 1 * 8);
7508 uint64_t cgen_var_596;
7509 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_596, 1);
7510 countingStream->write((uint64_t*)&cgen_var_596, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007511 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007512 uint64_t cgen_var_597;
7513 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_597, 1);
7514 countingStream->write((uint64_t*)&cgen_var_597, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007515 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7516 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7517 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7518 {
7519 marshal_VkImageResolve(countingStream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007520 }
7521 }
7522 uint32_t packetSize_vkCmdResolveImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7523 countingStream->rewind();
7524 uint32_t opcode_vkCmdResolveImage = OP_vkCmdResolveImage;
7525 stream->write(&opcode_vkCmdResolveImage, sizeof(uint32_t));
7526 stream->write(&packetSize_vkCmdResolveImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007527 uint64_t cgen_var_598;
7528 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_598, 1);
7529 stream->write((uint64_t*)&cgen_var_598, 1 * 8);
7530 uint64_t cgen_var_599;
7531 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_599, 1);
7532 stream->write((uint64_t*)&cgen_var_599, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007533 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007534 uint64_t cgen_var_600;
7535 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_600, 1);
7536 stream->write((uint64_t*)&cgen_var_600, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007537 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7538 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007539 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7540 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007541 marshal_VkImageResolve(stream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007542 }
7543}
7544
7545void VkEncoder::vkCmdSetEvent(
7546 VkCommandBuffer commandBuffer,
7547 VkEvent event,
7548 VkPipelineStageFlags stageMask)
7549{
7550 auto stream = mImpl->stream();
7551 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007552 auto resources = mImpl->resources();
7553 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007554 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007555 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007556 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007557 VkPipelineStageFlags local_stageMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007558 local_commandBuffer = commandBuffer;
7559 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007560 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007561 countingStream->rewind();
7562 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007563 uint64_t cgen_var_601;
7564 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_601, 1);
7565 countingStream->write((uint64_t*)&cgen_var_601, 1 * 8);
7566 uint64_t cgen_var_602;
7567 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_602, 1);
7568 countingStream->write((uint64_t*)&cgen_var_602, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007569 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007570 }
7571 uint32_t packetSize_vkCmdSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7572 countingStream->rewind();
7573 uint32_t opcode_vkCmdSetEvent = OP_vkCmdSetEvent;
7574 stream->write(&opcode_vkCmdSetEvent, sizeof(uint32_t));
7575 stream->write(&packetSize_vkCmdSetEvent, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007576 uint64_t cgen_var_603;
7577 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_603, 1);
7578 stream->write((uint64_t*)&cgen_var_603, 1 * 8);
7579 uint64_t cgen_var_604;
7580 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_604, 1);
7581 stream->write((uint64_t*)&cgen_var_604, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007582 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007583}
7584
7585void VkEncoder::vkCmdResetEvent(
7586 VkCommandBuffer commandBuffer,
7587 VkEvent event,
7588 VkPipelineStageFlags stageMask)
7589{
7590 auto stream = mImpl->stream();
7591 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007592 auto resources = mImpl->resources();
7593 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007594 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007595 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007596 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007597 VkPipelineStageFlags local_stageMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007598 local_commandBuffer = commandBuffer;
7599 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007600 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007601 countingStream->rewind();
7602 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007603 uint64_t cgen_var_605;
7604 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_605, 1);
7605 countingStream->write((uint64_t*)&cgen_var_605, 1 * 8);
7606 uint64_t cgen_var_606;
7607 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_606, 1);
7608 countingStream->write((uint64_t*)&cgen_var_606, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007609 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007610 }
7611 uint32_t packetSize_vkCmdResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7612 countingStream->rewind();
7613 uint32_t opcode_vkCmdResetEvent = OP_vkCmdResetEvent;
7614 stream->write(&opcode_vkCmdResetEvent, sizeof(uint32_t));
7615 stream->write(&packetSize_vkCmdResetEvent, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007616 uint64_t cgen_var_607;
7617 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_607, 1);
7618 stream->write((uint64_t*)&cgen_var_607, 1 * 8);
7619 uint64_t cgen_var_608;
7620 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_608, 1);
7621 stream->write((uint64_t*)&cgen_var_608, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007622 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007623}
7624
7625void VkEncoder::vkCmdWaitEvents(
7626 VkCommandBuffer commandBuffer,
7627 uint32_t eventCount,
7628 const VkEvent* pEvents,
7629 VkPipelineStageFlags srcStageMask,
7630 VkPipelineStageFlags dstStageMask,
7631 uint32_t memoryBarrierCount,
7632 const VkMemoryBarrier* pMemoryBarriers,
7633 uint32_t bufferMemoryBarrierCount,
7634 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
7635 uint32_t imageMemoryBarrierCount,
7636 const VkImageMemoryBarrier* pImageMemoryBarriers)
7637{
7638 auto stream = mImpl->stream();
7639 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007640 auto resources = mImpl->resources();
7641 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007642 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007643 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007644 uint32_t local_eventCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007645 VkEvent* local_pEvents;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007646 VkPipelineStageFlags local_srcStageMask;
7647 VkPipelineStageFlags local_dstStageMask;
7648 uint32_t local_memoryBarrierCount;
7649 VkMemoryBarrier* local_pMemoryBarriers;
7650 uint32_t local_bufferMemoryBarrierCount;
7651 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
7652 uint32_t local_imageMemoryBarrierCount;
7653 VkImageMemoryBarrier* local_pImageMemoryBarriers;
7654 local_commandBuffer = commandBuffer;
7655 local_eventCount = eventCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007656 local_pEvents = nullptr;
7657 if (pEvents)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007658 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007659 local_pEvents = (VkEvent*)pool->dupArray(pEvents, ((eventCount)) * sizeof(const VkEvent));
7660 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007661 local_srcStageMask = srcStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007662 local_dstStageMask = dstStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007663 local_memoryBarrierCount = memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007664 local_pMemoryBarriers = nullptr;
7665 if (pMemoryBarriers)
7666 {
7667 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007668 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7669 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007670 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007671 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007672 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007673 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007674 local_pBufferMemoryBarriers = nullptr;
7675 if (pBufferMemoryBarriers)
7676 {
7677 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007678 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7679 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007680 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007681 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007682 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007683 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007684 local_pImageMemoryBarriers = nullptr;
7685 if (pImageMemoryBarriers)
7686 {
7687 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007688 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7689 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007690 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
7691 }
7692 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007693 countingStream->rewind();
7694 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007695 uint64_t cgen_var_609;
7696 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_609, 1);
7697 countingStream->write((uint64_t*)&cgen_var_609, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007698 countingStream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007699 if (((eventCount)))
7700 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007701 uint64_t* cgen_var_610;
7702 countingStream->alloc((void**)&cgen_var_610, ((eventCount)) * 8);
7703 countingStream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_610, ((eventCount)));
7704 countingStream->write((uint64_t*)cgen_var_610, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007705 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007706 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7707 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7708 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
7709 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7710 {
7711 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
7712 }
7713 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
7714 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7715 {
7716 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
7717 }
7718 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
7719 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7720 {
7721 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007722 }
7723 }
7724 uint32_t packetSize_vkCmdWaitEvents = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7725 countingStream->rewind();
7726 uint32_t opcode_vkCmdWaitEvents = OP_vkCmdWaitEvents;
7727 stream->write(&opcode_vkCmdWaitEvents, sizeof(uint32_t));
7728 stream->write(&packetSize_vkCmdWaitEvents, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007729 uint64_t cgen_var_611;
7730 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_611, 1);
7731 stream->write((uint64_t*)&cgen_var_611, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007732 stream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007733 if (((eventCount)))
7734 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007735 uint64_t* cgen_var_612;
7736 stream->alloc((void**)&cgen_var_612, ((eventCount)) * 8);
7737 stream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_612, ((eventCount)));
7738 stream->write((uint64_t*)cgen_var_612, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007739 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007740 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7741 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7742 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007743 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7744 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007745 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007746 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007747 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007748 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7749 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007750 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007751 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007752 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007753 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7754 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007755 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007756 }
7757}
7758
7759void VkEncoder::vkCmdPipelineBarrier(
7760 VkCommandBuffer commandBuffer,
7761 VkPipelineStageFlags srcStageMask,
7762 VkPipelineStageFlags dstStageMask,
7763 VkDependencyFlags dependencyFlags,
7764 uint32_t memoryBarrierCount,
7765 const VkMemoryBarrier* pMemoryBarriers,
7766 uint32_t bufferMemoryBarrierCount,
7767 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
7768 uint32_t imageMemoryBarrierCount,
7769 const VkImageMemoryBarrier* pImageMemoryBarriers)
7770{
7771 auto stream = mImpl->stream();
7772 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007773 auto resources = mImpl->resources();
7774 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007775 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007776 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007777 VkPipelineStageFlags local_srcStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007778 VkPipelineStageFlags local_dstStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007779 VkDependencyFlags local_dependencyFlags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007780 uint32_t local_memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007781 VkMemoryBarrier* local_pMemoryBarriers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007782 uint32_t local_bufferMemoryBarrierCount;
7783 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
7784 uint32_t local_imageMemoryBarrierCount;
7785 VkImageMemoryBarrier* local_pImageMemoryBarriers;
7786 local_commandBuffer = commandBuffer;
7787 local_srcStageMask = srcStageMask;
7788 local_dstStageMask = dstStageMask;
7789 local_dependencyFlags = dependencyFlags;
7790 local_memoryBarrierCount = memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007791 local_pMemoryBarriers = nullptr;
7792 if (pMemoryBarriers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007793 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007794 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007795 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7796 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007797 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007798 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007799 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007800 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007801 local_pBufferMemoryBarriers = nullptr;
7802 if (pBufferMemoryBarriers)
7803 {
7804 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007805 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7806 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007807 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007808 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007809 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007810 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007811 local_pImageMemoryBarriers = nullptr;
7812 if (pImageMemoryBarriers)
7813 {
7814 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007815 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7816 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007817 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
7818 }
7819 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007820 countingStream->rewind();
7821 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007822 uint64_t cgen_var_613;
7823 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_613, 1);
7824 countingStream->write((uint64_t*)&cgen_var_613, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007825 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7826 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7827 countingStream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
7828 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
7829 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7830 {
7831 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
7832 }
7833 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
7834 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7835 {
7836 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
7837 }
7838 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
7839 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7840 {
7841 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007842 }
7843 }
7844 uint32_t packetSize_vkCmdPipelineBarrier = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7845 countingStream->rewind();
7846 uint32_t opcode_vkCmdPipelineBarrier = OP_vkCmdPipelineBarrier;
7847 stream->write(&opcode_vkCmdPipelineBarrier, sizeof(uint32_t));
7848 stream->write(&packetSize_vkCmdPipelineBarrier, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007849 uint64_t cgen_var_614;
7850 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_614, 1);
7851 stream->write((uint64_t*)&cgen_var_614, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007852 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7853 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7854 stream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
7855 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007856 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7857 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007858 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007859 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007860 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007861 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7862 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007863 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007864 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007865 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007866 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7867 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007868 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007869 }
7870}
7871
7872void VkEncoder::vkCmdBeginQuery(
7873 VkCommandBuffer commandBuffer,
7874 VkQueryPool queryPool,
7875 uint32_t query,
7876 VkQueryControlFlags flags)
7877{
7878 auto stream = mImpl->stream();
7879 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007880 auto resources = mImpl->resources();
7881 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007882 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007883 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007884 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007885 uint32_t local_query;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007886 VkQueryControlFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007887 local_commandBuffer = commandBuffer;
7888 local_queryPool = queryPool;
7889 local_query = query;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007890 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007891 countingStream->rewind();
7892 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007893 uint64_t cgen_var_615;
7894 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_615, 1);
7895 countingStream->write((uint64_t*)&cgen_var_615, 1 * 8);
7896 uint64_t cgen_var_616;
7897 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_616, 1);
7898 countingStream->write((uint64_t*)&cgen_var_616, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007899 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
7900 countingStream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007901 }
7902 uint32_t packetSize_vkCmdBeginQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7903 countingStream->rewind();
7904 uint32_t opcode_vkCmdBeginQuery = OP_vkCmdBeginQuery;
7905 stream->write(&opcode_vkCmdBeginQuery, sizeof(uint32_t));
7906 stream->write(&packetSize_vkCmdBeginQuery, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007907 uint64_t cgen_var_617;
7908 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_617, 1);
7909 stream->write((uint64_t*)&cgen_var_617, 1 * 8);
7910 uint64_t cgen_var_618;
7911 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_618, 1);
7912 stream->write((uint64_t*)&cgen_var_618, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007913 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
7914 stream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007915}
7916
7917void VkEncoder::vkCmdEndQuery(
7918 VkCommandBuffer commandBuffer,
7919 VkQueryPool queryPool,
7920 uint32_t query)
7921{
7922 auto stream = mImpl->stream();
7923 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007924 auto resources = mImpl->resources();
7925 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007926 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007927 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007928 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007929 uint32_t local_query;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007930 local_commandBuffer = commandBuffer;
7931 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007932 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007933 countingStream->rewind();
7934 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007935 uint64_t cgen_var_619;
7936 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_619, 1);
7937 countingStream->write((uint64_t*)&cgen_var_619, 1 * 8);
7938 uint64_t cgen_var_620;
7939 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_620, 1);
7940 countingStream->write((uint64_t*)&cgen_var_620, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007941 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007942 }
7943 uint32_t packetSize_vkCmdEndQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7944 countingStream->rewind();
7945 uint32_t opcode_vkCmdEndQuery = OP_vkCmdEndQuery;
7946 stream->write(&opcode_vkCmdEndQuery, sizeof(uint32_t));
7947 stream->write(&packetSize_vkCmdEndQuery, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007948 uint64_t cgen_var_621;
7949 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_621, 1);
7950 stream->write((uint64_t*)&cgen_var_621, 1 * 8);
7951 uint64_t cgen_var_622;
7952 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_622, 1);
7953 stream->write((uint64_t*)&cgen_var_622, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007954 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007955}
7956
7957void VkEncoder::vkCmdResetQueryPool(
7958 VkCommandBuffer commandBuffer,
7959 VkQueryPool queryPool,
7960 uint32_t firstQuery,
7961 uint32_t queryCount)
7962{
7963 auto stream = mImpl->stream();
7964 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007965 auto resources = mImpl->resources();
7966 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007967 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007968 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007969 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007970 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007971 uint32_t local_queryCount;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007972 local_commandBuffer = commandBuffer;
7973 local_queryPool = queryPool;
7974 local_firstQuery = firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007975 local_queryCount = queryCount;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007976 countingStream->rewind();
7977 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007978 uint64_t cgen_var_623;
7979 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_623, 1);
7980 countingStream->write((uint64_t*)&cgen_var_623, 1 * 8);
7981 uint64_t cgen_var_624;
7982 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_624, 1);
7983 countingStream->write((uint64_t*)&cgen_var_624, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007984 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
7985 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007986 }
7987 uint32_t packetSize_vkCmdResetQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7988 countingStream->rewind();
7989 uint32_t opcode_vkCmdResetQueryPool = OP_vkCmdResetQueryPool;
7990 stream->write(&opcode_vkCmdResetQueryPool, sizeof(uint32_t));
7991 stream->write(&packetSize_vkCmdResetQueryPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007992 uint64_t cgen_var_625;
7993 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_625, 1);
7994 stream->write((uint64_t*)&cgen_var_625, 1 * 8);
7995 uint64_t cgen_var_626;
7996 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_626, 1);
7997 stream->write((uint64_t*)&cgen_var_626, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007998 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
7999 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008000}
8001
8002void VkEncoder::vkCmdWriteTimestamp(
8003 VkCommandBuffer commandBuffer,
8004 VkPipelineStageFlagBits pipelineStage,
8005 VkQueryPool queryPool,
8006 uint32_t query)
8007{
8008 auto stream = mImpl->stream();
8009 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008010 auto resources = mImpl->resources();
8011 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008012 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008013 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008014 VkPipelineStageFlagBits local_pipelineStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008015 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008016 uint32_t local_query;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008017 local_commandBuffer = commandBuffer;
8018 local_pipelineStage = pipelineStage;
8019 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008020 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008021 countingStream->rewind();
8022 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008023 uint64_t cgen_var_627;
8024 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_627, 1);
8025 countingStream->write((uint64_t*)&cgen_var_627, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008026 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008027 uint64_t cgen_var_628;
8028 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_628, 1);
8029 countingStream->write((uint64_t*)&cgen_var_628, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008030 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008031 }
8032 uint32_t packetSize_vkCmdWriteTimestamp = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8033 countingStream->rewind();
8034 uint32_t opcode_vkCmdWriteTimestamp = OP_vkCmdWriteTimestamp;
8035 stream->write(&opcode_vkCmdWriteTimestamp, sizeof(uint32_t));
8036 stream->write(&packetSize_vkCmdWriteTimestamp, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008037 uint64_t cgen_var_629;
8038 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_629, 1);
8039 stream->write((uint64_t*)&cgen_var_629, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008040 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008041 uint64_t cgen_var_630;
8042 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_630, 1);
8043 stream->write((uint64_t*)&cgen_var_630, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008044 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008045}
8046
8047void VkEncoder::vkCmdCopyQueryPoolResults(
8048 VkCommandBuffer commandBuffer,
8049 VkQueryPool queryPool,
8050 uint32_t firstQuery,
8051 uint32_t queryCount,
8052 VkBuffer dstBuffer,
8053 VkDeviceSize dstOffset,
8054 VkDeviceSize stride,
8055 VkQueryResultFlags flags)
8056{
8057 auto stream = mImpl->stream();
8058 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008059 auto resources = mImpl->resources();
8060 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008061 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008062 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008063 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008064 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008065 uint32_t local_queryCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008066 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008067 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008068 VkDeviceSize local_stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008069 VkQueryResultFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008070 local_commandBuffer = commandBuffer;
8071 local_queryPool = queryPool;
8072 local_firstQuery = firstQuery;
8073 local_queryCount = queryCount;
8074 local_dstBuffer = dstBuffer;
8075 local_dstOffset = dstOffset;
8076 local_stride = stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008077 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008078 countingStream->rewind();
8079 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008080 uint64_t cgen_var_631;
8081 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_631, 1);
8082 countingStream->write((uint64_t*)&cgen_var_631, 1 * 8);
8083 uint64_t cgen_var_632;
8084 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_632, 1);
8085 countingStream->write((uint64_t*)&cgen_var_632, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008086 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8087 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008088 uint64_t cgen_var_633;
8089 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_633, 1);
8090 countingStream->write((uint64_t*)&cgen_var_633, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008091 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8092 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
8093 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008094 }
8095 uint32_t packetSize_vkCmdCopyQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8096 countingStream->rewind();
8097 uint32_t opcode_vkCmdCopyQueryPoolResults = OP_vkCmdCopyQueryPoolResults;
8098 stream->write(&opcode_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
8099 stream->write(&packetSize_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008100 uint64_t cgen_var_634;
8101 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_634, 1);
8102 stream->write((uint64_t*)&cgen_var_634, 1 * 8);
8103 uint64_t cgen_var_635;
8104 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_635, 1);
8105 stream->write((uint64_t*)&cgen_var_635, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008106 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8107 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008108 uint64_t cgen_var_636;
8109 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_636, 1);
8110 stream->write((uint64_t*)&cgen_var_636, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008111 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8112 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
8113 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008114}
8115
8116void VkEncoder::vkCmdPushConstants(
8117 VkCommandBuffer commandBuffer,
8118 VkPipelineLayout layout,
8119 VkShaderStageFlags stageFlags,
8120 uint32_t offset,
8121 uint32_t size,
8122 const void* pValues)
8123{
8124 auto stream = mImpl->stream();
8125 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008126 auto resources = mImpl->resources();
8127 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008128 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008129 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008130 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008131 VkShaderStageFlags local_stageFlags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008132 uint32_t local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008133 uint32_t local_size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008134 void* local_pValues;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008135 local_commandBuffer = commandBuffer;
8136 local_layout = layout;
8137 local_stageFlags = stageFlags;
8138 local_offset = offset;
8139 local_size = size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008140 local_pValues = nullptr;
8141 if (pValues)
8142 {
8143 local_pValues = (void*)pool->dupArray(pValues, ((size)) * sizeof(const uint8_t));
8144 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008145 countingStream->rewind();
8146 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008147 uint64_t cgen_var_637;
8148 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_637, 1);
8149 countingStream->write((uint64_t*)&cgen_var_637, 1 * 8);
8150 uint64_t cgen_var_638;
8151 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_638, 1);
8152 countingStream->write((uint64_t*)&cgen_var_638, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008153 countingStream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
8154 countingStream->write((uint32_t*)&local_offset, sizeof(uint32_t));
8155 countingStream->write((uint32_t*)&local_size, sizeof(uint32_t));
8156 countingStream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008157 }
8158 uint32_t packetSize_vkCmdPushConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8159 countingStream->rewind();
8160 uint32_t opcode_vkCmdPushConstants = OP_vkCmdPushConstants;
8161 stream->write(&opcode_vkCmdPushConstants, sizeof(uint32_t));
8162 stream->write(&packetSize_vkCmdPushConstants, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008163 uint64_t cgen_var_639;
8164 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_639, 1);
8165 stream->write((uint64_t*)&cgen_var_639, 1 * 8);
8166 uint64_t cgen_var_640;
8167 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_640, 1);
8168 stream->write((uint64_t*)&cgen_var_640, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008169 stream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
8170 stream->write((uint32_t*)&local_offset, sizeof(uint32_t));
8171 stream->write((uint32_t*)&local_size, sizeof(uint32_t));
8172 stream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008173}
8174
8175void VkEncoder::vkCmdBeginRenderPass(
8176 VkCommandBuffer commandBuffer,
8177 const VkRenderPassBeginInfo* pRenderPassBegin,
8178 VkSubpassContents contents)
8179{
8180 auto stream = mImpl->stream();
8181 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008182 auto resources = mImpl->resources();
8183 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008184 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008185 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008186 VkRenderPassBeginInfo* local_pRenderPassBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008187 VkSubpassContents local_contents;
8188 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008189 local_pRenderPassBegin = nullptr;
8190 if (pRenderPassBegin)
8191 {
8192 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
8193 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8194 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008195 local_contents = contents;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008196 countingStream->rewind();
8197 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008198 uint64_t cgen_var_641;
8199 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_641, 1);
8200 countingStream->write((uint64_t*)&cgen_var_641, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008201 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8202 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008203 }
8204 uint32_t packetSize_vkCmdBeginRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8205 countingStream->rewind();
8206 uint32_t opcode_vkCmdBeginRenderPass = OP_vkCmdBeginRenderPass;
8207 stream->write(&opcode_vkCmdBeginRenderPass, sizeof(uint32_t));
8208 stream->write(&packetSize_vkCmdBeginRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008209 uint64_t cgen_var_642;
8210 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_642, 1);
8211 stream->write((uint64_t*)&cgen_var_642, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008212 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8213 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008214}
8215
8216void VkEncoder::vkCmdNextSubpass(
8217 VkCommandBuffer commandBuffer,
8218 VkSubpassContents contents)
8219{
8220 auto stream = mImpl->stream();
8221 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008222 auto resources = mImpl->resources();
8223 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008224 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008225 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008226 VkSubpassContents local_contents;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008227 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008228 local_contents = contents;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008229 countingStream->rewind();
8230 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008231 uint64_t cgen_var_643;
8232 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_643, 1);
8233 countingStream->write((uint64_t*)&cgen_var_643, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008234 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008235 }
8236 uint32_t packetSize_vkCmdNextSubpass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8237 countingStream->rewind();
8238 uint32_t opcode_vkCmdNextSubpass = OP_vkCmdNextSubpass;
8239 stream->write(&opcode_vkCmdNextSubpass, sizeof(uint32_t));
8240 stream->write(&packetSize_vkCmdNextSubpass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008241 uint64_t cgen_var_644;
8242 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_644, 1);
8243 stream->write((uint64_t*)&cgen_var_644, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008244 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008245}
8246
8247void VkEncoder::vkCmdEndRenderPass(
8248 VkCommandBuffer commandBuffer)
8249{
8250 auto stream = mImpl->stream();
8251 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008252 auto resources = mImpl->resources();
8253 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008254 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008255 VkCommandBuffer local_commandBuffer;
8256 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008257 countingStream->rewind();
8258 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008259 uint64_t cgen_var_645;
8260 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_645, 1);
8261 countingStream->write((uint64_t*)&cgen_var_645, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008262 }
8263 uint32_t packetSize_vkCmdEndRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8264 countingStream->rewind();
8265 uint32_t opcode_vkCmdEndRenderPass = OP_vkCmdEndRenderPass;
8266 stream->write(&opcode_vkCmdEndRenderPass, sizeof(uint32_t));
8267 stream->write(&packetSize_vkCmdEndRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008268 uint64_t cgen_var_646;
8269 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_646, 1);
8270 stream->write((uint64_t*)&cgen_var_646, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008271}
8272
8273void VkEncoder::vkCmdExecuteCommands(
8274 VkCommandBuffer commandBuffer,
8275 uint32_t commandBufferCount,
8276 const VkCommandBuffer* pCommandBuffers)
8277{
8278 auto stream = mImpl->stream();
8279 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008280 auto resources = mImpl->resources();
8281 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008282 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008283 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008284 uint32_t local_commandBufferCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008285 VkCommandBuffer* local_pCommandBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008286 local_commandBuffer = commandBuffer;
8287 local_commandBufferCount = commandBufferCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008288 local_pCommandBuffers = nullptr;
8289 if (pCommandBuffers)
8290 {
8291 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
8292 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008293 countingStream->rewind();
8294 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008295 uint64_t cgen_var_647;
8296 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_647, 1);
8297 countingStream->write((uint64_t*)&cgen_var_647, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008298 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008299 if (((commandBufferCount)))
8300 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008301 uint64_t* cgen_var_648;
8302 countingStream->alloc((void**)&cgen_var_648, ((commandBufferCount)) * 8);
8303 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_648, ((commandBufferCount)));
8304 countingStream->write((uint64_t*)cgen_var_648, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008305 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008306 }
8307 uint32_t packetSize_vkCmdExecuteCommands = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8308 countingStream->rewind();
8309 uint32_t opcode_vkCmdExecuteCommands = OP_vkCmdExecuteCommands;
8310 stream->write(&opcode_vkCmdExecuteCommands, sizeof(uint32_t));
8311 stream->write(&packetSize_vkCmdExecuteCommands, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008312 uint64_t cgen_var_649;
8313 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_649, 1);
8314 stream->write((uint64_t*)&cgen_var_649, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008315 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008316 if (((commandBufferCount)))
8317 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008318 uint64_t* cgen_var_650;
8319 stream->alloc((void**)&cgen_var_650, ((commandBufferCount)) * 8);
8320 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_650, ((commandBufferCount)));
8321 stream->write((uint64_t*)cgen_var_650, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008322 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008323}
8324
8325#endif
8326#ifdef VK_VERSION_1_1
8327VkResult VkEncoder::vkEnumerateInstanceVersion(
8328 uint32_t* pApiVersion)
8329{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008330 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08008331 vkEnumerateInstanceVersion_VkResult_return = goldfish_vkEnumerateInstanceVersion(this, vkEnumerateInstanceVersion_VkResult_return, pApiVersion);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008332 return vkEnumerateInstanceVersion_VkResult_return;
8333}
8334
8335VkResult VkEncoder::vkBindBufferMemory2(
8336 VkDevice device,
8337 uint32_t bindInfoCount,
8338 const VkBindBufferMemoryInfo* pBindInfos)
8339{
8340 auto stream = mImpl->stream();
8341 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008342 auto resources = mImpl->resources();
8343 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008344 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008345 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008346 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008347 VkBindBufferMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008348 local_device = device;
8349 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008350 local_pBindInfos = nullptr;
8351 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008352 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008353 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008354 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8355 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008356 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
8357 }
8358 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008359 countingStream->rewind();
8360 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008361 uint64_t cgen_var_651;
8362 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_651, 1);
8363 countingStream->write((uint64_t*)&cgen_var_651, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008364 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
8365 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8366 {
8367 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008368 }
8369 }
8370 uint32_t packetSize_vkBindBufferMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8371 countingStream->rewind();
8372 uint32_t opcode_vkBindBufferMemory2 = OP_vkBindBufferMemory2;
8373 stream->write(&opcode_vkBindBufferMemory2, sizeof(uint32_t));
8374 stream->write(&packetSize_vkBindBufferMemory2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008375 uint64_t cgen_var_652;
8376 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_652, 1);
8377 stream->write((uint64_t*)&cgen_var_652, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008378 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008379 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8380 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008381 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008382 }
8383 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
8384 stream->read(&vkBindBufferMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008385 countingStream->clearPool();
8386 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008387 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008388 return vkBindBufferMemory2_VkResult_return;
8389}
8390
8391VkResult VkEncoder::vkBindImageMemory2(
8392 VkDevice device,
8393 uint32_t bindInfoCount,
8394 const VkBindImageMemoryInfo* pBindInfos)
8395{
8396 auto stream = mImpl->stream();
8397 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008398 auto resources = mImpl->resources();
8399 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008400 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008401 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008402 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008403 VkBindImageMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008404 local_device = device;
8405 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008406 local_pBindInfos = nullptr;
8407 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008408 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008409 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008410 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8411 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008412 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
8413 }
8414 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008415 countingStream->rewind();
8416 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008417 uint64_t cgen_var_653;
8418 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_653, 1);
8419 countingStream->write((uint64_t*)&cgen_var_653, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008420 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
8421 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8422 {
8423 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008424 }
8425 }
8426 uint32_t packetSize_vkBindImageMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8427 countingStream->rewind();
8428 uint32_t opcode_vkBindImageMemory2 = OP_vkBindImageMemory2;
8429 stream->write(&opcode_vkBindImageMemory2, sizeof(uint32_t));
8430 stream->write(&packetSize_vkBindImageMemory2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008431 uint64_t cgen_var_654;
8432 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_654, 1);
8433 stream->write((uint64_t*)&cgen_var_654, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008434 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008435 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8436 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008437 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008438 }
8439 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
8440 stream->read(&vkBindImageMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008441 countingStream->clearPool();
8442 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008443 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008444 return vkBindImageMemory2_VkResult_return;
8445}
8446
8447void VkEncoder::vkGetDeviceGroupPeerMemoryFeatures(
8448 VkDevice device,
8449 uint32_t heapIndex,
8450 uint32_t localDeviceIndex,
8451 uint32_t remoteDeviceIndex,
8452 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
8453{
8454 auto stream = mImpl->stream();
8455 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008456 auto resources = mImpl->resources();
8457 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008458 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008459 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008460 uint32_t local_heapIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008461 uint32_t local_localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008462 uint32_t local_remoteDeviceIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008463 local_device = device;
8464 local_heapIndex = heapIndex;
8465 local_localDeviceIndex = localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008466 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008467 countingStream->rewind();
8468 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008469 uint64_t cgen_var_655;
8470 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_655, 1);
8471 countingStream->write((uint64_t*)&cgen_var_655, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008472 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
8473 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
8474 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008475 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
8476 }
8477 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8478 countingStream->rewind();
8479 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeatures = OP_vkGetDeviceGroupPeerMemoryFeatures;
8480 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
8481 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008482 uint64_t cgen_var_656;
8483 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_656, 1);
8484 stream->write((uint64_t*)&cgen_var_656, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008485 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
8486 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
8487 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008488 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
8489 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
8490}
8491
8492void VkEncoder::vkCmdSetDeviceMask(
8493 VkCommandBuffer commandBuffer,
8494 uint32_t deviceMask)
8495{
8496 auto stream = mImpl->stream();
8497 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008498 auto resources = mImpl->resources();
8499 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008500 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008501 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008502 uint32_t local_deviceMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008503 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008504 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008505 countingStream->rewind();
8506 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008507 uint64_t cgen_var_657;
8508 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_657, 1);
8509 countingStream->write((uint64_t*)&cgen_var_657, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008510 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008511 }
8512 uint32_t packetSize_vkCmdSetDeviceMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8513 countingStream->rewind();
8514 uint32_t opcode_vkCmdSetDeviceMask = OP_vkCmdSetDeviceMask;
8515 stream->write(&opcode_vkCmdSetDeviceMask, sizeof(uint32_t));
8516 stream->write(&packetSize_vkCmdSetDeviceMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008517 uint64_t cgen_var_658;
8518 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_658, 1);
8519 stream->write((uint64_t*)&cgen_var_658, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008520 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008521}
8522
8523void VkEncoder::vkCmdDispatchBase(
8524 VkCommandBuffer commandBuffer,
8525 uint32_t baseGroupX,
8526 uint32_t baseGroupY,
8527 uint32_t baseGroupZ,
8528 uint32_t groupCountX,
8529 uint32_t groupCountY,
8530 uint32_t groupCountZ)
8531{
8532 auto stream = mImpl->stream();
8533 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008534 auto resources = mImpl->resources();
8535 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008536 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008537 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008538 uint32_t local_baseGroupX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008539 uint32_t local_baseGroupY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008540 uint32_t local_baseGroupZ;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008541 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008542 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008543 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008544 local_commandBuffer = commandBuffer;
8545 local_baseGroupX = baseGroupX;
8546 local_baseGroupY = baseGroupY;
8547 local_baseGroupZ = baseGroupZ;
8548 local_groupCountX = groupCountX;
8549 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008550 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008551 countingStream->rewind();
8552 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008553 uint64_t cgen_var_659;
8554 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_659, 1);
8555 countingStream->write((uint64_t*)&cgen_var_659, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008556 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
8557 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
8558 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
8559 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
8560 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
8561 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008562 }
8563 uint32_t packetSize_vkCmdDispatchBase = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8564 countingStream->rewind();
8565 uint32_t opcode_vkCmdDispatchBase = OP_vkCmdDispatchBase;
8566 stream->write(&opcode_vkCmdDispatchBase, sizeof(uint32_t));
8567 stream->write(&packetSize_vkCmdDispatchBase, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008568 uint64_t cgen_var_660;
8569 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_660, 1);
8570 stream->write((uint64_t*)&cgen_var_660, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008571 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
8572 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
8573 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
8574 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
8575 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
8576 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008577}
8578
8579VkResult VkEncoder::vkEnumeratePhysicalDeviceGroups(
8580 VkInstance instance,
8581 uint32_t* pPhysicalDeviceGroupCount,
8582 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
8583{
8584 auto stream = mImpl->stream();
8585 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008586 auto resources = mImpl->resources();
8587 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008588 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008589 VkInstance local_instance;
8590 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008591 countingStream->rewind();
8592 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008593 uint64_t cgen_var_661;
8594 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_661, 1);
8595 countingStream->write((uint64_t*)&cgen_var_661, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008596 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008597 uint64_t cgen_var_662 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
8598 countingStream->putBe64(cgen_var_662);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008599 if (pPhysicalDeviceGroupCount)
8600 {
8601 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
8602 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008603 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008604 uint64_t cgen_var_663 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
8605 countingStream->putBe64(cgen_var_663);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008606 if (pPhysicalDeviceGroupProperties)
8607 {
8608 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
8609 {
8610 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
8611 }
8612 }
8613 }
8614 uint32_t packetSize_vkEnumeratePhysicalDeviceGroups = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8615 countingStream->rewind();
8616 uint32_t opcode_vkEnumeratePhysicalDeviceGroups = OP_vkEnumeratePhysicalDeviceGroups;
8617 stream->write(&opcode_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
8618 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008619 uint64_t cgen_var_664;
8620 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_664, 1);
8621 stream->write((uint64_t*)&cgen_var_664, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008622 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008623 uint64_t cgen_var_665 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
8624 stream->putBe64(cgen_var_665);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008625 if (pPhysicalDeviceGroupCount)
8626 {
8627 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
8628 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008629 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008630 uint64_t cgen_var_666 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
8631 stream->putBe64(cgen_var_666);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008632 if (pPhysicalDeviceGroupProperties)
8633 {
8634 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
8635 {
8636 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
8637 }
8638 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008639 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008640 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008641 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008642 if (pPhysicalDeviceGroupCount)
8643 {
8644 if (!(check_pPhysicalDeviceGroupCount))
8645 {
8646 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
8647 }
8648 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
8649 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008650 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008651 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008652 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008653 if (pPhysicalDeviceGroupProperties)
8654 {
8655 if (!(check_pPhysicalDeviceGroupProperties))
8656 {
8657 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
8658 }
8659 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
8660 {
8661 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
8662 }
8663 }
8664 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
8665 stream->read(&vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008666 countingStream->clearPool();
8667 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008668 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008669 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
8670}
8671
8672void VkEncoder::vkGetImageMemoryRequirements2(
8673 VkDevice device,
8674 const VkImageMemoryRequirementsInfo2* pInfo,
8675 VkMemoryRequirements2* pMemoryRequirements)
8676{
8677 auto stream = mImpl->stream();
8678 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008679 auto resources = mImpl->resources();
8680 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008681 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008682 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008683 VkImageMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008684 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008685 local_pInfo = nullptr;
8686 if (pInfo)
8687 {
8688 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
8689 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
8690 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008691 countingStream->rewind();
8692 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008693 uint64_t cgen_var_669;
8694 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_669, 1);
8695 countingStream->write((uint64_t*)&cgen_var_669, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008696 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008697 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
8698 }
8699 uint32_t packetSize_vkGetImageMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8700 countingStream->rewind();
8701 uint32_t opcode_vkGetImageMemoryRequirements2 = OP_vkGetImageMemoryRequirements2;
8702 stream->write(&opcode_vkGetImageMemoryRequirements2, sizeof(uint32_t));
8703 stream->write(&packetSize_vkGetImageMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008704 uint64_t cgen_var_670;
8705 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_670, 1);
8706 stream->write((uint64_t*)&cgen_var_670, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008707 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008708 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8709 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8710}
8711
8712void VkEncoder::vkGetBufferMemoryRequirements2(
8713 VkDevice device,
8714 const VkBufferMemoryRequirementsInfo2* pInfo,
8715 VkMemoryRequirements2* pMemoryRequirements)
8716{
8717 auto stream = mImpl->stream();
8718 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008719 auto resources = mImpl->resources();
8720 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008721 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008722 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008723 VkBufferMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008724 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008725 local_pInfo = nullptr;
8726 if (pInfo)
8727 {
8728 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
8729 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
8730 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008731 countingStream->rewind();
8732 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008733 uint64_t cgen_var_671;
8734 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_671, 1);
8735 countingStream->write((uint64_t*)&cgen_var_671, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008736 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008737 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
8738 }
8739 uint32_t packetSize_vkGetBufferMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8740 countingStream->rewind();
8741 uint32_t opcode_vkGetBufferMemoryRequirements2 = OP_vkGetBufferMemoryRequirements2;
8742 stream->write(&opcode_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
8743 stream->write(&packetSize_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008744 uint64_t cgen_var_672;
8745 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_672, 1);
8746 stream->write((uint64_t*)&cgen_var_672, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008747 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008748 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8749 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8750}
8751
8752void VkEncoder::vkGetImageSparseMemoryRequirements2(
8753 VkDevice device,
8754 const VkImageSparseMemoryRequirementsInfo2* pInfo,
8755 uint32_t* pSparseMemoryRequirementCount,
8756 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
8757{
8758 auto stream = mImpl->stream();
8759 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008760 auto resources = mImpl->resources();
8761 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008762 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008763 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008764 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008765 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008766 local_pInfo = nullptr;
8767 if (pInfo)
8768 {
8769 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
8770 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
8771 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008772 countingStream->rewind();
8773 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008774 uint64_t cgen_var_673;
8775 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_673, 1);
8776 countingStream->write((uint64_t*)&cgen_var_673, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008777 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008778 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008779 uint64_t cgen_var_674 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
8780 countingStream->putBe64(cgen_var_674);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008781 if (pSparseMemoryRequirementCount)
8782 {
8783 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
8784 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008785 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008786 uint64_t cgen_var_675 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
8787 countingStream->putBe64(cgen_var_675);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008788 if (pSparseMemoryRequirements)
8789 {
8790 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
8791 {
8792 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
8793 }
8794 }
8795 }
8796 uint32_t packetSize_vkGetImageSparseMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8797 countingStream->rewind();
8798 uint32_t opcode_vkGetImageSparseMemoryRequirements2 = OP_vkGetImageSparseMemoryRequirements2;
8799 stream->write(&opcode_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
8800 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008801 uint64_t cgen_var_676;
8802 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_676, 1);
8803 stream->write((uint64_t*)&cgen_var_676, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008804 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008805 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008806 uint64_t cgen_var_677 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
8807 stream->putBe64(cgen_var_677);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008808 if (pSparseMemoryRequirementCount)
8809 {
8810 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
8811 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008812 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008813 uint64_t cgen_var_678 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
8814 stream->putBe64(cgen_var_678);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008815 if (pSparseMemoryRequirements)
8816 {
8817 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
8818 {
8819 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
8820 }
8821 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008822 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008823 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008824 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008825 if (pSparseMemoryRequirementCount)
8826 {
8827 if (!(check_pSparseMemoryRequirementCount))
8828 {
8829 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
8830 }
8831 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
8832 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008833 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008834 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008835 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008836 if (pSparseMemoryRequirements)
8837 {
8838 if (!(check_pSparseMemoryRequirements))
8839 {
8840 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
8841 }
8842 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
8843 {
8844 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
8845 }
8846 }
8847}
8848
8849void VkEncoder::vkGetPhysicalDeviceFeatures2(
8850 VkPhysicalDevice physicalDevice,
8851 VkPhysicalDeviceFeatures2* pFeatures)
8852{
8853 auto stream = mImpl->stream();
8854 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008855 auto resources = mImpl->resources();
8856 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008857 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008858 VkPhysicalDevice local_physicalDevice;
8859 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008860 countingStream->rewind();
8861 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008862 uint64_t cgen_var_681;
8863 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_681, 1);
8864 countingStream->write((uint64_t*)&cgen_var_681, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008865 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
8866 }
8867 uint32_t packetSize_vkGetPhysicalDeviceFeatures2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8868 countingStream->rewind();
8869 uint32_t opcode_vkGetPhysicalDeviceFeatures2 = OP_vkGetPhysicalDeviceFeatures2;
8870 stream->write(&opcode_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
8871 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008872 uint64_t cgen_var_682;
8873 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_682, 1);
8874 stream->write((uint64_t*)&cgen_var_682, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008875 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
8876 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
8877}
8878
8879void VkEncoder::vkGetPhysicalDeviceProperties2(
8880 VkPhysicalDevice physicalDevice,
8881 VkPhysicalDeviceProperties2* pProperties)
8882{
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08008883 goldfish_vkGetPhysicalDeviceProperties2(this, physicalDevice, pProperties);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008884}
8885
8886void VkEncoder::vkGetPhysicalDeviceFormatProperties2(
8887 VkPhysicalDevice physicalDevice,
8888 VkFormat format,
8889 VkFormatProperties2* pFormatProperties)
8890{
8891 auto stream = mImpl->stream();
8892 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008893 auto resources = mImpl->resources();
8894 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008895 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008896 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008897 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008898 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008899 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008900 countingStream->rewind();
8901 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008902 uint64_t cgen_var_683;
8903 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_683, 1);
8904 countingStream->write((uint64_t*)&cgen_var_683, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008905 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008906 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
8907 }
8908 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8909 countingStream->rewind();
8910 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2 = OP_vkGetPhysicalDeviceFormatProperties2;
8911 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
8912 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008913 uint64_t cgen_var_684;
8914 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_684, 1);
8915 stream->write((uint64_t*)&cgen_var_684, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008916 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008917 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
8918 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
8919}
8920
8921VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2(
8922 VkPhysicalDevice physicalDevice,
8923 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
8924 VkImageFormatProperties2* pImageFormatProperties)
8925{
8926 auto stream = mImpl->stream();
8927 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008928 auto resources = mImpl->resources();
8929 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008930 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008931 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008932 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008933 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008934 local_pImageFormatInfo = nullptr;
8935 if (pImageFormatInfo)
8936 {
8937 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
8938 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
8939 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008940 countingStream->rewind();
8941 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008942 uint64_t cgen_var_685;
8943 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_685, 1);
8944 countingStream->write((uint64_t*)&cgen_var_685, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008945 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008946 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
8947 }
8948 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8949 countingStream->rewind();
8950 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2 = OP_vkGetPhysicalDeviceImageFormatProperties2;
8951 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
8952 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008953 uint64_t cgen_var_686;
8954 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_686, 1);
8955 stream->write((uint64_t*)&cgen_var_686, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008956 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008957 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
8958 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
8959 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
8960 stream->read(&vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008961 countingStream->clearPool();
8962 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008963 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008964 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
8965}
8966
8967void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2(
8968 VkPhysicalDevice physicalDevice,
8969 uint32_t* pQueueFamilyPropertyCount,
8970 VkQueueFamilyProperties2* pQueueFamilyProperties)
8971{
8972 auto stream = mImpl->stream();
8973 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008974 auto resources = mImpl->resources();
8975 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008976 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008977 VkPhysicalDevice local_physicalDevice;
8978 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008979 countingStream->rewind();
8980 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008981 uint64_t cgen_var_687;
8982 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_687, 1);
8983 countingStream->write((uint64_t*)&cgen_var_687, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008984 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008985 uint64_t cgen_var_688 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
8986 countingStream->putBe64(cgen_var_688);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008987 if (pQueueFamilyPropertyCount)
8988 {
8989 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
8990 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008991 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008992 uint64_t cgen_var_689 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
8993 countingStream->putBe64(cgen_var_689);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008994 if (pQueueFamilyProperties)
8995 {
8996 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
8997 {
8998 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
8999 }
9000 }
9001 }
9002 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9003 countingStream->rewind();
9004 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2 = OP_vkGetPhysicalDeviceQueueFamilyProperties2;
9005 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
9006 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009007 uint64_t cgen_var_690;
9008 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_690, 1);
9009 stream->write((uint64_t*)&cgen_var_690, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009010 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009011 uint64_t cgen_var_691 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
9012 stream->putBe64(cgen_var_691);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009013 if (pQueueFamilyPropertyCount)
9014 {
9015 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
9016 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009017 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009018 uint64_t cgen_var_692 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
9019 stream->putBe64(cgen_var_692);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009020 if (pQueueFamilyProperties)
9021 {
9022 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9023 {
9024 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9025 }
9026 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009027 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009028 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009029 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009030 if (pQueueFamilyPropertyCount)
9031 {
9032 if (!(check_pQueueFamilyPropertyCount))
9033 {
9034 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
9035 }
9036 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
9037 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009038 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009039 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009040 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009041 if (pQueueFamilyProperties)
9042 {
9043 if (!(check_pQueueFamilyProperties))
9044 {
9045 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
9046 }
9047 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9048 {
9049 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9050 }
9051 }
9052}
9053
9054void VkEncoder::vkGetPhysicalDeviceMemoryProperties2(
9055 VkPhysicalDevice physicalDevice,
9056 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
9057{
9058 auto stream = mImpl->stream();
9059 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009060 auto resources = mImpl->resources();
9061 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009062 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009063 VkPhysicalDevice local_physicalDevice;
9064 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009065 countingStream->rewind();
9066 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009067 uint64_t cgen_var_695;
9068 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_695, 1);
9069 countingStream->write((uint64_t*)&cgen_var_695, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009070 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9071 }
9072 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9073 countingStream->rewind();
9074 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2 = OP_vkGetPhysicalDeviceMemoryProperties2;
9075 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
9076 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009077 uint64_t cgen_var_696;
9078 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_696, 1);
9079 stream->write((uint64_t*)&cgen_var_696, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009080 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9081 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9082}
9083
9084void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2(
9085 VkPhysicalDevice physicalDevice,
9086 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
9087 uint32_t* pPropertyCount,
9088 VkSparseImageFormatProperties2* pProperties)
9089{
9090 auto stream = mImpl->stream();
9091 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009092 auto resources = mImpl->resources();
9093 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009094 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009095 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009096 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009097 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009098 local_pFormatInfo = nullptr;
9099 if (pFormatInfo)
9100 {
9101 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
9102 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
9103 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009104 countingStream->rewind();
9105 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009106 uint64_t cgen_var_697;
9107 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_697, 1);
9108 countingStream->write((uint64_t*)&cgen_var_697, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009109 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009110 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009111 uint64_t cgen_var_698 = (uint64_t)(uintptr_t)pPropertyCount;
9112 countingStream->putBe64(cgen_var_698);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009113 if (pPropertyCount)
9114 {
9115 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
9116 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009117 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009118 uint64_t cgen_var_699 = (uint64_t)(uintptr_t)pProperties;
9119 countingStream->putBe64(cgen_var_699);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009120 if (pProperties)
9121 {
9122 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9123 {
9124 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
9125 }
9126 }
9127 }
9128 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9129 countingStream->rewind();
9130 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2 = OP_vkGetPhysicalDeviceSparseImageFormatProperties2;
9131 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
9132 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009133 uint64_t cgen_var_700;
9134 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_700, 1);
9135 stream->write((uint64_t*)&cgen_var_700, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009136 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009137 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009138 uint64_t cgen_var_701 = (uint64_t)(uintptr_t)pPropertyCount;
9139 stream->putBe64(cgen_var_701);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009140 if (pPropertyCount)
9141 {
9142 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
9143 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009144 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009145 uint64_t cgen_var_702 = (uint64_t)(uintptr_t)pProperties;
9146 stream->putBe64(cgen_var_702);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009147 if (pProperties)
9148 {
9149 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9150 {
9151 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
9152 }
9153 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009154 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009155 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009156 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009157 if (pPropertyCount)
9158 {
9159 if (!(check_pPropertyCount))
9160 {
9161 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
9162 }
9163 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
9164 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009165 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009166 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009167 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009168 if (pProperties)
9169 {
9170 if (!(check_pProperties))
9171 {
9172 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
9173 }
9174 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9175 {
9176 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
9177 }
9178 }
9179}
9180
9181void VkEncoder::vkTrimCommandPool(
9182 VkDevice device,
9183 VkCommandPool commandPool,
9184 VkCommandPoolTrimFlags flags)
9185{
9186 auto stream = mImpl->stream();
9187 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009188 auto resources = mImpl->resources();
9189 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009190 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009191 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009192 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009193 VkCommandPoolTrimFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009194 local_device = device;
9195 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009196 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009197 countingStream->rewind();
9198 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009199 uint64_t cgen_var_705;
9200 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_705, 1);
9201 countingStream->write((uint64_t*)&cgen_var_705, 1 * 8);
9202 uint64_t cgen_var_706;
9203 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_706, 1);
9204 countingStream->write((uint64_t*)&cgen_var_706, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009205 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009206 }
9207 uint32_t packetSize_vkTrimCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9208 countingStream->rewind();
9209 uint32_t opcode_vkTrimCommandPool = OP_vkTrimCommandPool;
9210 stream->write(&opcode_vkTrimCommandPool, sizeof(uint32_t));
9211 stream->write(&packetSize_vkTrimCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009212 uint64_t cgen_var_707;
9213 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_707, 1);
9214 stream->write((uint64_t*)&cgen_var_707, 1 * 8);
9215 uint64_t cgen_var_708;
9216 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_708, 1);
9217 stream->write((uint64_t*)&cgen_var_708, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009218 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009219}
9220
9221void VkEncoder::vkGetDeviceQueue2(
9222 VkDevice device,
9223 const VkDeviceQueueInfo2* pQueueInfo,
9224 VkQueue* pQueue)
9225{
9226 auto stream = mImpl->stream();
9227 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009228 auto resources = mImpl->resources();
9229 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009230 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009231 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009232 VkDeviceQueueInfo2* local_pQueueInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009233 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009234 local_pQueueInfo = nullptr;
9235 if (pQueueInfo)
9236 {
9237 local_pQueueInfo = (VkDeviceQueueInfo2*)pool->alloc(sizeof(const VkDeviceQueueInfo2));
9238 deepcopy_VkDeviceQueueInfo2(pool, pQueueInfo, (VkDeviceQueueInfo2*)(local_pQueueInfo));
9239 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009240 countingStream->rewind();
9241 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009242 uint64_t cgen_var_709;
9243 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_709, 1);
9244 countingStream->write((uint64_t*)&cgen_var_709, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009245 marshal_VkDeviceQueueInfo2(countingStream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009246 uint64_t cgen_var_710;
9247 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_710, 1);
9248 countingStream->write((uint64_t*)&cgen_var_710, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009249 }
9250 uint32_t packetSize_vkGetDeviceQueue2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9251 countingStream->rewind();
9252 uint32_t opcode_vkGetDeviceQueue2 = OP_vkGetDeviceQueue2;
9253 stream->write(&opcode_vkGetDeviceQueue2, sizeof(uint32_t));
9254 stream->write(&packetSize_vkGetDeviceQueue2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009255 uint64_t cgen_var_711;
9256 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_711, 1);
9257 stream->write((uint64_t*)&cgen_var_711, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009258 marshal_VkDeviceQueueInfo2(stream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08009259 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009260 uint64_t cgen_var_712;
9261 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_712, 1);
9262 stream->write((uint64_t*)&cgen_var_712, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009263 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009264 uint64_t cgen_var_713;
9265 stream->read((uint64_t*)&cgen_var_713, 8);
9266 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_713, (VkQueue*)pQueue, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009267}
9268
9269VkResult VkEncoder::vkCreateSamplerYcbcrConversion(
9270 VkDevice device,
9271 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
9272 const VkAllocationCallbacks* pAllocator,
9273 VkSamplerYcbcrConversion* pYcbcrConversion)
9274{
9275 auto stream = mImpl->stream();
9276 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009277 auto resources = mImpl->resources();
9278 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009279 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009280 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009281 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009282 VkAllocationCallbacks* local_pAllocator;
9283 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009284 local_pCreateInfo = nullptr;
9285 if (pCreateInfo)
9286 {
9287 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
9288 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
9289 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009290 local_pAllocator = nullptr;
9291 if (pAllocator)
9292 {
9293 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9294 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9295 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009296 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009297 countingStream->rewind();
9298 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009299 uint64_t cgen_var_714;
9300 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_714, 1);
9301 countingStream->write((uint64_t*)&cgen_var_714, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009302 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009303 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009304 uint64_t cgen_var_715 = (uint64_t)(uintptr_t)local_pAllocator;
9305 countingStream->putBe64(cgen_var_715);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009306 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009307 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009308 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009309 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009310 uint64_t cgen_var_716;
9311 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_716, 1);
9312 countingStream->write((uint64_t*)&cgen_var_716, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009313 }
9314 uint32_t packetSize_vkCreateSamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9315 countingStream->rewind();
9316 uint32_t opcode_vkCreateSamplerYcbcrConversion = OP_vkCreateSamplerYcbcrConversion;
9317 stream->write(&opcode_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
9318 stream->write(&packetSize_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009319 uint64_t cgen_var_717;
9320 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_717, 1);
9321 stream->write((uint64_t*)&cgen_var_717, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009322 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009323 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009324 uint64_t cgen_var_718 = (uint64_t)(uintptr_t)local_pAllocator;
9325 stream->putBe64(cgen_var_718);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009326 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009327 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009328 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009329 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08009330 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009331 uint64_t cgen_var_719;
9332 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_719, 1);
9333 stream->write((uint64_t*)&cgen_var_719, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009334 stream->setHandleMapping(resources->unwrapMapping());
9335 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009336 uint64_t cgen_var_720;
9337 stream->read((uint64_t*)&cgen_var_720, 8);
9338 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_720, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009339 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009340 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
9341 stream->read(&vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009342 countingStream->clearPool();
9343 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009344 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009345 return vkCreateSamplerYcbcrConversion_VkResult_return;
9346}
9347
9348void VkEncoder::vkDestroySamplerYcbcrConversion(
9349 VkDevice device,
9350 VkSamplerYcbcrConversion ycbcrConversion,
9351 const VkAllocationCallbacks* pAllocator)
9352{
9353 auto stream = mImpl->stream();
9354 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009355 auto resources = mImpl->resources();
9356 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009357 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009358 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009359 VkSamplerYcbcrConversion local_ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009360 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009361 local_device = device;
9362 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009363 local_pAllocator = nullptr;
9364 if (pAllocator)
9365 {
9366 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9367 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9368 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009369 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009370 countingStream->rewind();
9371 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009372 uint64_t cgen_var_721;
9373 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_721, 1);
9374 countingStream->write((uint64_t*)&cgen_var_721, 1 * 8);
9375 uint64_t cgen_var_722;
9376 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_722, 1);
9377 countingStream->write((uint64_t*)&cgen_var_722, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009378 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009379 uint64_t cgen_var_723 = (uint64_t)(uintptr_t)local_pAllocator;
9380 countingStream->putBe64(cgen_var_723);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009381 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009382 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009383 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009384 }
9385 }
9386 uint32_t packetSize_vkDestroySamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9387 countingStream->rewind();
9388 uint32_t opcode_vkDestroySamplerYcbcrConversion = OP_vkDestroySamplerYcbcrConversion;
9389 stream->write(&opcode_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
9390 stream->write(&packetSize_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009391 uint64_t cgen_var_724;
9392 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_724, 1);
9393 stream->write((uint64_t*)&cgen_var_724, 1 * 8);
9394 uint64_t cgen_var_725;
9395 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_725, 1);
9396 stream->write((uint64_t*)&cgen_var_725, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009397 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009398 uint64_t cgen_var_726 = (uint64_t)(uintptr_t)local_pAllocator;
9399 stream->putBe64(cgen_var_726);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009400 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009401 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009402 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009403 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009404 resources->destroyMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&ycbcrConversion);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009405}
9406
9407VkResult VkEncoder::vkCreateDescriptorUpdateTemplate(
9408 VkDevice device,
9409 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
9410 const VkAllocationCallbacks* pAllocator,
9411 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
9412{
9413 auto stream = mImpl->stream();
9414 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009415 auto resources = mImpl->resources();
9416 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009417 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009418 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009419 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009420 VkAllocationCallbacks* local_pAllocator;
9421 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009422 local_pCreateInfo = nullptr;
9423 if (pCreateInfo)
9424 {
9425 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
9426 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
9427 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009428 local_pAllocator = nullptr;
9429 if (pAllocator)
9430 {
9431 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9432 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9433 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009434 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009435 countingStream->rewind();
9436 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009437 uint64_t cgen_var_727;
9438 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_727, 1);
9439 countingStream->write((uint64_t*)&cgen_var_727, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009440 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009441 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009442 uint64_t cgen_var_728 = (uint64_t)(uintptr_t)local_pAllocator;
9443 countingStream->putBe64(cgen_var_728);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009444 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009445 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009446 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009447 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009448 uint64_t cgen_var_729;
9449 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_729, 1);
9450 countingStream->write((uint64_t*)&cgen_var_729, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009451 }
9452 uint32_t packetSize_vkCreateDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9453 countingStream->rewind();
9454 uint32_t opcode_vkCreateDescriptorUpdateTemplate = OP_vkCreateDescriptorUpdateTemplate;
9455 stream->write(&opcode_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
9456 stream->write(&packetSize_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009457 uint64_t cgen_var_730;
9458 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_730, 1);
9459 stream->write((uint64_t*)&cgen_var_730, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009460 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009461 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009462 uint64_t cgen_var_731 = (uint64_t)(uintptr_t)local_pAllocator;
9463 stream->putBe64(cgen_var_731);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009464 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009465 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009466 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009467 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08009468 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009469 uint64_t cgen_var_732;
9470 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_732, 1);
9471 stream->write((uint64_t*)&cgen_var_732, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009472 stream->setHandleMapping(resources->unwrapMapping());
9473 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009474 uint64_t cgen_var_733;
9475 stream->read((uint64_t*)&cgen_var_733, 8);
9476 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_733, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009477 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009478 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
9479 stream->read(&vkCreateDescriptorUpdateTemplate_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009480 countingStream->clearPool();
9481 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009482 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009483 return vkCreateDescriptorUpdateTemplate_VkResult_return;
9484}
9485
9486void VkEncoder::vkDestroyDescriptorUpdateTemplate(
9487 VkDevice device,
9488 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
9489 const VkAllocationCallbacks* pAllocator)
9490{
9491 auto stream = mImpl->stream();
9492 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009493 auto resources = mImpl->resources();
9494 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009495 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009496 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009497 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009498 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009499 local_device = device;
9500 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009501 local_pAllocator = nullptr;
9502 if (pAllocator)
9503 {
9504 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9505 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9506 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009507 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009508 countingStream->rewind();
9509 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009510 uint64_t cgen_var_734;
9511 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_734, 1);
9512 countingStream->write((uint64_t*)&cgen_var_734, 1 * 8);
9513 uint64_t cgen_var_735;
9514 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_735, 1);
9515 countingStream->write((uint64_t*)&cgen_var_735, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009516 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009517 uint64_t cgen_var_736 = (uint64_t)(uintptr_t)local_pAllocator;
9518 countingStream->putBe64(cgen_var_736);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009519 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009520 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009521 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009522 }
9523 }
9524 uint32_t packetSize_vkDestroyDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9525 countingStream->rewind();
9526 uint32_t opcode_vkDestroyDescriptorUpdateTemplate = OP_vkDestroyDescriptorUpdateTemplate;
9527 stream->write(&opcode_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
9528 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009529 uint64_t cgen_var_737;
9530 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_737, 1);
9531 stream->write((uint64_t*)&cgen_var_737, 1 * 8);
9532 uint64_t cgen_var_738;
9533 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_738, 1);
9534 stream->write((uint64_t*)&cgen_var_738, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009535 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009536 uint64_t cgen_var_739 = (uint64_t)(uintptr_t)local_pAllocator;
9537 stream->putBe64(cgen_var_739);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009538 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009539 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009540 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009541 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009542 resources->destroyMapping()->mapHandles_VkDescriptorUpdateTemplate((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009543}
9544
9545void VkEncoder::vkUpdateDescriptorSetWithTemplate(
9546 VkDevice device,
9547 VkDescriptorSet descriptorSet,
9548 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
9549 const void* pData)
9550{
9551 auto stream = mImpl->stream();
9552 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009553 auto resources = mImpl->resources();
9554 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009555 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009556 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009557 VkDescriptorSet local_descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009558 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009559 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009560 local_device = device;
9561 local_descriptorSet = descriptorSet;
9562 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009563 local_pData = nullptr;
9564 if (pData)
9565 {
9566 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
9567 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009568 countingStream->rewind();
9569 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009570 uint64_t cgen_var_740;
9571 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_740, 1);
9572 countingStream->write((uint64_t*)&cgen_var_740, 1 * 8);
9573 uint64_t cgen_var_741;
9574 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_741, 1);
9575 countingStream->write((uint64_t*)&cgen_var_741, 1 * 8);
9576 uint64_t cgen_var_742;
9577 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_742, 1);
9578 countingStream->write((uint64_t*)&cgen_var_742, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009579 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009580 uint64_t cgen_var_743 = (uint64_t)(uintptr_t)local_pData;
9581 countingStream->putBe64(cgen_var_743);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009582 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009583 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009584 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009585 }
9586 }
9587 uint32_t packetSize_vkUpdateDescriptorSetWithTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9588 countingStream->rewind();
9589 uint32_t opcode_vkUpdateDescriptorSetWithTemplate = OP_vkUpdateDescriptorSetWithTemplate;
9590 stream->write(&opcode_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
9591 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009592 uint64_t cgen_var_744;
9593 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_744, 1);
9594 stream->write((uint64_t*)&cgen_var_744, 1 * 8);
9595 uint64_t cgen_var_745;
9596 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_745, 1);
9597 stream->write((uint64_t*)&cgen_var_745, 1 * 8);
9598 uint64_t cgen_var_746;
9599 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_746, 1);
9600 stream->write((uint64_t*)&cgen_var_746, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009601 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009602 uint64_t cgen_var_747 = (uint64_t)(uintptr_t)local_pData;
9603 stream->putBe64(cgen_var_747);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009604 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009605 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009606 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009607 }
9608}
9609
9610void VkEncoder::vkGetPhysicalDeviceExternalBufferProperties(
9611 VkPhysicalDevice physicalDevice,
9612 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
9613 VkExternalBufferProperties* pExternalBufferProperties)
9614{
9615 auto stream = mImpl->stream();
9616 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009617 auto resources = mImpl->resources();
9618 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009619 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009620 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009621 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009622 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009623 local_pExternalBufferInfo = nullptr;
9624 if (pExternalBufferInfo)
9625 {
9626 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
9627 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
9628 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009629 countingStream->rewind();
9630 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009631 uint64_t cgen_var_748;
9632 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_748, 1);
9633 countingStream->write((uint64_t*)&cgen_var_748, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009634 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009635 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
9636 }
9637 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9638 countingStream->rewind();
9639 uint32_t opcode_vkGetPhysicalDeviceExternalBufferProperties = OP_vkGetPhysicalDeviceExternalBufferProperties;
9640 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
9641 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009642 uint64_t cgen_var_749;
9643 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_749, 1);
9644 stream->write((uint64_t*)&cgen_var_749, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009645 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009646 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
9647 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
9648}
9649
9650void VkEncoder::vkGetPhysicalDeviceExternalFenceProperties(
9651 VkPhysicalDevice physicalDevice,
9652 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
9653 VkExternalFenceProperties* pExternalFenceProperties)
9654{
9655 auto stream = mImpl->stream();
9656 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009657 auto resources = mImpl->resources();
9658 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009659 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009660 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009661 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009662 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009663 local_pExternalFenceInfo = nullptr;
9664 if (pExternalFenceInfo)
9665 {
9666 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
9667 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
9668 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009669 countingStream->rewind();
9670 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009671 uint64_t cgen_var_750;
9672 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_750, 1);
9673 countingStream->write((uint64_t*)&cgen_var_750, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009674 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009675 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
9676 }
9677 uint32_t packetSize_vkGetPhysicalDeviceExternalFenceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9678 countingStream->rewind();
9679 uint32_t opcode_vkGetPhysicalDeviceExternalFenceProperties = OP_vkGetPhysicalDeviceExternalFenceProperties;
9680 stream->write(&opcode_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
9681 stream->write(&packetSize_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009682 uint64_t cgen_var_751;
9683 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_751, 1);
9684 stream->write((uint64_t*)&cgen_var_751, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009685 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009686 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
9687 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
9688}
9689
9690void VkEncoder::vkGetPhysicalDeviceExternalSemaphoreProperties(
9691 VkPhysicalDevice physicalDevice,
9692 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
9693 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
9694{
9695 auto stream = mImpl->stream();
9696 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009697 auto resources = mImpl->resources();
9698 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009699 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009700 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009701 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009702 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009703 local_pExternalSemaphoreInfo = nullptr;
9704 if (pExternalSemaphoreInfo)
9705 {
9706 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
9707 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
9708 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009709 countingStream->rewind();
9710 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009711 uint64_t cgen_var_752;
9712 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_752, 1);
9713 countingStream->write((uint64_t*)&cgen_var_752, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009714 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009715 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
9716 }
9717 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9718 countingStream->rewind();
9719 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphoreProperties = OP_vkGetPhysicalDeviceExternalSemaphoreProperties;
9720 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
9721 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009722 uint64_t cgen_var_753;
9723 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_753, 1);
9724 stream->write((uint64_t*)&cgen_var_753, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009725 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009726 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
9727 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
9728}
9729
9730void VkEncoder::vkGetDescriptorSetLayoutSupport(
9731 VkDevice device,
9732 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
9733 VkDescriptorSetLayoutSupport* pSupport)
9734{
9735 auto stream = mImpl->stream();
9736 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009737 auto resources = mImpl->resources();
9738 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009739 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009740 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009741 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009742 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009743 local_pCreateInfo = nullptr;
9744 if (pCreateInfo)
9745 {
9746 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
9747 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
9748 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009749 countingStream->rewind();
9750 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009751 uint64_t cgen_var_754;
9752 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_754, 1);
9753 countingStream->write((uint64_t*)&cgen_var_754, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009754 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009755 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
9756 }
9757 uint32_t packetSize_vkGetDescriptorSetLayoutSupport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9758 countingStream->rewind();
9759 uint32_t opcode_vkGetDescriptorSetLayoutSupport = OP_vkGetDescriptorSetLayoutSupport;
9760 stream->write(&opcode_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
9761 stream->write(&packetSize_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009762 uint64_t cgen_var_755;
9763 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_755, 1);
9764 stream->write((uint64_t*)&cgen_var_755, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009765 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009766 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
9767 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
9768}
9769
9770#endif
9771#ifdef VK_KHR_surface
9772void VkEncoder::vkDestroySurfaceKHR(
9773 VkInstance instance,
9774 VkSurfaceKHR surface,
9775 const VkAllocationCallbacks* pAllocator)
9776{
9777 auto stream = mImpl->stream();
9778 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009779 auto resources = mImpl->resources();
9780 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009781 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009782 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009783 VkSurfaceKHR local_surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009784 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009785 local_instance = instance;
9786 local_surface = surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009787 local_pAllocator = nullptr;
9788 if (pAllocator)
9789 {
9790 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9791 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9792 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009793 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009794 countingStream->rewind();
9795 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009796 uint64_t cgen_var_756;
9797 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_756, 1);
9798 countingStream->write((uint64_t*)&cgen_var_756, 1 * 8);
9799 uint64_t cgen_var_757;
9800 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_757, 1);
9801 countingStream->write((uint64_t*)&cgen_var_757, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009802 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009803 uint64_t cgen_var_758 = (uint64_t)(uintptr_t)local_pAllocator;
9804 countingStream->putBe64(cgen_var_758);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009805 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009806 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009807 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009808 }
9809 }
9810 uint32_t packetSize_vkDestroySurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9811 countingStream->rewind();
9812 uint32_t opcode_vkDestroySurfaceKHR = OP_vkDestroySurfaceKHR;
9813 stream->write(&opcode_vkDestroySurfaceKHR, sizeof(uint32_t));
9814 stream->write(&packetSize_vkDestroySurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009815 uint64_t cgen_var_759;
9816 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_759, 1);
9817 stream->write((uint64_t*)&cgen_var_759, 1 * 8);
9818 uint64_t cgen_var_760;
9819 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_760, 1);
9820 stream->write((uint64_t*)&cgen_var_760, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009821 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009822 uint64_t cgen_var_761 = (uint64_t)(uintptr_t)local_pAllocator;
9823 stream->putBe64(cgen_var_761);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009824 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009825 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009826 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009827 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009828 resources->destroyMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&surface);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009829}
9830
9831VkResult VkEncoder::vkGetPhysicalDeviceSurfaceSupportKHR(
9832 VkPhysicalDevice physicalDevice,
9833 uint32_t queueFamilyIndex,
9834 VkSurfaceKHR surface,
9835 VkBool32* pSupported)
9836{
9837 auto stream = mImpl->stream();
9838 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009839 auto resources = mImpl->resources();
9840 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009841 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009842 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009843 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009844 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009845 local_physicalDevice = physicalDevice;
9846 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009847 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009848 countingStream->rewind();
9849 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009850 uint64_t cgen_var_762;
9851 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_762, 1);
9852 countingStream->write((uint64_t*)&cgen_var_762, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009853 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009854 uint64_t cgen_var_763;
9855 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_763, 1);
9856 countingStream->write((uint64_t*)&cgen_var_763, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009857 countingStream->write((VkBool32*)pSupported, sizeof(VkBool32));
9858 }
9859 uint32_t packetSize_vkGetPhysicalDeviceSurfaceSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9860 countingStream->rewind();
9861 uint32_t opcode_vkGetPhysicalDeviceSurfaceSupportKHR = OP_vkGetPhysicalDeviceSurfaceSupportKHR;
9862 stream->write(&opcode_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
9863 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009864 uint64_t cgen_var_764;
9865 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_764, 1);
9866 stream->write((uint64_t*)&cgen_var_764, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009867 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009868 uint64_t cgen_var_765;
9869 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_765, 1);
9870 stream->write((uint64_t*)&cgen_var_765, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009871 stream->write((VkBool32*)pSupported, sizeof(VkBool32));
9872 stream->read((VkBool32*)pSupported, sizeof(VkBool32));
9873 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
9874 stream->read(&vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009875 countingStream->clearPool();
9876 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009877 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009878 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
9879}
9880
9881VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
9882 VkPhysicalDevice physicalDevice,
9883 VkSurfaceKHR surface,
9884 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
9885{
9886 auto stream = mImpl->stream();
9887 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009888 auto resources = mImpl->resources();
9889 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009890 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009891 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009892 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009893 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009894 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009895 countingStream->rewind();
9896 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009897 uint64_t cgen_var_766;
9898 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_766, 1);
9899 countingStream->write((uint64_t*)&cgen_var_766, 1 * 8);
9900 uint64_t cgen_var_767;
9901 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_767, 1);
9902 countingStream->write((uint64_t*)&cgen_var_767, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009903 marshal_VkSurfaceCapabilitiesKHR(countingStream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
9904 }
9905 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9906 countingStream->rewind();
9907 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
9908 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
9909 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009910 uint64_t cgen_var_768;
9911 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_768, 1);
9912 stream->write((uint64_t*)&cgen_var_768, 1 * 8);
9913 uint64_t cgen_var_769;
9914 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_769, 1);
9915 stream->write((uint64_t*)&cgen_var_769, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009916 marshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
9917 unmarshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
9918 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
9919 stream->read(&vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009920 countingStream->clearPool();
9921 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009922 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009923 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
9924}
9925
9926VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormatsKHR(
9927 VkPhysicalDevice physicalDevice,
9928 VkSurfaceKHR surface,
9929 uint32_t* pSurfaceFormatCount,
9930 VkSurfaceFormatKHR* pSurfaceFormats)
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 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009938 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009939 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009940 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009941 countingStream->rewind();
9942 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009943 uint64_t cgen_var_770;
9944 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_770, 1);
9945 countingStream->write((uint64_t*)&cgen_var_770, 1 * 8);
9946 uint64_t cgen_var_771;
9947 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_771, 1);
9948 countingStream->write((uint64_t*)&cgen_var_771, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009949 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009950 uint64_t cgen_var_772 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
9951 countingStream->putBe64(cgen_var_772);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009952 if (pSurfaceFormatCount)
9953 {
9954 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
9955 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009956 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009957 uint64_t cgen_var_773 = (uint64_t)(uintptr_t)pSurfaceFormats;
9958 countingStream->putBe64(cgen_var_773);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009959 if (pSurfaceFormats)
9960 {
9961 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
9962 {
9963 marshal_VkSurfaceFormatKHR(countingStream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
9964 }
9965 }
9966 }
9967 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9968 countingStream->rewind();
9969 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormatsKHR = OP_vkGetPhysicalDeviceSurfaceFormatsKHR;
9970 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
9971 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009972 uint64_t cgen_var_774;
9973 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_774, 1);
9974 stream->write((uint64_t*)&cgen_var_774, 1 * 8);
9975 uint64_t cgen_var_775;
9976 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_775, 1);
9977 stream->write((uint64_t*)&cgen_var_775, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009978 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009979 uint64_t cgen_var_776 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
9980 stream->putBe64(cgen_var_776);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009981 if (pSurfaceFormatCount)
9982 {
9983 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
9984 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009985 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009986 uint64_t cgen_var_777 = (uint64_t)(uintptr_t)pSurfaceFormats;
9987 stream->putBe64(cgen_var_777);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009988 if (pSurfaceFormats)
9989 {
9990 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
9991 {
9992 marshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
9993 }
9994 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009995 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009996 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009997 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009998 if (pSurfaceFormatCount)
9999 {
10000 if (!(check_pSurfaceFormatCount))
10001 {
10002 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
10003 }
10004 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
10005 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010006 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010007 VkSurfaceFormatKHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010008 check_pSurfaceFormats = (VkSurfaceFormatKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010009 if (pSurfaceFormats)
10010 {
10011 if (!(check_pSurfaceFormats))
10012 {
10013 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
10014 }
10015 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
10016 {
10017 unmarshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
10018 }
10019 }
10020 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
10021 stream->read(&vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010022 countingStream->clearPool();
10023 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010024 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010025 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
10026}
10027
10028VkResult VkEncoder::vkGetPhysicalDeviceSurfacePresentModesKHR(
10029 VkPhysicalDevice physicalDevice,
10030 VkSurfaceKHR surface,
10031 uint32_t* pPresentModeCount,
10032 VkPresentModeKHR* pPresentModes)
10033{
10034 auto stream = mImpl->stream();
10035 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010036 auto resources = mImpl->resources();
10037 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010038 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010039 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010040 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010041 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010042 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010043 countingStream->rewind();
10044 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010045 uint64_t cgen_var_780;
10046 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_780, 1);
10047 countingStream->write((uint64_t*)&cgen_var_780, 1 * 8);
10048 uint64_t cgen_var_781;
10049 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_781, 1);
10050 countingStream->write((uint64_t*)&cgen_var_781, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010051 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010052 uint64_t cgen_var_782 = (uint64_t)(uintptr_t)pPresentModeCount;
10053 countingStream->putBe64(cgen_var_782);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010054 if (pPresentModeCount)
10055 {
10056 countingStream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10057 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010058 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010059 uint64_t cgen_var_783 = (uint64_t)(uintptr_t)pPresentModes;
10060 countingStream->putBe64(cgen_var_783);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010061 if (pPresentModes)
10062 {
10063 countingStream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10064 }
10065 }
10066 uint32_t packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10067 countingStream->rewind();
10068 uint32_t opcode_vkGetPhysicalDeviceSurfacePresentModesKHR = OP_vkGetPhysicalDeviceSurfacePresentModesKHR;
10069 stream->write(&opcode_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
10070 stream->write(&packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010071 uint64_t cgen_var_784;
10072 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_784, 1);
10073 stream->write((uint64_t*)&cgen_var_784, 1 * 8);
10074 uint64_t cgen_var_785;
10075 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_785, 1);
10076 stream->write((uint64_t*)&cgen_var_785, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010077 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010078 uint64_t cgen_var_786 = (uint64_t)(uintptr_t)pPresentModeCount;
10079 stream->putBe64(cgen_var_786);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010080 if (pPresentModeCount)
10081 {
10082 stream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10083 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010084 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010085 uint64_t cgen_var_787 = (uint64_t)(uintptr_t)pPresentModes;
10086 stream->putBe64(cgen_var_787);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010087 if (pPresentModes)
10088 {
10089 stream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10090 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010091 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010092 uint32_t* check_pPresentModeCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010093 check_pPresentModeCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010094 if (pPresentModeCount)
10095 {
10096 if (!(check_pPresentModeCount))
10097 {
10098 fprintf(stderr, "fatal: pPresentModeCount inconsistent between guest and host\n");
10099 }
10100 stream->read((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10101 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010102 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010103 VkPresentModeKHR* check_pPresentModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010104 check_pPresentModes = (VkPresentModeKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010105 if (pPresentModes)
10106 {
10107 if (!(check_pPresentModes))
10108 {
10109 fprintf(stderr, "fatal: pPresentModes inconsistent between guest and host\n");
10110 }
10111 stream->read((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10112 }
10113 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
10114 stream->read(&vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010115 countingStream->clearPool();
10116 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010117 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010118 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
10119}
10120
10121#endif
10122#ifdef VK_KHR_swapchain
10123VkResult VkEncoder::vkCreateSwapchainKHR(
10124 VkDevice device,
10125 const VkSwapchainCreateInfoKHR* pCreateInfo,
10126 const VkAllocationCallbacks* pAllocator,
10127 VkSwapchainKHR* pSwapchain)
10128{
10129 auto stream = mImpl->stream();
10130 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010131 auto resources = mImpl->resources();
10132 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010133 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010134 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010135 VkSwapchainCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010136 VkAllocationCallbacks* local_pAllocator;
10137 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010138 local_pCreateInfo = nullptr;
10139 if (pCreateInfo)
10140 {
10141 local_pCreateInfo = (VkSwapchainCreateInfoKHR*)pool->alloc(sizeof(const VkSwapchainCreateInfoKHR));
10142 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfo, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
10143 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010144 local_pAllocator = nullptr;
10145 if (pAllocator)
10146 {
10147 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10148 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10149 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010150 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010151 countingStream->rewind();
10152 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010153 uint64_t cgen_var_790;
10154 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_790, 1);
10155 countingStream->write((uint64_t*)&cgen_var_790, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010156 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010157 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010158 uint64_t cgen_var_791 = (uint64_t)(uintptr_t)local_pAllocator;
10159 countingStream->putBe64(cgen_var_791);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010160 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010161 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010162 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010163 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010164 uint64_t cgen_var_792;
10165 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_792, 1);
10166 countingStream->write((uint64_t*)&cgen_var_792, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010167 }
10168 uint32_t packetSize_vkCreateSwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10169 countingStream->rewind();
10170 uint32_t opcode_vkCreateSwapchainKHR = OP_vkCreateSwapchainKHR;
10171 stream->write(&opcode_vkCreateSwapchainKHR, sizeof(uint32_t));
10172 stream->write(&packetSize_vkCreateSwapchainKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010173 uint64_t cgen_var_793;
10174 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_793, 1);
10175 stream->write((uint64_t*)&cgen_var_793, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010176 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010177 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010178 uint64_t cgen_var_794 = (uint64_t)(uintptr_t)local_pAllocator;
10179 stream->putBe64(cgen_var_794);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010180 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010181 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010182 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010183 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010184 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010185 uint64_t cgen_var_795;
10186 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_795, 1);
10187 stream->write((uint64_t*)&cgen_var_795, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010188 stream->setHandleMapping(resources->unwrapMapping());
10189 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010190 uint64_t cgen_var_796;
10191 stream->read((uint64_t*)&cgen_var_796, 8);
10192 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(&cgen_var_796, (VkSwapchainKHR*)pSwapchain, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010193 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010194 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
10195 stream->read(&vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010196 countingStream->clearPool();
10197 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010198 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010199 return vkCreateSwapchainKHR_VkResult_return;
10200}
10201
10202void VkEncoder::vkDestroySwapchainKHR(
10203 VkDevice device,
10204 VkSwapchainKHR swapchain,
10205 const VkAllocationCallbacks* pAllocator)
10206{
10207 auto stream = mImpl->stream();
10208 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010209 auto resources = mImpl->resources();
10210 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010211 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010212 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010213 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010214 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010215 local_device = device;
10216 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010217 local_pAllocator = nullptr;
10218 if (pAllocator)
10219 {
10220 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10221 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10222 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010223 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010224 countingStream->rewind();
10225 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010226 uint64_t cgen_var_797;
10227 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_797, 1);
10228 countingStream->write((uint64_t*)&cgen_var_797, 1 * 8);
10229 uint64_t cgen_var_798;
10230 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_798, 1);
10231 countingStream->write((uint64_t*)&cgen_var_798, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010232 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010233 uint64_t cgen_var_799 = (uint64_t)(uintptr_t)local_pAllocator;
10234 countingStream->putBe64(cgen_var_799);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010235 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010236 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010237 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010238 }
10239 }
10240 uint32_t packetSize_vkDestroySwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10241 countingStream->rewind();
10242 uint32_t opcode_vkDestroySwapchainKHR = OP_vkDestroySwapchainKHR;
10243 stream->write(&opcode_vkDestroySwapchainKHR, sizeof(uint32_t));
10244 stream->write(&packetSize_vkDestroySwapchainKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010245 uint64_t cgen_var_800;
10246 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_800, 1);
10247 stream->write((uint64_t*)&cgen_var_800, 1 * 8);
10248 uint64_t cgen_var_801;
10249 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_801, 1);
10250 stream->write((uint64_t*)&cgen_var_801, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010251 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010252 uint64_t cgen_var_802 = (uint64_t)(uintptr_t)local_pAllocator;
10253 stream->putBe64(cgen_var_802);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010254 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010255 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010256 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010257 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010258 resources->destroyMapping()->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&swapchain);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010259}
10260
10261VkResult VkEncoder::vkGetSwapchainImagesKHR(
10262 VkDevice device,
10263 VkSwapchainKHR swapchain,
10264 uint32_t* pSwapchainImageCount,
10265 VkImage* pSwapchainImages)
10266{
10267 auto stream = mImpl->stream();
10268 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010269 auto resources = mImpl->resources();
10270 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010271 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010272 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010273 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010274 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010275 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010276 countingStream->rewind();
10277 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010278 uint64_t cgen_var_803;
10279 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_803, 1);
10280 countingStream->write((uint64_t*)&cgen_var_803, 1 * 8);
10281 uint64_t cgen_var_804;
10282 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_804, 1);
10283 countingStream->write((uint64_t*)&cgen_var_804, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010284 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010285 uint64_t cgen_var_805 = (uint64_t)(uintptr_t)pSwapchainImageCount;
10286 countingStream->putBe64(cgen_var_805);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010287 if (pSwapchainImageCount)
10288 {
10289 countingStream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
10290 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010291 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010292 uint64_t cgen_var_806 = (uint64_t)(uintptr_t)pSwapchainImages;
10293 countingStream->putBe64(cgen_var_806);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010294 if (pSwapchainImages)
10295 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010296 if ((*(pSwapchainImageCount)))
10297 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010298 uint64_t* cgen_var_807;
10299 countingStream->alloc((void**)&cgen_var_807, (*(pSwapchainImageCount)) * 8);
10300 countingStream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_807, (*(pSwapchainImageCount)));
10301 countingStream->write((uint64_t*)cgen_var_807, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010302 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010303 }
10304 }
10305 uint32_t packetSize_vkGetSwapchainImagesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10306 countingStream->rewind();
10307 uint32_t opcode_vkGetSwapchainImagesKHR = OP_vkGetSwapchainImagesKHR;
10308 stream->write(&opcode_vkGetSwapchainImagesKHR, sizeof(uint32_t));
10309 stream->write(&packetSize_vkGetSwapchainImagesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010310 uint64_t cgen_var_808;
10311 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_808, 1);
10312 stream->write((uint64_t*)&cgen_var_808, 1 * 8);
10313 uint64_t cgen_var_809;
10314 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_809, 1);
10315 stream->write((uint64_t*)&cgen_var_809, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010316 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010317 uint64_t cgen_var_810 = (uint64_t)(uintptr_t)pSwapchainImageCount;
10318 stream->putBe64(cgen_var_810);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010319 if (pSwapchainImageCount)
10320 {
10321 stream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
10322 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010323 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010324 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010325 uint64_t cgen_var_811 = (uint64_t)(uintptr_t)pSwapchainImages;
10326 stream->putBe64(cgen_var_811);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010327 if (pSwapchainImages)
10328 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010329 if ((*(pSwapchainImageCount)))
10330 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010331 uint64_t* cgen_var_812;
10332 stream->alloc((void**)&cgen_var_812, (*(pSwapchainImageCount)) * 8);
10333 stream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_812, (*(pSwapchainImageCount)));
10334 stream->write((uint64_t*)cgen_var_812, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010335 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010336 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010337 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010338 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010339 uint32_t* check_pSwapchainImageCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010340 check_pSwapchainImageCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010341 if (pSwapchainImageCount)
10342 {
10343 if (!(check_pSwapchainImageCount))
10344 {
10345 fprintf(stderr, "fatal: pSwapchainImageCount inconsistent between guest and host\n");
10346 }
10347 stream->read((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
10348 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010349 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010350 VkImage* check_pSwapchainImages;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010351 check_pSwapchainImages = (VkImage*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010352 if (pSwapchainImages)
10353 {
10354 if (!(check_pSwapchainImages))
10355 {
10356 fprintf(stderr, "fatal: pSwapchainImages inconsistent between guest and host\n");
10357 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080010358 if ((*(pSwapchainImageCount)))
10359 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010360 uint64_t* cgen_var_815;
10361 stream->alloc((void**)&cgen_var_815, (*(pSwapchainImageCount)) * 8);
10362 stream->read((uint64_t*)cgen_var_815, (*(pSwapchainImageCount)) * 8);
10363 stream->handleMapping()->mapHandles_u64_VkImage(cgen_var_815, (VkImage*)pSwapchainImages, (*(pSwapchainImageCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010364 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010365 }
10366 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
10367 stream->read(&vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010368 countingStream->clearPool();
10369 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010370 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010371 return vkGetSwapchainImagesKHR_VkResult_return;
10372}
10373
10374VkResult VkEncoder::vkAcquireNextImageKHR(
10375 VkDevice device,
10376 VkSwapchainKHR swapchain,
10377 uint64_t timeout,
10378 VkSemaphore semaphore,
10379 VkFence fence,
10380 uint32_t* pImageIndex)
10381{
10382 auto stream = mImpl->stream();
10383 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010384 auto resources = mImpl->resources();
10385 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010386 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010387 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010388 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010389 uint64_t local_timeout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010390 VkSemaphore local_semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010391 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010392 local_device = device;
10393 local_swapchain = swapchain;
10394 local_timeout = timeout;
10395 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010396 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010397 countingStream->rewind();
10398 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010399 uint64_t cgen_var_816;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010400 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_816, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010401 countingStream->write((uint64_t*)&cgen_var_816, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010402 uint64_t cgen_var_817;
10403 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_817, 1);
10404 countingStream->write((uint64_t*)&cgen_var_817, 1 * 8);
10405 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
10406 uint64_t cgen_var_818;
10407 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_818, 1);
10408 countingStream->write((uint64_t*)&cgen_var_818, 1 * 8);
10409 uint64_t cgen_var_819;
10410 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_819, 1);
10411 countingStream->write((uint64_t*)&cgen_var_819, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010412 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10413 }
10414 uint32_t packetSize_vkAcquireNextImageKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10415 countingStream->rewind();
10416 uint32_t opcode_vkAcquireNextImageKHR = OP_vkAcquireNextImageKHR;
10417 stream->write(&opcode_vkAcquireNextImageKHR, sizeof(uint32_t));
10418 stream->write(&packetSize_vkAcquireNextImageKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010419 uint64_t cgen_var_820;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010420 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_820, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010421 stream->write((uint64_t*)&cgen_var_820, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010422 uint64_t cgen_var_821;
10423 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_821, 1);
10424 stream->write((uint64_t*)&cgen_var_821, 1 * 8);
10425 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
10426 uint64_t cgen_var_822;
10427 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_822, 1);
10428 stream->write((uint64_t*)&cgen_var_822, 1 * 8);
10429 uint64_t cgen_var_823;
10430 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_823, 1);
10431 stream->write((uint64_t*)&cgen_var_823, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010432 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10433 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
10434 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
10435 stream->read(&vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010436 countingStream->clearPool();
10437 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010438 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010439 return vkAcquireNextImageKHR_VkResult_return;
10440}
10441
10442VkResult VkEncoder::vkQueuePresentKHR(
10443 VkQueue queue,
10444 const VkPresentInfoKHR* pPresentInfo)
10445{
10446 auto stream = mImpl->stream();
10447 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010448 auto resources = mImpl->resources();
10449 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010450 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010451 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010452 VkPresentInfoKHR* local_pPresentInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010453 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010454 local_pPresentInfo = nullptr;
10455 if (pPresentInfo)
10456 {
10457 local_pPresentInfo = (VkPresentInfoKHR*)pool->alloc(sizeof(const VkPresentInfoKHR));
10458 deepcopy_VkPresentInfoKHR(pool, pPresentInfo, (VkPresentInfoKHR*)(local_pPresentInfo));
10459 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010460 countingStream->rewind();
10461 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010462 uint64_t cgen_var_824;
10463 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_824, 1);
10464 countingStream->write((uint64_t*)&cgen_var_824, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010465 marshal_VkPresentInfoKHR(countingStream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010466 }
10467 uint32_t packetSize_vkQueuePresentKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10468 countingStream->rewind();
10469 uint32_t opcode_vkQueuePresentKHR = OP_vkQueuePresentKHR;
10470 stream->write(&opcode_vkQueuePresentKHR, sizeof(uint32_t));
10471 stream->write(&packetSize_vkQueuePresentKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010472 uint64_t cgen_var_825;
10473 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_825, 1);
10474 stream->write((uint64_t*)&cgen_var_825, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010475 marshal_VkPresentInfoKHR(stream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010476 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
10477 stream->read(&vkQueuePresentKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010478 countingStream->clearPool();
10479 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010480 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010481 return vkQueuePresentKHR_VkResult_return;
10482}
10483
10484VkResult VkEncoder::vkGetDeviceGroupPresentCapabilitiesKHR(
10485 VkDevice device,
10486 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
10487{
10488 auto stream = mImpl->stream();
10489 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010490 auto resources = mImpl->resources();
10491 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010492 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010493 VkDevice local_device;
10494 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010495 countingStream->rewind();
10496 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010497 uint64_t cgen_var_826;
10498 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_826, 1);
10499 countingStream->write((uint64_t*)&cgen_var_826, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010500 marshal_VkDeviceGroupPresentCapabilitiesKHR(countingStream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
10501 }
10502 uint32_t packetSize_vkGetDeviceGroupPresentCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10503 countingStream->rewind();
10504 uint32_t opcode_vkGetDeviceGroupPresentCapabilitiesKHR = OP_vkGetDeviceGroupPresentCapabilitiesKHR;
10505 stream->write(&opcode_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
10506 stream->write(&packetSize_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010507 uint64_t cgen_var_827;
10508 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_827, 1);
10509 stream->write((uint64_t*)&cgen_var_827, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010510 marshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
10511 unmarshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
10512 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
10513 stream->read(&vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010514 countingStream->clearPool();
10515 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010516 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010517 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
10518}
10519
10520VkResult VkEncoder::vkGetDeviceGroupSurfacePresentModesKHR(
10521 VkDevice device,
10522 VkSurfaceKHR surface,
10523 VkDeviceGroupPresentModeFlagsKHR* pModes)
10524{
10525 auto stream = mImpl->stream();
10526 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010527 auto resources = mImpl->resources();
10528 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010529 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010530 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010531 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010532 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010533 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010534 countingStream->rewind();
10535 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010536 uint64_t cgen_var_828;
10537 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_828, 1);
10538 countingStream->write((uint64_t*)&cgen_var_828, 1 * 8);
10539 uint64_t cgen_var_829;
10540 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_829, 1);
10541 countingStream->write((uint64_t*)&cgen_var_829, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010542 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010543 uint64_t cgen_var_830 = (uint64_t)(uintptr_t)pModes;
10544 countingStream->putBe64(cgen_var_830);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010545 if (pModes)
10546 {
10547 countingStream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
10548 }
10549 }
10550 uint32_t packetSize_vkGetDeviceGroupSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10551 countingStream->rewind();
10552 uint32_t opcode_vkGetDeviceGroupSurfacePresentModesKHR = OP_vkGetDeviceGroupSurfacePresentModesKHR;
10553 stream->write(&opcode_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
10554 stream->write(&packetSize_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010555 uint64_t cgen_var_831;
10556 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_831, 1);
10557 stream->write((uint64_t*)&cgen_var_831, 1 * 8);
10558 uint64_t cgen_var_832;
10559 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_832, 1);
10560 stream->write((uint64_t*)&cgen_var_832, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010561 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010562 uint64_t cgen_var_833 = (uint64_t)(uintptr_t)pModes;
10563 stream->putBe64(cgen_var_833);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010564 if (pModes)
10565 {
10566 stream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
10567 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010568 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010569 VkDeviceGroupPresentModeFlagsKHR* check_pModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010570 check_pModes = (VkDeviceGroupPresentModeFlagsKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010571 if (pModes)
10572 {
10573 if (!(check_pModes))
10574 {
10575 fprintf(stderr, "fatal: pModes inconsistent between guest and host\n");
10576 }
10577 stream->read((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
10578 }
10579 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
10580 stream->read(&vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010581 countingStream->clearPool();
10582 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010583 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010584 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
10585}
10586
10587VkResult VkEncoder::vkGetPhysicalDevicePresentRectanglesKHR(
10588 VkPhysicalDevice physicalDevice,
10589 VkSurfaceKHR surface,
10590 uint32_t* pRectCount,
10591 VkRect2D* pRects)
10592{
10593 auto stream = mImpl->stream();
10594 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010595 auto resources = mImpl->resources();
10596 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010597 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010598 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010599 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010600 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010601 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010602 countingStream->rewind();
10603 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010604 uint64_t cgen_var_835;
10605 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_835, 1);
10606 countingStream->write((uint64_t*)&cgen_var_835, 1 * 8);
10607 uint64_t cgen_var_836;
10608 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_836, 1);
10609 countingStream->write((uint64_t*)&cgen_var_836, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010610 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010611 uint64_t cgen_var_837 = (uint64_t)(uintptr_t)pRectCount;
10612 countingStream->putBe64(cgen_var_837);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010613 if (pRectCount)
10614 {
10615 countingStream->write((uint32_t*)pRectCount, sizeof(uint32_t));
10616 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010617 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010618 uint64_t cgen_var_838 = (uint64_t)(uintptr_t)pRects;
10619 countingStream->putBe64(cgen_var_838);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010620 if (pRects)
10621 {
10622 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
10623 {
10624 marshal_VkRect2D(countingStream, (VkRect2D*)(pRects + i));
10625 }
10626 }
10627 }
10628 uint32_t packetSize_vkGetPhysicalDevicePresentRectanglesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10629 countingStream->rewind();
10630 uint32_t opcode_vkGetPhysicalDevicePresentRectanglesKHR = OP_vkGetPhysicalDevicePresentRectanglesKHR;
10631 stream->write(&opcode_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
10632 stream->write(&packetSize_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010633 uint64_t cgen_var_839;
10634 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_839, 1);
10635 stream->write((uint64_t*)&cgen_var_839, 1 * 8);
10636 uint64_t cgen_var_840;
10637 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_840, 1);
10638 stream->write((uint64_t*)&cgen_var_840, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010639 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010640 uint64_t cgen_var_841 = (uint64_t)(uintptr_t)pRectCount;
10641 stream->putBe64(cgen_var_841);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010642 if (pRectCount)
10643 {
10644 stream->write((uint32_t*)pRectCount, sizeof(uint32_t));
10645 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010646 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010647 uint64_t cgen_var_842 = (uint64_t)(uintptr_t)pRects;
10648 stream->putBe64(cgen_var_842);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010649 if (pRects)
10650 {
10651 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
10652 {
10653 marshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
10654 }
10655 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010656 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010657 uint32_t* check_pRectCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010658 check_pRectCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010659 if (pRectCount)
10660 {
10661 if (!(check_pRectCount))
10662 {
10663 fprintf(stderr, "fatal: pRectCount inconsistent between guest and host\n");
10664 }
10665 stream->read((uint32_t*)pRectCount, sizeof(uint32_t));
10666 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010667 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010668 VkRect2D* check_pRects;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010669 check_pRects = (VkRect2D*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010670 if (pRects)
10671 {
10672 if (!(check_pRects))
10673 {
10674 fprintf(stderr, "fatal: pRects inconsistent between guest and host\n");
10675 }
10676 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
10677 {
10678 unmarshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
10679 }
10680 }
10681 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
10682 stream->read(&vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010683 countingStream->clearPool();
10684 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010685 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010686 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
10687}
10688
10689VkResult VkEncoder::vkAcquireNextImage2KHR(
10690 VkDevice device,
10691 const VkAcquireNextImageInfoKHR* pAcquireInfo,
10692 uint32_t* pImageIndex)
10693{
10694 auto stream = mImpl->stream();
10695 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010696 auto resources = mImpl->resources();
10697 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010698 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010699 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010700 VkAcquireNextImageInfoKHR* local_pAcquireInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010701 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010702 local_pAcquireInfo = nullptr;
10703 if (pAcquireInfo)
10704 {
10705 local_pAcquireInfo = (VkAcquireNextImageInfoKHR*)pool->alloc(sizeof(const VkAcquireNextImageInfoKHR));
10706 deepcopy_VkAcquireNextImageInfoKHR(pool, pAcquireInfo, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
10707 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010708 countingStream->rewind();
10709 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010710 uint64_t cgen_var_845;
10711 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_845, 1);
10712 countingStream->write((uint64_t*)&cgen_var_845, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010713 marshal_VkAcquireNextImageInfoKHR(countingStream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010714 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10715 }
10716 uint32_t packetSize_vkAcquireNextImage2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10717 countingStream->rewind();
10718 uint32_t opcode_vkAcquireNextImage2KHR = OP_vkAcquireNextImage2KHR;
10719 stream->write(&opcode_vkAcquireNextImage2KHR, sizeof(uint32_t));
10720 stream->write(&packetSize_vkAcquireNextImage2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010721 uint64_t cgen_var_846;
10722 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_846, 1);
10723 stream->write((uint64_t*)&cgen_var_846, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010724 marshal_VkAcquireNextImageInfoKHR(stream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010725 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10726 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
10727 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
10728 stream->read(&vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010729 countingStream->clearPool();
10730 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010731 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010732 return vkAcquireNextImage2KHR_VkResult_return;
10733}
10734
10735#endif
10736#ifdef VK_KHR_display
10737VkResult VkEncoder::vkGetPhysicalDeviceDisplayPropertiesKHR(
10738 VkPhysicalDevice physicalDevice,
10739 uint32_t* pPropertyCount,
10740 VkDisplayPropertiesKHR* pProperties)
10741{
10742 auto stream = mImpl->stream();
10743 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010744 auto resources = mImpl->resources();
10745 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010746 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010747 VkPhysicalDevice local_physicalDevice;
10748 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010749 countingStream->rewind();
10750 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010751 uint64_t cgen_var_847;
10752 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_847, 1);
10753 countingStream->write((uint64_t*)&cgen_var_847, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010754 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010755 uint64_t cgen_var_848 = (uint64_t)(uintptr_t)pPropertyCount;
10756 countingStream->putBe64(cgen_var_848);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010757 if (pPropertyCount)
10758 {
10759 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10760 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010761 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010762 uint64_t cgen_var_849 = (uint64_t)(uintptr_t)pProperties;
10763 countingStream->putBe64(cgen_var_849);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010764 if (pProperties)
10765 {
10766 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10767 {
10768 marshal_VkDisplayPropertiesKHR(countingStream, (VkDisplayPropertiesKHR*)(pProperties + i));
10769 }
10770 }
10771 }
10772 uint32_t packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10773 countingStream->rewind();
10774 uint32_t opcode_vkGetPhysicalDeviceDisplayPropertiesKHR = OP_vkGetPhysicalDeviceDisplayPropertiesKHR;
10775 stream->write(&opcode_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
10776 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010777 uint64_t cgen_var_850;
10778 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_850, 1);
10779 stream->write((uint64_t*)&cgen_var_850, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010780 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010781 uint64_t cgen_var_851 = (uint64_t)(uintptr_t)pPropertyCount;
10782 stream->putBe64(cgen_var_851);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010783 if (pPropertyCount)
10784 {
10785 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10786 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010787 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010788 uint64_t cgen_var_852 = (uint64_t)(uintptr_t)pProperties;
10789 stream->putBe64(cgen_var_852);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010790 if (pProperties)
10791 {
10792 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10793 {
10794 marshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
10795 }
10796 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010797 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010798 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010799 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010800 if (pPropertyCount)
10801 {
10802 if (!(check_pPropertyCount))
10803 {
10804 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
10805 }
10806 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
10807 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010808 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010809 VkDisplayPropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010810 check_pProperties = (VkDisplayPropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010811 if (pProperties)
10812 {
10813 if (!(check_pProperties))
10814 {
10815 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
10816 }
10817 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10818 {
10819 unmarshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
10820 }
10821 }
10822 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
10823 stream->read(&vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010824 countingStream->clearPool();
10825 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010826 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010827 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
10828}
10829
10830VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
10831 VkPhysicalDevice physicalDevice,
10832 uint32_t* pPropertyCount,
10833 VkDisplayPlanePropertiesKHR* pProperties)
10834{
10835 auto stream = mImpl->stream();
10836 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010837 auto resources = mImpl->resources();
10838 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010839 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010840 VkPhysicalDevice local_physicalDevice;
10841 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010842 countingStream->rewind();
10843 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010844 uint64_t cgen_var_855;
10845 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_855, 1);
10846 countingStream->write((uint64_t*)&cgen_var_855, 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_856 = (uint64_t)(uintptr_t)pPropertyCount;
10849 countingStream->putBe64(cgen_var_856);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010850 if (pPropertyCount)
10851 {
10852 countingStream->write((uint32_t*)pPropertyCount, 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_857 = (uint64_t)(uintptr_t)pProperties;
10856 countingStream->putBe64(cgen_var_857);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010857 if (pProperties)
10858 {
10859 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10860 {
10861 marshal_VkDisplayPlanePropertiesKHR(countingStream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
10862 }
10863 }
10864 }
10865 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10866 countingStream->rewind();
10867 uint32_t opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = OP_vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
10868 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
10869 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010870 uint64_t cgen_var_858;
10871 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_858, 1);
10872 stream->write((uint64_t*)&cgen_var_858, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010873 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010874 uint64_t cgen_var_859 = (uint64_t)(uintptr_t)pPropertyCount;
10875 stream->putBe64(cgen_var_859);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010876 if (pPropertyCount)
10877 {
10878 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10879 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010880 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010881 uint64_t cgen_var_860 = (uint64_t)(uintptr_t)pProperties;
10882 stream->putBe64(cgen_var_860);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010883 if (pProperties)
10884 {
10885 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10886 {
10887 marshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
10888 }
10889 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010890 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010891 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010892 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010893 if (pPropertyCount)
10894 {
10895 if (!(check_pPropertyCount))
10896 {
10897 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
10898 }
10899 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
10900 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010901 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010902 VkDisplayPlanePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010903 check_pProperties = (VkDisplayPlanePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010904 if (pProperties)
10905 {
10906 if (!(check_pProperties))
10907 {
10908 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
10909 }
10910 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10911 {
10912 unmarshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
10913 }
10914 }
10915 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
10916 stream->read(&vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010917 countingStream->clearPool();
10918 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010919 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010920 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
10921}
10922
10923VkResult VkEncoder::vkGetDisplayPlaneSupportedDisplaysKHR(
10924 VkPhysicalDevice physicalDevice,
10925 uint32_t planeIndex,
10926 uint32_t* pDisplayCount,
10927 VkDisplayKHR* pDisplays)
10928{
10929 auto stream = mImpl->stream();
10930 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010931 auto resources = mImpl->resources();
10932 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010933 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010934 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010935 uint32_t local_planeIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010936 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010937 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010938 countingStream->rewind();
10939 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010940 uint64_t cgen_var_863;
10941 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_863, 1);
10942 countingStream->write((uint64_t*)&cgen_var_863, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010943 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010944 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010945 uint64_t cgen_var_864 = (uint64_t)(uintptr_t)pDisplayCount;
10946 countingStream->putBe64(cgen_var_864);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010947 if (pDisplayCount)
10948 {
10949 countingStream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
10950 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010951 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010952 uint64_t cgen_var_865 = (uint64_t)(uintptr_t)pDisplays;
10953 countingStream->putBe64(cgen_var_865);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010954 if (pDisplays)
10955 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010956 if ((*(pDisplayCount)))
10957 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010958 uint64_t* cgen_var_866;
10959 countingStream->alloc((void**)&cgen_var_866, (*(pDisplayCount)) * 8);
10960 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_866, (*(pDisplayCount)));
10961 countingStream->write((uint64_t*)cgen_var_866, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010962 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010963 }
10964 }
10965 uint32_t packetSize_vkGetDisplayPlaneSupportedDisplaysKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10966 countingStream->rewind();
10967 uint32_t opcode_vkGetDisplayPlaneSupportedDisplaysKHR = OP_vkGetDisplayPlaneSupportedDisplaysKHR;
10968 stream->write(&opcode_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
10969 stream->write(&packetSize_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010970 uint64_t cgen_var_867;
10971 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_867, 1);
10972 stream->write((uint64_t*)&cgen_var_867, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010973 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010974 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010975 uint64_t cgen_var_868 = (uint64_t)(uintptr_t)pDisplayCount;
10976 stream->putBe64(cgen_var_868);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010977 if (pDisplayCount)
10978 {
10979 stream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
10980 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010981 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010982 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010983 uint64_t cgen_var_869 = (uint64_t)(uintptr_t)pDisplays;
10984 stream->putBe64(cgen_var_869);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010985 if (pDisplays)
10986 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010987 if ((*(pDisplayCount)))
10988 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010989 uint64_t* cgen_var_870;
10990 stream->alloc((void**)&cgen_var_870, (*(pDisplayCount)) * 8);
10991 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_870, (*(pDisplayCount)));
10992 stream->write((uint64_t*)cgen_var_870, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010993 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010994 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010995 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010996 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010997 uint32_t* check_pDisplayCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010998 check_pDisplayCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010999 if (pDisplayCount)
11000 {
11001 if (!(check_pDisplayCount))
11002 {
11003 fprintf(stderr, "fatal: pDisplayCount inconsistent between guest and host\n");
11004 }
11005 stream->read((uint32_t*)pDisplayCount, sizeof(uint32_t));
11006 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011007 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011008 VkDisplayKHR* check_pDisplays;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011009 check_pDisplays = (VkDisplayKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011010 if (pDisplays)
11011 {
11012 if (!(check_pDisplays))
11013 {
11014 fprintf(stderr, "fatal: pDisplays inconsistent between guest and host\n");
11015 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080011016 if ((*(pDisplayCount)))
11017 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011018 uint64_t* cgen_var_873;
11019 stream->alloc((void**)&cgen_var_873, (*(pDisplayCount)) * 8);
11020 stream->read((uint64_t*)cgen_var_873, (*(pDisplayCount)) * 8);
11021 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(cgen_var_873, (VkDisplayKHR*)pDisplays, (*(pDisplayCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011022 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011023 }
11024 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
11025 stream->read(&vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011026 countingStream->clearPool();
11027 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011028 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011029 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
11030}
11031
11032VkResult VkEncoder::vkGetDisplayModePropertiesKHR(
11033 VkPhysicalDevice physicalDevice,
11034 VkDisplayKHR display,
11035 uint32_t* pPropertyCount,
11036 VkDisplayModePropertiesKHR* pProperties)
11037{
11038 auto stream = mImpl->stream();
11039 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011040 auto resources = mImpl->resources();
11041 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011042 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011043 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011044 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011045 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011046 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011047 countingStream->rewind();
11048 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011049 uint64_t cgen_var_874;
11050 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_874, 1);
11051 countingStream->write((uint64_t*)&cgen_var_874, 1 * 8);
11052 uint64_t cgen_var_875;
11053 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_875, 1);
11054 countingStream->write((uint64_t*)&cgen_var_875, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011055 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011056 uint64_t cgen_var_876 = (uint64_t)(uintptr_t)pPropertyCount;
11057 countingStream->putBe64(cgen_var_876);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011058 if (pPropertyCount)
11059 {
11060 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11061 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011062 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011063 uint64_t cgen_var_877 = (uint64_t)(uintptr_t)pProperties;
11064 countingStream->putBe64(cgen_var_877);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011065 if (pProperties)
11066 {
11067 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11068 {
11069 marshal_VkDisplayModePropertiesKHR(countingStream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11070 }
11071 }
11072 }
11073 uint32_t packetSize_vkGetDisplayModePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11074 countingStream->rewind();
11075 uint32_t opcode_vkGetDisplayModePropertiesKHR = OP_vkGetDisplayModePropertiesKHR;
11076 stream->write(&opcode_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
11077 stream->write(&packetSize_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011078 uint64_t cgen_var_878;
11079 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_878, 1);
11080 stream->write((uint64_t*)&cgen_var_878, 1 * 8);
11081 uint64_t cgen_var_879;
11082 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_879, 1);
11083 stream->write((uint64_t*)&cgen_var_879, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011084 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011085 uint64_t cgen_var_880 = (uint64_t)(uintptr_t)pPropertyCount;
11086 stream->putBe64(cgen_var_880);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011087 if (pPropertyCount)
11088 {
11089 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11090 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011091 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011092 uint64_t cgen_var_881 = (uint64_t)(uintptr_t)pProperties;
11093 stream->putBe64(cgen_var_881);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011094 if (pProperties)
11095 {
11096 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11097 {
11098 marshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11099 }
11100 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011101 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011102 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011103 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011104 if (pPropertyCount)
11105 {
11106 if (!(check_pPropertyCount))
11107 {
11108 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
11109 }
11110 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
11111 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011112 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011113 VkDisplayModePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011114 check_pProperties = (VkDisplayModePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011115 if (pProperties)
11116 {
11117 if (!(check_pProperties))
11118 {
11119 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
11120 }
11121 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11122 {
11123 unmarshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11124 }
11125 }
11126 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
11127 stream->read(&vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011128 countingStream->clearPool();
11129 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011130 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011131 return vkGetDisplayModePropertiesKHR_VkResult_return;
11132}
11133
11134VkResult VkEncoder::vkCreateDisplayModeKHR(
11135 VkPhysicalDevice physicalDevice,
11136 VkDisplayKHR display,
11137 const VkDisplayModeCreateInfoKHR* pCreateInfo,
11138 const VkAllocationCallbacks* pAllocator,
11139 VkDisplayModeKHR* pMode)
11140{
11141 auto stream = mImpl->stream();
11142 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011143 auto resources = mImpl->resources();
11144 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011145 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011146 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011147 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011148 VkDisplayModeCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011149 VkAllocationCallbacks* local_pAllocator;
11150 local_physicalDevice = physicalDevice;
11151 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011152 local_pCreateInfo = nullptr;
11153 if (pCreateInfo)
11154 {
11155 local_pCreateInfo = (VkDisplayModeCreateInfoKHR*)pool->alloc(sizeof(const VkDisplayModeCreateInfoKHR));
11156 deepcopy_VkDisplayModeCreateInfoKHR(pool, pCreateInfo, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
11157 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011158 local_pAllocator = nullptr;
11159 if (pAllocator)
11160 {
11161 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11162 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11163 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011164 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011165 countingStream->rewind();
11166 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011167 uint64_t cgen_var_884;
11168 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_884, 1);
11169 countingStream->write((uint64_t*)&cgen_var_884, 1 * 8);
11170 uint64_t cgen_var_885;
11171 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_885, 1);
11172 countingStream->write((uint64_t*)&cgen_var_885, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011173 marshal_VkDisplayModeCreateInfoKHR(countingStream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011174 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011175 uint64_t cgen_var_886 = (uint64_t)(uintptr_t)local_pAllocator;
11176 countingStream->putBe64(cgen_var_886);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011177 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011178 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011179 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011180 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011181 uint64_t cgen_var_887;
11182 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_887, 1);
11183 countingStream->write((uint64_t*)&cgen_var_887, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011184 }
11185 uint32_t packetSize_vkCreateDisplayModeKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11186 countingStream->rewind();
11187 uint32_t opcode_vkCreateDisplayModeKHR = OP_vkCreateDisplayModeKHR;
11188 stream->write(&opcode_vkCreateDisplayModeKHR, sizeof(uint32_t));
11189 stream->write(&packetSize_vkCreateDisplayModeKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011190 uint64_t cgen_var_888;
11191 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_888, 1);
11192 stream->write((uint64_t*)&cgen_var_888, 1 * 8);
11193 uint64_t cgen_var_889;
11194 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_889, 1);
11195 stream->write((uint64_t*)&cgen_var_889, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011196 marshal_VkDisplayModeCreateInfoKHR(stream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011197 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011198 uint64_t cgen_var_890 = (uint64_t)(uintptr_t)local_pAllocator;
11199 stream->putBe64(cgen_var_890);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011200 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011201 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011202 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011203 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011204 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011205 uint64_t cgen_var_891;
11206 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_891, 1);
11207 stream->write((uint64_t*)&cgen_var_891, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011208 stream->setHandleMapping(resources->unwrapMapping());
11209 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011210 uint64_t cgen_var_892;
11211 stream->read((uint64_t*)&cgen_var_892, 8);
11212 stream->handleMapping()->mapHandles_u64_VkDisplayModeKHR(&cgen_var_892, (VkDisplayModeKHR*)pMode, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011213 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011214 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
11215 stream->read(&vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011216 countingStream->clearPool();
11217 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011218 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011219 return vkCreateDisplayModeKHR_VkResult_return;
11220}
11221
11222VkResult VkEncoder::vkGetDisplayPlaneCapabilitiesKHR(
11223 VkPhysicalDevice physicalDevice,
11224 VkDisplayModeKHR mode,
11225 uint32_t planeIndex,
11226 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
11227{
11228 auto stream = mImpl->stream();
11229 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011230 auto resources = mImpl->resources();
11231 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011232 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011233 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011234 VkDisplayModeKHR local_mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011235 uint32_t local_planeIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011236 local_physicalDevice = physicalDevice;
11237 local_mode = mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011238 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011239 countingStream->rewind();
11240 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011241 uint64_t cgen_var_893;
11242 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_893, 1);
11243 countingStream->write((uint64_t*)&cgen_var_893, 1 * 8);
11244 uint64_t cgen_var_894;
11245 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_894, 1);
11246 countingStream->write((uint64_t*)&cgen_var_894, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011247 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011248 marshal_VkDisplayPlaneCapabilitiesKHR(countingStream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
11249 }
11250 uint32_t packetSize_vkGetDisplayPlaneCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11251 countingStream->rewind();
11252 uint32_t opcode_vkGetDisplayPlaneCapabilitiesKHR = OP_vkGetDisplayPlaneCapabilitiesKHR;
11253 stream->write(&opcode_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
11254 stream->write(&packetSize_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011255 uint64_t cgen_var_895;
11256 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_895, 1);
11257 stream->write((uint64_t*)&cgen_var_895, 1 * 8);
11258 uint64_t cgen_var_896;
11259 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_896, 1);
11260 stream->write((uint64_t*)&cgen_var_896, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011261 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011262 marshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
11263 unmarshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
11264 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
11265 stream->read(&vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011266 countingStream->clearPool();
11267 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011268 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011269 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
11270}
11271
11272VkResult VkEncoder::vkCreateDisplayPlaneSurfaceKHR(
11273 VkInstance instance,
11274 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
11275 const VkAllocationCallbacks* pAllocator,
11276 VkSurfaceKHR* pSurface)
11277{
11278 auto stream = mImpl->stream();
11279 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011280 auto resources = mImpl->resources();
11281 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011282 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011283 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011284 VkDisplaySurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011285 VkAllocationCallbacks* local_pAllocator;
11286 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011287 local_pCreateInfo = nullptr;
11288 if (pCreateInfo)
11289 {
11290 local_pCreateInfo = (VkDisplaySurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkDisplaySurfaceCreateInfoKHR));
11291 deepcopy_VkDisplaySurfaceCreateInfoKHR(pool, pCreateInfo, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
11292 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011293 local_pAllocator = nullptr;
11294 if (pAllocator)
11295 {
11296 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11297 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11298 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011299 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011300 countingStream->rewind();
11301 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011302 uint64_t cgen_var_897;
11303 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_897, 1);
11304 countingStream->write((uint64_t*)&cgen_var_897, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011305 marshal_VkDisplaySurfaceCreateInfoKHR(countingStream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011306 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011307 uint64_t cgen_var_898 = (uint64_t)(uintptr_t)local_pAllocator;
11308 countingStream->putBe64(cgen_var_898);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011309 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011310 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011311 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011312 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011313 uint64_t cgen_var_899;
11314 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_899, 1);
11315 countingStream->write((uint64_t*)&cgen_var_899, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011316 }
11317 uint32_t packetSize_vkCreateDisplayPlaneSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11318 countingStream->rewind();
11319 uint32_t opcode_vkCreateDisplayPlaneSurfaceKHR = OP_vkCreateDisplayPlaneSurfaceKHR;
11320 stream->write(&opcode_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
11321 stream->write(&packetSize_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011322 uint64_t cgen_var_900;
11323 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_900, 1);
11324 stream->write((uint64_t*)&cgen_var_900, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011325 marshal_VkDisplaySurfaceCreateInfoKHR(stream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011326 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011327 uint64_t cgen_var_901 = (uint64_t)(uintptr_t)local_pAllocator;
11328 stream->putBe64(cgen_var_901);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011329 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011330 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011331 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011332 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011333 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011334 uint64_t cgen_var_902;
11335 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_902, 1);
11336 stream->write((uint64_t*)&cgen_var_902, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011337 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011338 uint64_t cgen_var_903;
11339 stream->read((uint64_t*)&cgen_var_903, 8);
11340 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_903, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011341 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
11342 stream->read(&vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011343 countingStream->clearPool();
11344 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011345 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011346 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
11347}
11348
11349#endif
11350#ifdef VK_KHR_display_swapchain
11351VkResult VkEncoder::vkCreateSharedSwapchainsKHR(
11352 VkDevice device,
11353 uint32_t swapchainCount,
11354 const VkSwapchainCreateInfoKHR* pCreateInfos,
11355 const VkAllocationCallbacks* pAllocator,
11356 VkSwapchainKHR* pSwapchains)
11357{
11358 auto stream = mImpl->stream();
11359 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011360 auto resources = mImpl->resources();
11361 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011362 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011363 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011364 uint32_t local_swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011365 VkSwapchainCreateInfoKHR* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011366 VkAllocationCallbacks* local_pAllocator;
11367 local_device = device;
11368 local_swapchainCount = swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011369 local_pCreateInfos = nullptr;
11370 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011371 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011372 local_pCreateInfos = (VkSwapchainCreateInfoKHR*)pool->alloc(((swapchainCount)) * sizeof(const VkSwapchainCreateInfoKHR));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011373 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
11374 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011375 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfos + i, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011376 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011377 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011378 local_pAllocator = nullptr;
11379 if (pAllocator)
11380 {
11381 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11382 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11383 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011384 local_pAllocator = nullptr;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011385 countingStream->rewind();
11386 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011387 uint64_t cgen_var_904;
11388 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_904, 1);
11389 countingStream->write((uint64_t*)&cgen_var_904, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011390 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
11391 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
11392 {
11393 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
11394 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011395 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011396 uint64_t cgen_var_905 = (uint64_t)(uintptr_t)local_pAllocator;
11397 countingStream->putBe64(cgen_var_905);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011398 if (local_pAllocator)
11399 {
11400 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011401 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080011402 if (((swapchainCount)))
11403 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011404 uint64_t* cgen_var_906;
11405 countingStream->alloc((void**)&cgen_var_906, ((swapchainCount)) * 8);
11406 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_906, ((swapchainCount)));
11407 countingStream->write((uint64_t*)cgen_var_906, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011408 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011409 }
11410 uint32_t packetSize_vkCreateSharedSwapchainsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11411 countingStream->rewind();
11412 uint32_t opcode_vkCreateSharedSwapchainsKHR = OP_vkCreateSharedSwapchainsKHR;
11413 stream->write(&opcode_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
11414 stream->write(&packetSize_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011415 uint64_t cgen_var_907;
11416 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_907, 1);
11417 stream->write((uint64_t*)&cgen_var_907, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011418 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011419 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
11420 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011421 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011422 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011423 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011424 uint64_t cgen_var_908 = (uint64_t)(uintptr_t)local_pAllocator;
11425 stream->putBe64(cgen_var_908);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011426 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011427 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011428 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011429 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011430 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -080011431 if (((swapchainCount)))
11432 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011433 uint64_t* cgen_var_909;
11434 stream->alloc((void**)&cgen_var_909, ((swapchainCount)) * 8);
11435 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_909, ((swapchainCount)));
11436 stream->write((uint64_t*)cgen_var_909, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011437 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011438 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -080011439 if (((swapchainCount)))
11440 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011441 uint64_t* cgen_var_910;
11442 stream->alloc((void**)&cgen_var_910, ((swapchainCount)) * 8);
11443 stream->read((uint64_t*)cgen_var_910, ((swapchainCount)) * 8);
11444 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(cgen_var_910, (VkSwapchainKHR*)pSwapchains, ((swapchainCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011445 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011446 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
11447 stream->read(&vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011448 countingStream->clearPool();
11449 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011450 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011451 return vkCreateSharedSwapchainsKHR_VkResult_return;
11452}
11453
11454#endif
11455#ifdef VK_KHR_xlib_surface
11456VkResult VkEncoder::vkCreateXlibSurfaceKHR(
11457 VkInstance instance,
11458 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
11459 const VkAllocationCallbacks* pAllocator,
11460 VkSurfaceKHR* pSurface)
11461{
11462 auto stream = mImpl->stream();
11463 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011464 auto resources = mImpl->resources();
11465 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011466 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011467 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011468 VkXlibSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011469 VkAllocationCallbacks* local_pAllocator;
11470 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011471 local_pCreateInfo = nullptr;
11472 if (pCreateInfo)
11473 {
11474 local_pCreateInfo = (VkXlibSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXlibSurfaceCreateInfoKHR));
11475 deepcopy_VkXlibSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
11476 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011477 local_pAllocator = nullptr;
11478 if (pAllocator)
11479 {
11480 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11481 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11482 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011483 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011484 countingStream->rewind();
11485 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011486 uint64_t cgen_var_911;
11487 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_911, 1);
11488 countingStream->write((uint64_t*)&cgen_var_911, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011489 marshal_VkXlibSurfaceCreateInfoKHR(countingStream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011490 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011491 uint64_t cgen_var_912 = (uint64_t)(uintptr_t)local_pAllocator;
11492 countingStream->putBe64(cgen_var_912);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011493 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011494 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011495 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011496 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011497 uint64_t cgen_var_913;
11498 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_913, 1);
11499 countingStream->write((uint64_t*)&cgen_var_913, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011500 }
11501 uint32_t packetSize_vkCreateXlibSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11502 countingStream->rewind();
11503 uint32_t opcode_vkCreateXlibSurfaceKHR = OP_vkCreateXlibSurfaceKHR;
11504 stream->write(&opcode_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
11505 stream->write(&packetSize_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011506 uint64_t cgen_var_914;
11507 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_914, 1);
11508 stream->write((uint64_t*)&cgen_var_914, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011509 marshal_VkXlibSurfaceCreateInfoKHR(stream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011510 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011511 uint64_t cgen_var_915 = (uint64_t)(uintptr_t)local_pAllocator;
11512 stream->putBe64(cgen_var_915);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011513 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011514 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011515 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011516 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011517 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011518 uint64_t cgen_var_916;
11519 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_916, 1);
11520 stream->write((uint64_t*)&cgen_var_916, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011521 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011522 uint64_t cgen_var_917;
11523 stream->read((uint64_t*)&cgen_var_917, 8);
11524 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_917, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011525 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
11526 stream->read(&vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011527 countingStream->clearPool();
11528 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011529 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011530 return vkCreateXlibSurfaceKHR_VkResult_return;
11531}
11532
11533VkBool32 VkEncoder::vkGetPhysicalDeviceXlibPresentationSupportKHR(
11534 VkPhysicalDevice physicalDevice,
11535 uint32_t queueFamilyIndex,
11536 Display* dpy,
11537 VisualID visualID)
11538{
11539 auto stream = mImpl->stream();
11540 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011541 auto resources = mImpl->resources();
11542 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011543 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011544 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011545 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011546 VisualID local_visualID;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011547 local_physicalDevice = physicalDevice;
11548 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011549 local_visualID = visualID;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011550 countingStream->rewind();
11551 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011552 uint64_t cgen_var_918;
11553 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_918, 1);
11554 countingStream->write((uint64_t*)&cgen_var_918, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011555 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011556 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011557 countingStream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011558 }
11559 uint32_t packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11560 countingStream->rewind();
11561 uint32_t opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR = OP_vkGetPhysicalDeviceXlibPresentationSupportKHR;
11562 stream->write(&opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
11563 stream->write(&packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011564 uint64_t cgen_var_919;
11565 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_919, 1);
11566 stream->write((uint64_t*)&cgen_var_919, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011567 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011568 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011569 stream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011570 stream->read((Display*)dpy, sizeof(Display));
11571 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11572 stream->read(&vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011573 countingStream->clearPool();
11574 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011575 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011576 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
11577}
11578
11579#endif
11580#ifdef VK_KHR_xcb_surface
11581VkResult VkEncoder::vkCreateXcbSurfaceKHR(
11582 VkInstance instance,
11583 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
11584 const VkAllocationCallbacks* pAllocator,
11585 VkSurfaceKHR* pSurface)
11586{
11587 auto stream = mImpl->stream();
11588 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011589 auto resources = mImpl->resources();
11590 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011591 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011592 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011593 VkXcbSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011594 VkAllocationCallbacks* local_pAllocator;
11595 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011596 local_pCreateInfo = nullptr;
11597 if (pCreateInfo)
11598 {
11599 local_pCreateInfo = (VkXcbSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXcbSurfaceCreateInfoKHR));
11600 deepcopy_VkXcbSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
11601 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011602 local_pAllocator = nullptr;
11603 if (pAllocator)
11604 {
11605 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11606 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11607 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011608 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011609 countingStream->rewind();
11610 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011611 uint64_t cgen_var_920;
11612 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_920, 1);
11613 countingStream->write((uint64_t*)&cgen_var_920, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011614 marshal_VkXcbSurfaceCreateInfoKHR(countingStream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011615 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011616 uint64_t cgen_var_921 = (uint64_t)(uintptr_t)local_pAllocator;
11617 countingStream->putBe64(cgen_var_921);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011618 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011619 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011620 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011621 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011622 uint64_t cgen_var_922;
11623 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_922, 1);
11624 countingStream->write((uint64_t*)&cgen_var_922, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011625 }
11626 uint32_t packetSize_vkCreateXcbSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11627 countingStream->rewind();
11628 uint32_t opcode_vkCreateXcbSurfaceKHR = OP_vkCreateXcbSurfaceKHR;
11629 stream->write(&opcode_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
11630 stream->write(&packetSize_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011631 uint64_t cgen_var_923;
11632 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_923, 1);
11633 stream->write((uint64_t*)&cgen_var_923, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011634 marshal_VkXcbSurfaceCreateInfoKHR(stream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011635 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011636 uint64_t cgen_var_924 = (uint64_t)(uintptr_t)local_pAllocator;
11637 stream->putBe64(cgen_var_924);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011638 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011639 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011640 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011641 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011642 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011643 uint64_t cgen_var_925;
11644 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_925, 1);
11645 stream->write((uint64_t*)&cgen_var_925, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011646 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011647 uint64_t cgen_var_926;
11648 stream->read((uint64_t*)&cgen_var_926, 8);
11649 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_926, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011650 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
11651 stream->read(&vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011652 countingStream->clearPool();
11653 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011654 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011655 return vkCreateXcbSurfaceKHR_VkResult_return;
11656}
11657
11658VkBool32 VkEncoder::vkGetPhysicalDeviceXcbPresentationSupportKHR(
11659 VkPhysicalDevice physicalDevice,
11660 uint32_t queueFamilyIndex,
11661 xcb_connection_t* connection,
11662 xcb_visualid_t visual_id)
11663{
11664 auto stream = mImpl->stream();
11665 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011666 auto resources = mImpl->resources();
11667 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011668 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011669 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011670 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011671 xcb_visualid_t local_visual_id;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011672 local_physicalDevice = physicalDevice;
11673 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011674 local_visual_id = visual_id;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011675 countingStream->rewind();
11676 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011677 uint64_t cgen_var_927;
11678 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_927, 1);
11679 countingStream->write((uint64_t*)&cgen_var_927, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011680 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011681 countingStream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011682 countingStream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011683 }
11684 uint32_t packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11685 countingStream->rewind();
11686 uint32_t opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR = OP_vkGetPhysicalDeviceXcbPresentationSupportKHR;
11687 stream->write(&opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
11688 stream->write(&packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011689 uint64_t cgen_var_928;
11690 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_928, 1);
11691 stream->write((uint64_t*)&cgen_var_928, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011692 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011693 stream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011694 stream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011695 stream->read((xcb_connection_t*)connection, sizeof(xcb_connection_t));
11696 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11697 stream->read(&vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011698 countingStream->clearPool();
11699 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011700 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011701 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
11702}
11703
11704#endif
11705#ifdef VK_KHR_wayland_surface
11706VkResult VkEncoder::vkCreateWaylandSurfaceKHR(
11707 VkInstance instance,
11708 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
11709 const VkAllocationCallbacks* pAllocator,
11710 VkSurfaceKHR* pSurface)
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 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011718 VkWaylandSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011719 VkAllocationCallbacks* local_pAllocator;
11720 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011721 local_pCreateInfo = nullptr;
11722 if (pCreateInfo)
11723 {
11724 local_pCreateInfo = (VkWaylandSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWaylandSurfaceCreateInfoKHR));
11725 deepcopy_VkWaylandSurfaceCreateInfoKHR(pool, pCreateInfo, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
11726 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011727 local_pAllocator = nullptr;
11728 if (pAllocator)
11729 {
11730 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11731 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11732 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011733 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011734 countingStream->rewind();
11735 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011736 uint64_t cgen_var_929;
11737 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_929, 1);
11738 countingStream->write((uint64_t*)&cgen_var_929, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011739 marshal_VkWaylandSurfaceCreateInfoKHR(countingStream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011740 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011741 uint64_t cgen_var_930 = (uint64_t)(uintptr_t)local_pAllocator;
11742 countingStream->putBe64(cgen_var_930);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011743 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011744 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011745 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011746 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011747 uint64_t cgen_var_931;
11748 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_931, 1);
11749 countingStream->write((uint64_t*)&cgen_var_931, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011750 }
11751 uint32_t packetSize_vkCreateWaylandSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11752 countingStream->rewind();
11753 uint32_t opcode_vkCreateWaylandSurfaceKHR = OP_vkCreateWaylandSurfaceKHR;
11754 stream->write(&opcode_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
11755 stream->write(&packetSize_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011756 uint64_t cgen_var_932;
11757 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_932, 1);
11758 stream->write((uint64_t*)&cgen_var_932, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011759 marshal_VkWaylandSurfaceCreateInfoKHR(stream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011760 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011761 uint64_t cgen_var_933 = (uint64_t)(uintptr_t)local_pAllocator;
11762 stream->putBe64(cgen_var_933);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011763 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011764 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011765 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011766 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011767 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011768 uint64_t cgen_var_934;
11769 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_934, 1);
11770 stream->write((uint64_t*)&cgen_var_934, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011771 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011772 uint64_t cgen_var_935;
11773 stream->read((uint64_t*)&cgen_var_935, 8);
11774 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_935, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011775 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
11776 stream->read(&vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011777 countingStream->clearPool();
11778 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011779 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011780 return vkCreateWaylandSurfaceKHR_VkResult_return;
11781}
11782
11783VkBool32 VkEncoder::vkGetPhysicalDeviceWaylandPresentationSupportKHR(
11784 VkPhysicalDevice physicalDevice,
11785 uint32_t queueFamilyIndex,
11786 wl_display* display)
11787{
11788 auto stream = mImpl->stream();
11789 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011790 auto resources = mImpl->resources();
11791 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011792 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011793 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011794 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011795 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011796 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011797 countingStream->rewind();
11798 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011799 uint64_t cgen_var_936;
11800 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_936, 1);
11801 countingStream->write((uint64_t*)&cgen_var_936, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011802 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011803 countingStream->write((wl_display*)display, sizeof(wl_display));
11804 }
11805 uint32_t packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11806 countingStream->rewind();
11807 uint32_t opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR = OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR;
11808 stream->write(&opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
11809 stream->write(&packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011810 uint64_t cgen_var_937;
11811 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_937, 1);
11812 stream->write((uint64_t*)&cgen_var_937, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011813 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011814 stream->write((wl_display*)display, sizeof(wl_display));
11815 stream->read((wl_display*)display, sizeof(wl_display));
11816 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11817 stream->read(&vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011818 countingStream->clearPool();
11819 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011820 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011821 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
11822}
11823
11824#endif
11825#ifdef VK_KHR_mir_surface
11826VkResult VkEncoder::vkCreateMirSurfaceKHR(
11827 VkInstance instance,
11828 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
11829 const VkAllocationCallbacks* pAllocator,
11830 VkSurfaceKHR* pSurface)
11831{
11832 auto stream = mImpl->stream();
11833 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011834 auto resources = mImpl->resources();
11835 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011836 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011837 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011838 VkMirSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011839 VkAllocationCallbacks* local_pAllocator;
11840 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011841 local_pCreateInfo = nullptr;
11842 if (pCreateInfo)
11843 {
11844 local_pCreateInfo = (VkMirSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkMirSurfaceCreateInfoKHR));
11845 deepcopy_VkMirSurfaceCreateInfoKHR(pool, pCreateInfo, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
11846 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011847 local_pAllocator = nullptr;
11848 if (pAllocator)
11849 {
11850 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11851 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11852 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011853 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011854 countingStream->rewind();
11855 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011856 uint64_t cgen_var_938;
11857 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_938, 1);
11858 countingStream->write((uint64_t*)&cgen_var_938, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011859 marshal_VkMirSurfaceCreateInfoKHR(countingStream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011860 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011861 uint64_t cgen_var_939 = (uint64_t)(uintptr_t)local_pAllocator;
11862 countingStream->putBe64(cgen_var_939);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011863 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011864 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011865 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011866 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011867 uint64_t cgen_var_940;
11868 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_940, 1);
11869 countingStream->write((uint64_t*)&cgen_var_940, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011870 }
11871 uint32_t packetSize_vkCreateMirSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11872 countingStream->rewind();
11873 uint32_t opcode_vkCreateMirSurfaceKHR = OP_vkCreateMirSurfaceKHR;
11874 stream->write(&opcode_vkCreateMirSurfaceKHR, sizeof(uint32_t));
11875 stream->write(&packetSize_vkCreateMirSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011876 uint64_t cgen_var_941;
11877 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_941, 1);
11878 stream->write((uint64_t*)&cgen_var_941, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011879 marshal_VkMirSurfaceCreateInfoKHR(stream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011880 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011881 uint64_t cgen_var_942 = (uint64_t)(uintptr_t)local_pAllocator;
11882 stream->putBe64(cgen_var_942);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011883 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011884 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011885 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011886 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011887 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011888 uint64_t cgen_var_943;
11889 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_943, 1);
11890 stream->write((uint64_t*)&cgen_var_943, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011891 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011892 uint64_t cgen_var_944;
11893 stream->read((uint64_t*)&cgen_var_944, 8);
11894 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_944, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011895 VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
11896 stream->read(&vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011897 countingStream->clearPool();
11898 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011899 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011900 return vkCreateMirSurfaceKHR_VkResult_return;
11901}
11902
11903VkBool32 VkEncoder::vkGetPhysicalDeviceMirPresentationSupportKHR(
11904 VkPhysicalDevice physicalDevice,
11905 uint32_t queueFamilyIndex,
11906 MirConnection* connection)
11907{
11908 auto stream = mImpl->stream();
11909 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011910 auto resources = mImpl->resources();
11911 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011912 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011913 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011914 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011915 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011916 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011917 countingStream->rewind();
11918 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011919 uint64_t cgen_var_945;
11920 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_945, 1);
11921 countingStream->write((uint64_t*)&cgen_var_945, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011922 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011923 countingStream->write((MirConnection*)connection, sizeof(MirConnection));
11924 }
11925 uint32_t packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11926 countingStream->rewind();
11927 uint32_t opcode_vkGetPhysicalDeviceMirPresentationSupportKHR = OP_vkGetPhysicalDeviceMirPresentationSupportKHR;
11928 stream->write(&opcode_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
11929 stream->write(&packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011930 uint64_t cgen_var_946;
11931 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_946, 1);
11932 stream->write((uint64_t*)&cgen_var_946, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011933 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011934 stream->write((MirConnection*)connection, sizeof(MirConnection));
11935 stream->read((MirConnection*)connection, sizeof(MirConnection));
11936 VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11937 stream->read(&vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011938 countingStream->clearPool();
11939 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011940 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011941 return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
11942}
11943
11944#endif
11945#ifdef VK_KHR_android_surface
11946VkResult VkEncoder::vkCreateAndroidSurfaceKHR(
11947 VkInstance instance,
11948 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
11949 const VkAllocationCallbacks* pAllocator,
11950 VkSurfaceKHR* pSurface)
11951{
11952 auto stream = mImpl->stream();
11953 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011954 auto resources = mImpl->resources();
11955 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011956 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011957 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011958 VkAndroidSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011959 VkAllocationCallbacks* local_pAllocator;
11960 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011961 local_pCreateInfo = nullptr;
11962 if (pCreateInfo)
11963 {
11964 local_pCreateInfo = (VkAndroidSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkAndroidSurfaceCreateInfoKHR));
11965 deepcopy_VkAndroidSurfaceCreateInfoKHR(pool, pCreateInfo, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
11966 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011967 local_pAllocator = nullptr;
11968 if (pAllocator)
11969 {
11970 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11971 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11972 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011973 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011974 countingStream->rewind();
11975 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011976 uint64_t cgen_var_947;
11977 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_947, 1);
11978 countingStream->write((uint64_t*)&cgen_var_947, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011979 marshal_VkAndroidSurfaceCreateInfoKHR(countingStream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011980 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011981 uint64_t cgen_var_948 = (uint64_t)(uintptr_t)local_pAllocator;
11982 countingStream->putBe64(cgen_var_948);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011983 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011984 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011985 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011986 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011987 uint64_t cgen_var_949;
11988 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_949, 1);
11989 countingStream->write((uint64_t*)&cgen_var_949, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011990 }
11991 uint32_t packetSize_vkCreateAndroidSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11992 countingStream->rewind();
11993 uint32_t opcode_vkCreateAndroidSurfaceKHR = OP_vkCreateAndroidSurfaceKHR;
11994 stream->write(&opcode_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
11995 stream->write(&packetSize_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011996 uint64_t cgen_var_950;
11997 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_950, 1);
11998 stream->write((uint64_t*)&cgen_var_950, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011999 marshal_VkAndroidSurfaceCreateInfoKHR(stream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012000 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012001 uint64_t cgen_var_951 = (uint64_t)(uintptr_t)local_pAllocator;
12002 stream->putBe64(cgen_var_951);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012003 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012004 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012005 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012006 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012007 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012008 uint64_t cgen_var_952;
12009 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_952, 1);
12010 stream->write((uint64_t*)&cgen_var_952, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012011 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012012 uint64_t cgen_var_953;
12013 stream->read((uint64_t*)&cgen_var_953, 8);
12014 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_953, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012015 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
12016 stream->read(&vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012017 countingStream->clearPool();
12018 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012019 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012020 return vkCreateAndroidSurfaceKHR_VkResult_return;
12021}
12022
12023#endif
12024#ifdef VK_KHR_win32_surface
12025VkResult VkEncoder::vkCreateWin32SurfaceKHR(
12026 VkInstance instance,
12027 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
12028 const VkAllocationCallbacks* pAllocator,
12029 VkSurfaceKHR* pSurface)
12030{
12031 auto stream = mImpl->stream();
12032 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012033 auto resources = mImpl->resources();
12034 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012035 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012036 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012037 VkWin32SurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012038 VkAllocationCallbacks* local_pAllocator;
12039 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012040 local_pCreateInfo = nullptr;
12041 if (pCreateInfo)
12042 {
12043 local_pCreateInfo = (VkWin32SurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWin32SurfaceCreateInfoKHR));
12044 deepcopy_VkWin32SurfaceCreateInfoKHR(pool, pCreateInfo, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
12045 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012046 local_pAllocator = nullptr;
12047 if (pAllocator)
12048 {
12049 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12050 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12051 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012052 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012053 countingStream->rewind();
12054 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012055 uint64_t cgen_var_954;
12056 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_954, 1);
12057 countingStream->write((uint64_t*)&cgen_var_954, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012058 marshal_VkWin32SurfaceCreateInfoKHR(countingStream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012059 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012060 uint64_t cgen_var_955 = (uint64_t)(uintptr_t)local_pAllocator;
12061 countingStream->putBe64(cgen_var_955);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012062 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012063 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012064 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012065 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012066 uint64_t cgen_var_956;
12067 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_956, 1);
12068 countingStream->write((uint64_t*)&cgen_var_956, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012069 }
12070 uint32_t packetSize_vkCreateWin32SurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12071 countingStream->rewind();
12072 uint32_t opcode_vkCreateWin32SurfaceKHR = OP_vkCreateWin32SurfaceKHR;
12073 stream->write(&opcode_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
12074 stream->write(&packetSize_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012075 uint64_t cgen_var_957;
12076 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_957, 1);
12077 stream->write((uint64_t*)&cgen_var_957, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012078 marshal_VkWin32SurfaceCreateInfoKHR(stream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012079 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012080 uint64_t cgen_var_958 = (uint64_t)(uintptr_t)local_pAllocator;
12081 stream->putBe64(cgen_var_958);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012082 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012083 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012084 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012085 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012086 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012087 uint64_t cgen_var_959;
12088 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_959, 1);
12089 stream->write((uint64_t*)&cgen_var_959, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012090 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012091 uint64_t cgen_var_960;
12092 stream->read((uint64_t*)&cgen_var_960, 8);
12093 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_960, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012094 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
12095 stream->read(&vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012096 countingStream->clearPool();
12097 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012098 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012099 return vkCreateWin32SurfaceKHR_VkResult_return;
12100}
12101
12102VkBool32 VkEncoder::vkGetPhysicalDeviceWin32PresentationSupportKHR(
12103 VkPhysicalDevice physicalDevice,
12104 uint32_t queueFamilyIndex)
12105{
12106 auto stream = mImpl->stream();
12107 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012108 auto resources = mImpl->resources();
12109 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012110 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012111 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012112 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012113 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012114 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012115 countingStream->rewind();
12116 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012117 uint64_t cgen_var_961;
12118 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_961, 1);
12119 countingStream->write((uint64_t*)&cgen_var_961, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012120 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012121 }
12122 uint32_t packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12123 countingStream->rewind();
12124 uint32_t opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR = OP_vkGetPhysicalDeviceWin32PresentationSupportKHR;
12125 stream->write(&opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
12126 stream->write(&packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012127 uint64_t cgen_var_962;
12128 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_962, 1);
12129 stream->write((uint64_t*)&cgen_var_962, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012130 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012131 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
12132 stream->read(&vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
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 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
12137}
12138
12139#endif
12140#ifdef VK_KHR_sampler_mirror_clamp_to_edge
12141#endif
12142#ifdef VK_KHR_multiview
12143#endif
12144#ifdef VK_KHR_get_physical_device_properties2
12145void VkEncoder::vkGetPhysicalDeviceFeatures2KHR(
12146 VkPhysicalDevice physicalDevice,
12147 VkPhysicalDeviceFeatures2* pFeatures)
12148{
12149 auto stream = mImpl->stream();
12150 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012151 auto resources = mImpl->resources();
12152 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012153 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012154 VkPhysicalDevice local_physicalDevice;
12155 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012156 countingStream->rewind();
12157 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012158 uint64_t cgen_var_963;
12159 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_963, 1);
12160 countingStream->write((uint64_t*)&cgen_var_963, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012161 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
12162 }
12163 uint32_t packetSize_vkGetPhysicalDeviceFeatures2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12164 countingStream->rewind();
12165 uint32_t opcode_vkGetPhysicalDeviceFeatures2KHR = OP_vkGetPhysicalDeviceFeatures2KHR;
12166 stream->write(&opcode_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
12167 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012168 uint64_t cgen_var_964;
12169 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_964, 1);
12170 stream->write((uint64_t*)&cgen_var_964, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012171 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
12172 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
12173}
12174
12175void VkEncoder::vkGetPhysicalDeviceProperties2KHR(
12176 VkPhysicalDevice physicalDevice,
12177 VkPhysicalDeviceProperties2* pProperties)
12178{
12179 auto stream = mImpl->stream();
12180 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012181 auto resources = mImpl->resources();
12182 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012183 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012184 VkPhysicalDevice local_physicalDevice;
12185 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012186 countingStream->rewind();
12187 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012188 uint64_t cgen_var_965;
12189 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_965, 1);
12190 countingStream->write((uint64_t*)&cgen_var_965, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012191 marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
12192 }
12193 uint32_t packetSize_vkGetPhysicalDeviceProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12194 countingStream->rewind();
12195 uint32_t opcode_vkGetPhysicalDeviceProperties2KHR = OP_vkGetPhysicalDeviceProperties2KHR;
12196 stream->write(&opcode_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
12197 stream->write(&packetSize_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012198 uint64_t cgen_var_966;
12199 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_966, 1);
12200 stream->write((uint64_t*)&cgen_var_966, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012201 marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
12202 unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
12203}
12204
12205void VkEncoder::vkGetPhysicalDeviceFormatProperties2KHR(
12206 VkPhysicalDevice physicalDevice,
12207 VkFormat format,
12208 VkFormatProperties2* pFormatProperties)
12209{
12210 auto stream = mImpl->stream();
12211 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012212 auto resources = mImpl->resources();
12213 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012214 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012215 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012216 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012217 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012218 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012219 countingStream->rewind();
12220 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012221 uint64_t cgen_var_967;
12222 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_967, 1);
12223 countingStream->write((uint64_t*)&cgen_var_967, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012224 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012225 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
12226 }
12227 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12228 countingStream->rewind();
12229 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2KHR = OP_vkGetPhysicalDeviceFormatProperties2KHR;
12230 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
12231 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012232 uint64_t cgen_var_968;
12233 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_968, 1);
12234 stream->write((uint64_t*)&cgen_var_968, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012235 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012236 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
12237 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
12238}
12239
12240VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2KHR(
12241 VkPhysicalDevice physicalDevice,
12242 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
12243 VkImageFormatProperties2* pImageFormatProperties)
12244{
12245 auto stream = mImpl->stream();
12246 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012247 auto resources = mImpl->resources();
12248 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012249 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012250 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012251 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012252 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012253 local_pImageFormatInfo = nullptr;
12254 if (pImageFormatInfo)
12255 {
12256 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
12257 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
12258 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012259 countingStream->rewind();
12260 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012261 uint64_t cgen_var_969;
12262 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_969, 1);
12263 countingStream->write((uint64_t*)&cgen_var_969, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012264 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012265 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
12266 }
12267 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12268 countingStream->rewind();
12269 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2KHR = OP_vkGetPhysicalDeviceImageFormatProperties2KHR;
12270 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
12271 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012272 uint64_t cgen_var_970;
12273 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_970, 1);
12274 stream->write((uint64_t*)&cgen_var_970, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012275 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012276 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
12277 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
12278 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
12279 stream->read(&vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012280 countingStream->clearPool();
12281 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012282 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012283 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
12284}
12285
12286void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2KHR(
12287 VkPhysicalDevice physicalDevice,
12288 uint32_t* pQueueFamilyPropertyCount,
12289 VkQueueFamilyProperties2* pQueueFamilyProperties)
12290{
12291 auto stream = mImpl->stream();
12292 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012293 auto resources = mImpl->resources();
12294 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012295 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012296 VkPhysicalDevice local_physicalDevice;
12297 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012298 countingStream->rewind();
12299 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012300 uint64_t cgen_var_971;
12301 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_971, 1);
12302 countingStream->write((uint64_t*)&cgen_var_971, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012303 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012304 uint64_t cgen_var_972 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
12305 countingStream->putBe64(cgen_var_972);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012306 if (pQueueFamilyPropertyCount)
12307 {
12308 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
12309 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012310 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012311 uint64_t cgen_var_973 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
12312 countingStream->putBe64(cgen_var_973);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012313 if (pQueueFamilyProperties)
12314 {
12315 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
12316 {
12317 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
12318 }
12319 }
12320 }
12321 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12322 countingStream->rewind();
12323 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR = OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR;
12324 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
12325 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012326 uint64_t cgen_var_974;
12327 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_974, 1);
12328 stream->write((uint64_t*)&cgen_var_974, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012329 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012330 uint64_t cgen_var_975 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
12331 stream->putBe64(cgen_var_975);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012332 if (pQueueFamilyPropertyCount)
12333 {
12334 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
12335 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012336 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012337 uint64_t cgen_var_976 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
12338 stream->putBe64(cgen_var_976);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012339 if (pQueueFamilyProperties)
12340 {
12341 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
12342 {
12343 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
12344 }
12345 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012346 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012347 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012348 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012349 if (pQueueFamilyPropertyCount)
12350 {
12351 if (!(check_pQueueFamilyPropertyCount))
12352 {
12353 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
12354 }
12355 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
12356 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012357 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012358 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012359 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012360 if (pQueueFamilyProperties)
12361 {
12362 if (!(check_pQueueFamilyProperties))
12363 {
12364 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
12365 }
12366 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
12367 {
12368 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
12369 }
12370 }
12371}
12372
12373void VkEncoder::vkGetPhysicalDeviceMemoryProperties2KHR(
12374 VkPhysicalDevice physicalDevice,
12375 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
12376{
12377 auto stream = mImpl->stream();
12378 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012379 auto resources = mImpl->resources();
12380 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012381 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012382 VkPhysicalDevice local_physicalDevice;
12383 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012384 countingStream->rewind();
12385 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012386 uint64_t cgen_var_979;
12387 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_979, 1);
12388 countingStream->write((uint64_t*)&cgen_var_979, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012389 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
12390 }
12391 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12392 countingStream->rewind();
12393 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2KHR = OP_vkGetPhysicalDeviceMemoryProperties2KHR;
12394 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
12395 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012396 uint64_t cgen_var_980;
12397 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_980, 1);
12398 stream->write((uint64_t*)&cgen_var_980, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012399 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
12400 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
12401}
12402
12403void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
12404 VkPhysicalDevice physicalDevice,
12405 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
12406 uint32_t* pPropertyCount,
12407 VkSparseImageFormatProperties2* pProperties)
12408{
12409 auto stream = mImpl->stream();
12410 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012411 auto resources = mImpl->resources();
12412 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012413 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012414 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012415 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012416 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012417 local_pFormatInfo = nullptr;
12418 if (pFormatInfo)
12419 {
12420 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
12421 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
12422 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012423 countingStream->rewind();
12424 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012425 uint64_t cgen_var_981;
12426 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_981, 1);
12427 countingStream->write((uint64_t*)&cgen_var_981, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012428 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012429 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012430 uint64_t cgen_var_982 = (uint64_t)(uintptr_t)pPropertyCount;
12431 countingStream->putBe64(cgen_var_982);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012432 if (pPropertyCount)
12433 {
12434 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12435 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012436 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012437 uint64_t cgen_var_983 = (uint64_t)(uintptr_t)pProperties;
12438 countingStream->putBe64(cgen_var_983);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012439 if (pProperties)
12440 {
12441 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12442 {
12443 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
12444 }
12445 }
12446 }
12447 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12448 countingStream->rewind();
12449 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
12450 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
12451 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012452 uint64_t cgen_var_984;
12453 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_984, 1);
12454 stream->write((uint64_t*)&cgen_var_984, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012455 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012456 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012457 uint64_t cgen_var_985 = (uint64_t)(uintptr_t)pPropertyCount;
12458 stream->putBe64(cgen_var_985);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012459 if (pPropertyCount)
12460 {
12461 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12462 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012463 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012464 uint64_t cgen_var_986 = (uint64_t)(uintptr_t)pProperties;
12465 stream->putBe64(cgen_var_986);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012466 if (pProperties)
12467 {
12468 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12469 {
12470 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
12471 }
12472 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012473 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012474 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012475 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012476 if (pPropertyCount)
12477 {
12478 if (!(check_pPropertyCount))
12479 {
12480 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12481 }
12482 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12483 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012484 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012485 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012486 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012487 if (pProperties)
12488 {
12489 if (!(check_pProperties))
12490 {
12491 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12492 }
12493 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12494 {
12495 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
12496 }
12497 }
12498}
12499
12500#endif
12501#ifdef VK_KHR_device_group
12502void VkEncoder::vkGetDeviceGroupPeerMemoryFeaturesKHR(
12503 VkDevice device,
12504 uint32_t heapIndex,
12505 uint32_t localDeviceIndex,
12506 uint32_t remoteDeviceIndex,
12507 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
12508{
12509 auto stream = mImpl->stream();
12510 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012511 auto resources = mImpl->resources();
12512 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012513 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012514 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012515 uint32_t local_heapIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012516 uint32_t local_localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012517 uint32_t local_remoteDeviceIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012518 local_device = device;
12519 local_heapIndex = heapIndex;
12520 local_localDeviceIndex = localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012521 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012522 countingStream->rewind();
12523 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012524 uint64_t cgen_var_989;
12525 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_989, 1);
12526 countingStream->write((uint64_t*)&cgen_var_989, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012527 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
12528 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
12529 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012530 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
12531 }
12532 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12533 countingStream->rewind();
12534 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR = OP_vkGetDeviceGroupPeerMemoryFeaturesKHR;
12535 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
12536 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012537 uint64_t cgen_var_990;
12538 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_990, 1);
12539 stream->write((uint64_t*)&cgen_var_990, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012540 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
12541 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
12542 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012543 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
12544 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
12545}
12546
12547void VkEncoder::vkCmdSetDeviceMaskKHR(
12548 VkCommandBuffer commandBuffer,
12549 uint32_t deviceMask)
12550{
12551 auto stream = mImpl->stream();
12552 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012553 auto resources = mImpl->resources();
12554 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012555 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012556 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012557 uint32_t local_deviceMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012558 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012559 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012560 countingStream->rewind();
12561 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012562 uint64_t cgen_var_991;
12563 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_991, 1);
12564 countingStream->write((uint64_t*)&cgen_var_991, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012565 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012566 }
12567 uint32_t packetSize_vkCmdSetDeviceMaskKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12568 countingStream->rewind();
12569 uint32_t opcode_vkCmdSetDeviceMaskKHR = OP_vkCmdSetDeviceMaskKHR;
12570 stream->write(&opcode_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
12571 stream->write(&packetSize_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012572 uint64_t cgen_var_992;
12573 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_992, 1);
12574 stream->write((uint64_t*)&cgen_var_992, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012575 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012576}
12577
12578void VkEncoder::vkCmdDispatchBaseKHR(
12579 VkCommandBuffer commandBuffer,
12580 uint32_t baseGroupX,
12581 uint32_t baseGroupY,
12582 uint32_t baseGroupZ,
12583 uint32_t groupCountX,
12584 uint32_t groupCountY,
12585 uint32_t groupCountZ)
12586{
12587 auto stream = mImpl->stream();
12588 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012589 auto resources = mImpl->resources();
12590 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012591 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012592 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012593 uint32_t local_baseGroupX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012594 uint32_t local_baseGroupY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012595 uint32_t local_baseGroupZ;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012596 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012597 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012598 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012599 local_commandBuffer = commandBuffer;
12600 local_baseGroupX = baseGroupX;
12601 local_baseGroupY = baseGroupY;
12602 local_baseGroupZ = baseGroupZ;
12603 local_groupCountX = groupCountX;
12604 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012605 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012606 countingStream->rewind();
12607 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012608 uint64_t cgen_var_993;
12609 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_993, 1);
12610 countingStream->write((uint64_t*)&cgen_var_993, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012611 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
12612 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
12613 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
12614 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
12615 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
12616 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012617 }
12618 uint32_t packetSize_vkCmdDispatchBaseKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12619 countingStream->rewind();
12620 uint32_t opcode_vkCmdDispatchBaseKHR = OP_vkCmdDispatchBaseKHR;
12621 stream->write(&opcode_vkCmdDispatchBaseKHR, sizeof(uint32_t));
12622 stream->write(&packetSize_vkCmdDispatchBaseKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012623 uint64_t cgen_var_994;
12624 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_994, 1);
12625 stream->write((uint64_t*)&cgen_var_994, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012626 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
12627 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
12628 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
12629 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
12630 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
12631 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012632}
12633
12634#endif
12635#ifdef VK_KHR_shader_draw_parameters
12636#endif
12637#ifdef VK_KHR_maintenance1
12638void VkEncoder::vkTrimCommandPoolKHR(
12639 VkDevice device,
12640 VkCommandPool commandPool,
12641 VkCommandPoolTrimFlags flags)
12642{
12643 auto stream = mImpl->stream();
12644 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012645 auto resources = mImpl->resources();
12646 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012647 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012648 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012649 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012650 VkCommandPoolTrimFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012651 local_device = device;
12652 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012653 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012654 countingStream->rewind();
12655 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012656 uint64_t cgen_var_995;
12657 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_995, 1);
12658 countingStream->write((uint64_t*)&cgen_var_995, 1 * 8);
12659 uint64_t cgen_var_996;
12660 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_996, 1);
12661 countingStream->write((uint64_t*)&cgen_var_996, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012662 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012663 }
12664 uint32_t packetSize_vkTrimCommandPoolKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12665 countingStream->rewind();
12666 uint32_t opcode_vkTrimCommandPoolKHR = OP_vkTrimCommandPoolKHR;
12667 stream->write(&opcode_vkTrimCommandPoolKHR, sizeof(uint32_t));
12668 stream->write(&packetSize_vkTrimCommandPoolKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012669 uint64_t cgen_var_997;
12670 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_997, 1);
12671 stream->write((uint64_t*)&cgen_var_997, 1 * 8);
12672 uint64_t cgen_var_998;
12673 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_998, 1);
12674 stream->write((uint64_t*)&cgen_var_998, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012675 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012676}
12677
12678#endif
12679#ifdef VK_KHR_device_group_creation
12680VkResult VkEncoder::vkEnumeratePhysicalDeviceGroupsKHR(
12681 VkInstance instance,
12682 uint32_t* pPhysicalDeviceGroupCount,
12683 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
12684{
12685 auto stream = mImpl->stream();
12686 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012687 auto resources = mImpl->resources();
12688 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012689 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012690 VkInstance local_instance;
12691 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012692 countingStream->rewind();
12693 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012694 uint64_t cgen_var_999;
12695 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_999, 1);
12696 countingStream->write((uint64_t*)&cgen_var_999, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012697 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012698 uint64_t cgen_var_1000 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
12699 countingStream->putBe64(cgen_var_1000);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012700 if (pPhysicalDeviceGroupCount)
12701 {
12702 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
12703 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012704 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012705 uint64_t cgen_var_1001 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
12706 countingStream->putBe64(cgen_var_1001);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012707 if (pPhysicalDeviceGroupProperties)
12708 {
12709 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
12710 {
12711 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
12712 }
12713 }
12714 }
12715 uint32_t packetSize_vkEnumeratePhysicalDeviceGroupsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12716 countingStream->rewind();
12717 uint32_t opcode_vkEnumeratePhysicalDeviceGroupsKHR = OP_vkEnumeratePhysicalDeviceGroupsKHR;
12718 stream->write(&opcode_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
12719 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012720 uint64_t cgen_var_1002;
12721 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1002, 1);
12722 stream->write((uint64_t*)&cgen_var_1002, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012723 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012724 uint64_t cgen_var_1003 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
12725 stream->putBe64(cgen_var_1003);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012726 if (pPhysicalDeviceGroupCount)
12727 {
12728 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
12729 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012730 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012731 uint64_t cgen_var_1004 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
12732 stream->putBe64(cgen_var_1004);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012733 if (pPhysicalDeviceGroupProperties)
12734 {
12735 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
12736 {
12737 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
12738 }
12739 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012740 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012741 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012742 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012743 if (pPhysicalDeviceGroupCount)
12744 {
12745 if (!(check_pPhysicalDeviceGroupCount))
12746 {
12747 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
12748 }
12749 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
12750 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012751 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012752 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012753 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012754 if (pPhysicalDeviceGroupProperties)
12755 {
12756 if (!(check_pPhysicalDeviceGroupProperties))
12757 {
12758 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
12759 }
12760 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
12761 {
12762 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
12763 }
12764 }
12765 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
12766 stream->read(&vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012767 countingStream->clearPool();
12768 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012769 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012770 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
12771}
12772
12773#endif
12774#ifdef VK_KHR_external_memory_capabilities
12775void VkEncoder::vkGetPhysicalDeviceExternalBufferPropertiesKHR(
12776 VkPhysicalDevice physicalDevice,
12777 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
12778 VkExternalBufferProperties* pExternalBufferProperties)
12779{
12780 auto stream = mImpl->stream();
12781 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012782 auto resources = mImpl->resources();
12783 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012784 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012785 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012786 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012787 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012788 local_pExternalBufferInfo = nullptr;
12789 if (pExternalBufferInfo)
12790 {
12791 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
12792 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
12793 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012794 countingStream->rewind();
12795 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012796 uint64_t cgen_var_1007;
12797 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1007, 1);
12798 countingStream->write((uint64_t*)&cgen_var_1007, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012799 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012800 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
12801 }
12802 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12803 countingStream->rewind();
12804 uint32_t opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR = OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR;
12805 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
12806 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012807 uint64_t cgen_var_1008;
12808 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1008, 1);
12809 stream->write((uint64_t*)&cgen_var_1008, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012810 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012811 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
12812 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
12813}
12814
12815#endif
12816#ifdef VK_KHR_external_memory
12817#endif
12818#ifdef VK_KHR_external_memory_win32
12819VkResult VkEncoder::vkGetMemoryWin32HandleKHR(
12820 VkDevice device,
12821 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
12822 HANDLE* pHandle)
12823{
12824 auto stream = mImpl->stream();
12825 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012826 auto resources = mImpl->resources();
12827 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012828 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012829 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012830 VkMemoryGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012831 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012832 local_pGetWin32HandleInfo = nullptr;
12833 if (pGetWin32HandleInfo)
12834 {
12835 local_pGetWin32HandleInfo = (VkMemoryGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkMemoryGetWin32HandleInfoKHR));
12836 deepcopy_VkMemoryGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
12837 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012838 countingStream->rewind();
12839 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012840 uint64_t cgen_var_1009;
12841 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1009, 1);
12842 countingStream->write((uint64_t*)&cgen_var_1009, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012843 marshal_VkMemoryGetWin32HandleInfoKHR(countingStream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012844 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
12845 }
12846 uint32_t packetSize_vkGetMemoryWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12847 countingStream->rewind();
12848 uint32_t opcode_vkGetMemoryWin32HandleKHR = OP_vkGetMemoryWin32HandleKHR;
12849 stream->write(&opcode_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
12850 stream->write(&packetSize_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012851 uint64_t cgen_var_1010;
12852 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1010, 1);
12853 stream->write((uint64_t*)&cgen_var_1010, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012854 marshal_VkMemoryGetWin32HandleInfoKHR(stream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012855 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
12856 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
12857 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
12858 stream->read(&vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012859 countingStream->clearPool();
12860 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012861 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012862 return vkGetMemoryWin32HandleKHR_VkResult_return;
12863}
12864
12865VkResult VkEncoder::vkGetMemoryWin32HandlePropertiesKHR(
12866 VkDevice device,
12867 VkExternalMemoryHandleTypeFlagBits handleType,
12868 HANDLE handle,
12869 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
12870{
12871 auto stream = mImpl->stream();
12872 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012873 auto resources = mImpl->resources();
12874 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012875 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012876 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012877 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012878 HANDLE local_handle;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012879 local_device = device;
12880 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012881 local_handle = handle;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012882 countingStream->rewind();
12883 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012884 uint64_t cgen_var_1011;
12885 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1011, 1);
12886 countingStream->write((uint64_t*)&cgen_var_1011, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012887 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12888 countingStream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012889 marshal_VkMemoryWin32HandlePropertiesKHR(countingStream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
12890 }
12891 uint32_t packetSize_vkGetMemoryWin32HandlePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12892 countingStream->rewind();
12893 uint32_t opcode_vkGetMemoryWin32HandlePropertiesKHR = OP_vkGetMemoryWin32HandlePropertiesKHR;
12894 stream->write(&opcode_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
12895 stream->write(&packetSize_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012896 uint64_t cgen_var_1012;
12897 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1012, 1);
12898 stream->write((uint64_t*)&cgen_var_1012, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012899 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12900 stream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012901 marshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
12902 unmarshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
12903 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
12904 stream->read(&vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012905 countingStream->clearPool();
12906 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012907 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012908 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
12909}
12910
12911#endif
12912#ifdef VK_KHR_external_memory_fd
12913VkResult VkEncoder::vkGetMemoryFdKHR(
12914 VkDevice device,
12915 const VkMemoryGetFdInfoKHR* pGetFdInfo,
12916 int* pFd)
12917{
12918 auto stream = mImpl->stream();
12919 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012920 auto resources = mImpl->resources();
12921 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012922 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012923 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012924 VkMemoryGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012925 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012926 local_pGetFdInfo = nullptr;
12927 if (pGetFdInfo)
12928 {
12929 local_pGetFdInfo = (VkMemoryGetFdInfoKHR*)pool->alloc(sizeof(const VkMemoryGetFdInfoKHR));
12930 deepcopy_VkMemoryGetFdInfoKHR(pool, pGetFdInfo, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
12931 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012932 countingStream->rewind();
12933 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012934 uint64_t cgen_var_1013;
12935 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1013, 1);
12936 countingStream->write((uint64_t*)&cgen_var_1013, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012937 marshal_VkMemoryGetFdInfoKHR(countingStream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012938 countingStream->write((int*)pFd, sizeof(int));
12939 }
12940 uint32_t packetSize_vkGetMemoryFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12941 countingStream->rewind();
12942 uint32_t opcode_vkGetMemoryFdKHR = OP_vkGetMemoryFdKHR;
12943 stream->write(&opcode_vkGetMemoryFdKHR, sizeof(uint32_t));
12944 stream->write(&packetSize_vkGetMemoryFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012945 uint64_t cgen_var_1014;
12946 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1014, 1);
12947 stream->write((uint64_t*)&cgen_var_1014, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012948 marshal_VkMemoryGetFdInfoKHR(stream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012949 stream->write((int*)pFd, sizeof(int));
12950 stream->read((int*)pFd, sizeof(int));
12951 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
12952 stream->read(&vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012953 countingStream->clearPool();
12954 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012955 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012956 return vkGetMemoryFdKHR_VkResult_return;
12957}
12958
12959VkResult VkEncoder::vkGetMemoryFdPropertiesKHR(
12960 VkDevice device,
12961 VkExternalMemoryHandleTypeFlagBits handleType,
12962 int fd,
12963 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
12964{
12965 auto stream = mImpl->stream();
12966 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012967 auto resources = mImpl->resources();
12968 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012969 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012970 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012971 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012972 int local_fd;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012973 local_device = device;
12974 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012975 local_fd = fd;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012976 countingStream->rewind();
12977 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012978 uint64_t cgen_var_1015;
12979 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1015, 1);
12980 countingStream->write((uint64_t*)&cgen_var_1015, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012981 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12982 countingStream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012983 marshal_VkMemoryFdPropertiesKHR(countingStream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
12984 }
12985 uint32_t packetSize_vkGetMemoryFdPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12986 countingStream->rewind();
12987 uint32_t opcode_vkGetMemoryFdPropertiesKHR = OP_vkGetMemoryFdPropertiesKHR;
12988 stream->write(&opcode_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
12989 stream->write(&packetSize_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012990 uint64_t cgen_var_1016;
12991 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1016, 1);
12992 stream->write((uint64_t*)&cgen_var_1016, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012993 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12994 stream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012995 marshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
12996 unmarshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
12997 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
12998 stream->read(&vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012999 countingStream->clearPool();
13000 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013001 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013002 return vkGetMemoryFdPropertiesKHR_VkResult_return;
13003}
13004
13005#endif
13006#ifdef VK_KHR_win32_keyed_mutex
13007#endif
13008#ifdef VK_KHR_external_semaphore_capabilities
13009void VkEncoder::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
13010 VkPhysicalDevice physicalDevice,
13011 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
13012 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
13013{
13014 auto stream = mImpl->stream();
13015 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013016 auto resources = mImpl->resources();
13017 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013018 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013019 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013020 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013021 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013022 local_pExternalSemaphoreInfo = nullptr;
13023 if (pExternalSemaphoreInfo)
13024 {
13025 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
13026 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
13027 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013028 countingStream->rewind();
13029 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013030 uint64_t cgen_var_1017;
13031 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1017, 1);
13032 countingStream->write((uint64_t*)&cgen_var_1017, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013033 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013034 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13035 }
13036 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13037 countingStream->rewind();
13038 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
13039 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
13040 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013041 uint64_t cgen_var_1018;
13042 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1018, 1);
13043 stream->write((uint64_t*)&cgen_var_1018, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013044 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013045 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13046 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13047}
13048
13049#endif
13050#ifdef VK_KHR_external_semaphore
13051#endif
13052#ifdef VK_KHR_external_semaphore_win32
13053VkResult VkEncoder::vkImportSemaphoreWin32HandleKHR(
13054 VkDevice device,
13055 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
13056{
13057 auto stream = mImpl->stream();
13058 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013059 auto resources = mImpl->resources();
13060 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013061 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013062 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013063 VkImportSemaphoreWin32HandleInfoKHR* local_pImportSemaphoreWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013064 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013065 local_pImportSemaphoreWin32HandleInfo = nullptr;
13066 if (pImportSemaphoreWin32HandleInfo)
13067 {
13068 local_pImportSemaphoreWin32HandleInfo = (VkImportSemaphoreWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreWin32HandleInfoKHR));
13069 deepcopy_VkImportSemaphoreWin32HandleInfoKHR(pool, pImportSemaphoreWin32HandleInfo, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
13070 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013071 countingStream->rewind();
13072 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013073 uint64_t cgen_var_1019;
13074 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1019, 1);
13075 countingStream->write((uint64_t*)&cgen_var_1019, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013076 marshal_VkImportSemaphoreWin32HandleInfoKHR(countingStream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013077 }
13078 uint32_t packetSize_vkImportSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13079 countingStream->rewind();
13080 uint32_t opcode_vkImportSemaphoreWin32HandleKHR = OP_vkImportSemaphoreWin32HandleKHR;
13081 stream->write(&opcode_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
13082 stream->write(&packetSize_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013083 uint64_t cgen_var_1020;
13084 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1020, 1);
13085 stream->write((uint64_t*)&cgen_var_1020, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013086 marshal_VkImportSemaphoreWin32HandleInfoKHR(stream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013087 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
13088 stream->read(&vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013089 countingStream->clearPool();
13090 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013091 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013092 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
13093}
13094
13095VkResult VkEncoder::vkGetSemaphoreWin32HandleKHR(
13096 VkDevice device,
13097 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
13098 HANDLE* pHandle)
13099{
13100 auto stream = mImpl->stream();
13101 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013102 auto resources = mImpl->resources();
13103 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013104 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013105 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013106 VkSemaphoreGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013107 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013108 local_pGetWin32HandleInfo = nullptr;
13109 if (pGetWin32HandleInfo)
13110 {
13111 local_pGetWin32HandleInfo = (VkSemaphoreGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetWin32HandleInfoKHR));
13112 deepcopy_VkSemaphoreGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
13113 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013114 countingStream->rewind();
13115 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013116 uint64_t cgen_var_1021;
13117 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1021, 1);
13118 countingStream->write((uint64_t*)&cgen_var_1021, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013119 marshal_VkSemaphoreGetWin32HandleInfoKHR(countingStream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013120 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
13121 }
13122 uint32_t packetSize_vkGetSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13123 countingStream->rewind();
13124 uint32_t opcode_vkGetSemaphoreWin32HandleKHR = OP_vkGetSemaphoreWin32HandleKHR;
13125 stream->write(&opcode_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
13126 stream->write(&packetSize_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013127 uint64_t cgen_var_1022;
13128 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1022, 1);
13129 stream->write((uint64_t*)&cgen_var_1022, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013130 marshal_VkSemaphoreGetWin32HandleInfoKHR(stream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013131 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
13132 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
13133 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
13134 stream->read(&vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013135 countingStream->clearPool();
13136 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013137 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013138 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
13139}
13140
13141#endif
13142#ifdef VK_KHR_external_semaphore_fd
13143VkResult VkEncoder::vkImportSemaphoreFdKHR(
13144 VkDevice device,
13145 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
13146{
13147 auto stream = mImpl->stream();
13148 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013149 auto resources = mImpl->resources();
13150 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013151 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013152 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013153 VkImportSemaphoreFdInfoKHR* local_pImportSemaphoreFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013154 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013155 local_pImportSemaphoreFdInfo = nullptr;
13156 if (pImportSemaphoreFdInfo)
13157 {
13158 local_pImportSemaphoreFdInfo = (VkImportSemaphoreFdInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreFdInfoKHR));
13159 deepcopy_VkImportSemaphoreFdInfoKHR(pool, pImportSemaphoreFdInfo, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
13160 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013161 countingStream->rewind();
13162 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013163 uint64_t cgen_var_1023;
13164 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1023, 1);
13165 countingStream->write((uint64_t*)&cgen_var_1023, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013166 marshal_VkImportSemaphoreFdInfoKHR(countingStream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013167 }
13168 uint32_t packetSize_vkImportSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13169 countingStream->rewind();
13170 uint32_t opcode_vkImportSemaphoreFdKHR = OP_vkImportSemaphoreFdKHR;
13171 stream->write(&opcode_vkImportSemaphoreFdKHR, sizeof(uint32_t));
13172 stream->write(&packetSize_vkImportSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013173 uint64_t cgen_var_1024;
13174 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1024, 1);
13175 stream->write((uint64_t*)&cgen_var_1024, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013176 marshal_VkImportSemaphoreFdInfoKHR(stream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013177 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
13178 stream->read(&vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013179 countingStream->clearPool();
13180 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013181 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013182 return vkImportSemaphoreFdKHR_VkResult_return;
13183}
13184
13185VkResult VkEncoder::vkGetSemaphoreFdKHR(
13186 VkDevice device,
13187 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
13188 int* pFd)
13189{
13190 auto stream = mImpl->stream();
13191 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013192 auto resources = mImpl->resources();
13193 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013194 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013195 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013196 VkSemaphoreGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013197 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013198 local_pGetFdInfo = nullptr;
13199 if (pGetFdInfo)
13200 {
13201 local_pGetFdInfo = (VkSemaphoreGetFdInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetFdInfoKHR));
13202 deepcopy_VkSemaphoreGetFdInfoKHR(pool, pGetFdInfo, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
13203 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013204 countingStream->rewind();
13205 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013206 uint64_t cgen_var_1025;
13207 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1025, 1);
13208 countingStream->write((uint64_t*)&cgen_var_1025, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013209 marshal_VkSemaphoreGetFdInfoKHR(countingStream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013210 countingStream->write((int*)pFd, sizeof(int));
13211 }
13212 uint32_t packetSize_vkGetSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13213 countingStream->rewind();
13214 uint32_t opcode_vkGetSemaphoreFdKHR = OP_vkGetSemaphoreFdKHR;
13215 stream->write(&opcode_vkGetSemaphoreFdKHR, sizeof(uint32_t));
13216 stream->write(&packetSize_vkGetSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013217 uint64_t cgen_var_1026;
13218 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1026, 1);
13219 stream->write((uint64_t*)&cgen_var_1026, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013220 marshal_VkSemaphoreGetFdInfoKHR(stream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013221 stream->write((int*)pFd, sizeof(int));
13222 stream->read((int*)pFd, sizeof(int));
13223 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
13224 stream->read(&vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013225 countingStream->clearPool();
13226 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013227 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013228 return vkGetSemaphoreFdKHR_VkResult_return;
13229}
13230
13231#endif
13232#ifdef VK_KHR_push_descriptor
13233void VkEncoder::vkCmdPushDescriptorSetKHR(
13234 VkCommandBuffer commandBuffer,
13235 VkPipelineBindPoint pipelineBindPoint,
13236 VkPipelineLayout layout,
13237 uint32_t set,
13238 uint32_t descriptorWriteCount,
13239 const VkWriteDescriptorSet* pDescriptorWrites)
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 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013248 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013249 uint32_t local_set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013250 uint32_t local_descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013251 VkWriteDescriptorSet* local_pDescriptorWrites;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013252 local_commandBuffer = commandBuffer;
13253 local_pipelineBindPoint = pipelineBindPoint;
13254 local_layout = layout;
13255 local_set = set;
13256 local_descriptorWriteCount = descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013257 local_pDescriptorWrites = nullptr;
13258 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013259 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013260 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013261 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
13262 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013263 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
13264 }
13265 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013266 countingStream->rewind();
13267 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013268 uint64_t cgen_var_1027;
13269 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1027, 1);
13270 countingStream->write((uint64_t*)&cgen_var_1027, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013271 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013272 uint64_t cgen_var_1028;
13273 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1028, 1);
13274 countingStream->write((uint64_t*)&cgen_var_1028, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013275 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
13276 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
13277 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
13278 {
13279 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013280 }
13281 }
13282 uint32_t packetSize_vkCmdPushDescriptorSetKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13283 countingStream->rewind();
13284 uint32_t opcode_vkCmdPushDescriptorSetKHR = OP_vkCmdPushDescriptorSetKHR;
13285 stream->write(&opcode_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
13286 stream->write(&packetSize_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013287 uint64_t cgen_var_1029;
13288 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1029, 1);
13289 stream->write((uint64_t*)&cgen_var_1029, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013290 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013291 uint64_t cgen_var_1030;
13292 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1030, 1);
13293 stream->write((uint64_t*)&cgen_var_1030, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013294 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
13295 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013296 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
13297 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013298 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013299 }
13300}
13301
13302void VkEncoder::vkCmdPushDescriptorSetWithTemplateKHR(
13303 VkCommandBuffer commandBuffer,
13304 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
13305 VkPipelineLayout layout,
13306 uint32_t set,
13307 const void* pData)
13308{
13309 auto stream = mImpl->stream();
13310 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013311 auto resources = mImpl->resources();
13312 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013313 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013314 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013315 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013316 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013317 uint32_t local_set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013318 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013319 local_commandBuffer = commandBuffer;
13320 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
13321 local_layout = layout;
13322 local_set = set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013323 local_pData = nullptr;
13324 if (pData)
13325 {
13326 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
13327 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013328 countingStream->rewind();
13329 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013330 uint64_t cgen_var_1031;
13331 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1031, 1);
13332 countingStream->write((uint64_t*)&cgen_var_1031, 1 * 8);
13333 uint64_t cgen_var_1032;
13334 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1032, 1);
13335 countingStream->write((uint64_t*)&cgen_var_1032, 1 * 8);
13336 uint64_t cgen_var_1033;
13337 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1033, 1);
13338 countingStream->write((uint64_t*)&cgen_var_1033, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013339 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013340 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013341 uint64_t cgen_var_1034 = (uint64_t)(uintptr_t)local_pData;
13342 countingStream->putBe64(cgen_var_1034);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013343 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013344 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013345 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013346 }
13347 }
13348 uint32_t packetSize_vkCmdPushDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13349 countingStream->rewind();
13350 uint32_t opcode_vkCmdPushDescriptorSetWithTemplateKHR = OP_vkCmdPushDescriptorSetWithTemplateKHR;
13351 stream->write(&opcode_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
13352 stream->write(&packetSize_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013353 uint64_t cgen_var_1035;
13354 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1035, 1);
13355 stream->write((uint64_t*)&cgen_var_1035, 1 * 8);
13356 uint64_t cgen_var_1036;
13357 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1036, 1);
13358 stream->write((uint64_t*)&cgen_var_1036, 1 * 8);
13359 uint64_t cgen_var_1037;
13360 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1037, 1);
13361 stream->write((uint64_t*)&cgen_var_1037, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013362 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013363 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013364 uint64_t cgen_var_1038 = (uint64_t)(uintptr_t)local_pData;
13365 stream->putBe64(cgen_var_1038);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013366 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013367 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013368 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013369 }
13370}
13371
13372#endif
13373#ifdef VK_KHR_16bit_storage
13374#endif
13375#ifdef VK_KHR_incremental_present
13376#endif
13377#ifdef VK_KHR_descriptor_update_template
13378VkResult VkEncoder::vkCreateDescriptorUpdateTemplateKHR(
13379 VkDevice device,
13380 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
13381 const VkAllocationCallbacks* pAllocator,
13382 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
13383{
13384 auto stream = mImpl->stream();
13385 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013386 auto resources = mImpl->resources();
13387 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013388 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013389 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013390 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013391 VkAllocationCallbacks* local_pAllocator;
13392 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013393 local_pCreateInfo = nullptr;
13394 if (pCreateInfo)
13395 {
13396 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
13397 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
13398 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013399 local_pAllocator = nullptr;
13400 if (pAllocator)
13401 {
13402 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13403 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13404 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013405 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013406 countingStream->rewind();
13407 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013408 uint64_t cgen_var_1039;
13409 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1039, 1);
13410 countingStream->write((uint64_t*)&cgen_var_1039, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013411 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013412 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013413 uint64_t cgen_var_1040 = (uint64_t)(uintptr_t)local_pAllocator;
13414 countingStream->putBe64(cgen_var_1040);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013415 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013416 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013417 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013418 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013419 uint64_t cgen_var_1041;
13420 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1041, 1);
13421 countingStream->write((uint64_t*)&cgen_var_1041, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013422 }
13423 uint32_t packetSize_vkCreateDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13424 countingStream->rewind();
13425 uint32_t opcode_vkCreateDescriptorUpdateTemplateKHR = OP_vkCreateDescriptorUpdateTemplateKHR;
13426 stream->write(&opcode_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
13427 stream->write(&packetSize_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013428 uint64_t cgen_var_1042;
13429 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1042, 1);
13430 stream->write((uint64_t*)&cgen_var_1042, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013431 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013432 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013433 uint64_t cgen_var_1043 = (uint64_t)(uintptr_t)local_pAllocator;
13434 stream->putBe64(cgen_var_1043);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013435 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013436 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013437 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013438 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013439 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013440 uint64_t cgen_var_1044;
13441 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1044, 1);
13442 stream->write((uint64_t*)&cgen_var_1044, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013443 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013444 uint64_t cgen_var_1045;
13445 stream->read((uint64_t*)&cgen_var_1045, 8);
13446 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_1045, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013447 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
13448 stream->read(&vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013449 countingStream->clearPool();
13450 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013451 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013452 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
13453}
13454
13455void VkEncoder::vkDestroyDescriptorUpdateTemplateKHR(
13456 VkDevice device,
13457 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
13458 const VkAllocationCallbacks* pAllocator)
13459{
13460 auto stream = mImpl->stream();
13461 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013462 auto resources = mImpl->resources();
13463 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013464 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013465 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013466 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013467 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013468 local_device = device;
13469 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013470 local_pAllocator = nullptr;
13471 if (pAllocator)
13472 {
13473 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13474 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13475 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013476 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013477 countingStream->rewind();
13478 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013479 uint64_t cgen_var_1046;
13480 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1046, 1);
13481 countingStream->write((uint64_t*)&cgen_var_1046, 1 * 8);
13482 uint64_t cgen_var_1047;
13483 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1047, 1);
13484 countingStream->write((uint64_t*)&cgen_var_1047, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013485 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013486 uint64_t cgen_var_1048 = (uint64_t)(uintptr_t)local_pAllocator;
13487 countingStream->putBe64(cgen_var_1048);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013488 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013489 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013490 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013491 }
13492 }
13493 uint32_t packetSize_vkDestroyDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13494 countingStream->rewind();
13495 uint32_t opcode_vkDestroyDescriptorUpdateTemplateKHR = OP_vkDestroyDescriptorUpdateTemplateKHR;
13496 stream->write(&opcode_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
13497 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013498 uint64_t cgen_var_1049;
13499 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1049, 1);
13500 stream->write((uint64_t*)&cgen_var_1049, 1 * 8);
13501 uint64_t cgen_var_1050;
13502 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1050, 1);
13503 stream->write((uint64_t*)&cgen_var_1050, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013504 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013505 uint64_t cgen_var_1051 = (uint64_t)(uintptr_t)local_pAllocator;
13506 stream->putBe64(cgen_var_1051);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013507 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013508 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013509 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013510 }
13511}
13512
13513void VkEncoder::vkUpdateDescriptorSetWithTemplateKHR(
13514 VkDevice device,
13515 VkDescriptorSet descriptorSet,
13516 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
13517 const void* pData)
13518{
13519 auto stream = mImpl->stream();
13520 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013521 auto resources = mImpl->resources();
13522 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013523 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013524 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013525 VkDescriptorSet local_descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013526 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013527 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013528 local_device = device;
13529 local_descriptorSet = descriptorSet;
13530 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013531 local_pData = nullptr;
13532 if (pData)
13533 {
13534 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
13535 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013536 countingStream->rewind();
13537 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013538 uint64_t cgen_var_1052;
13539 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1052, 1);
13540 countingStream->write((uint64_t*)&cgen_var_1052, 1 * 8);
13541 uint64_t cgen_var_1053;
13542 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1053, 1);
13543 countingStream->write((uint64_t*)&cgen_var_1053, 1 * 8);
13544 uint64_t cgen_var_1054;
13545 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1054, 1);
13546 countingStream->write((uint64_t*)&cgen_var_1054, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013547 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013548 uint64_t cgen_var_1055 = (uint64_t)(uintptr_t)local_pData;
13549 countingStream->putBe64(cgen_var_1055);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013550 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013551 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013552 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013553 }
13554 }
13555 uint32_t packetSize_vkUpdateDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13556 countingStream->rewind();
13557 uint32_t opcode_vkUpdateDescriptorSetWithTemplateKHR = OP_vkUpdateDescriptorSetWithTemplateKHR;
13558 stream->write(&opcode_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
13559 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013560 uint64_t cgen_var_1056;
13561 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1056, 1);
13562 stream->write((uint64_t*)&cgen_var_1056, 1 * 8);
13563 uint64_t cgen_var_1057;
13564 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1057, 1);
13565 stream->write((uint64_t*)&cgen_var_1057, 1 * 8);
13566 uint64_t cgen_var_1058;
13567 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1058, 1);
13568 stream->write((uint64_t*)&cgen_var_1058, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013569 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013570 uint64_t cgen_var_1059 = (uint64_t)(uintptr_t)local_pData;
13571 stream->putBe64(cgen_var_1059);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013572 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013573 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013574 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013575 }
13576}
13577
13578#endif
13579#ifdef VK_KHR_create_renderpass2
13580VkResult VkEncoder::vkCreateRenderPass2KHR(
13581 VkDevice device,
13582 const VkRenderPassCreateInfo2KHR* pCreateInfo,
13583 const VkAllocationCallbacks* pAllocator,
13584 VkRenderPass* pRenderPass)
13585{
13586 auto stream = mImpl->stream();
13587 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013588 auto resources = mImpl->resources();
13589 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013590 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013591 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013592 VkRenderPassCreateInfo2KHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013593 VkAllocationCallbacks* local_pAllocator;
13594 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013595 local_pCreateInfo = nullptr;
13596 if (pCreateInfo)
13597 {
13598 local_pCreateInfo = (VkRenderPassCreateInfo2KHR*)pool->alloc(sizeof(const VkRenderPassCreateInfo2KHR));
13599 deepcopy_VkRenderPassCreateInfo2KHR(pool, pCreateInfo, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
13600 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013601 local_pAllocator = nullptr;
13602 if (pAllocator)
13603 {
13604 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13605 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13606 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013607 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013608 countingStream->rewind();
13609 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013610 uint64_t cgen_var_1060;
13611 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1060, 1);
13612 countingStream->write((uint64_t*)&cgen_var_1060, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013613 marshal_VkRenderPassCreateInfo2KHR(countingStream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013614 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013615 uint64_t cgen_var_1061 = (uint64_t)(uintptr_t)local_pAllocator;
13616 countingStream->putBe64(cgen_var_1061);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013617 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013618 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013619 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013620 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013621 uint64_t cgen_var_1062;
13622 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1062, 1);
13623 countingStream->write((uint64_t*)&cgen_var_1062, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013624 }
13625 uint32_t packetSize_vkCreateRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13626 countingStream->rewind();
13627 uint32_t opcode_vkCreateRenderPass2KHR = OP_vkCreateRenderPass2KHR;
13628 stream->write(&opcode_vkCreateRenderPass2KHR, sizeof(uint32_t));
13629 stream->write(&packetSize_vkCreateRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013630 uint64_t cgen_var_1063;
13631 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1063, 1);
13632 stream->write((uint64_t*)&cgen_var_1063, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013633 marshal_VkRenderPassCreateInfo2KHR(stream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013634 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013635 uint64_t cgen_var_1064 = (uint64_t)(uintptr_t)local_pAllocator;
13636 stream->putBe64(cgen_var_1064);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013637 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013638 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013639 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013640 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013641 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013642 uint64_t cgen_var_1065;
13643 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1065, 1);
13644 stream->write((uint64_t*)&cgen_var_1065, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013645 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013646 uint64_t cgen_var_1066;
13647 stream->read((uint64_t*)&cgen_var_1066, 8);
13648 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_1066, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013649 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
13650 stream->read(&vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013651 countingStream->clearPool();
13652 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013653 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013654 return vkCreateRenderPass2KHR_VkResult_return;
13655}
13656
13657void VkEncoder::vkCmdBeginRenderPass2KHR(
13658 VkCommandBuffer commandBuffer,
13659 const VkRenderPassBeginInfo* pRenderPassBegin,
13660 const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
13661{
13662 auto stream = mImpl->stream();
13663 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013664 auto resources = mImpl->resources();
13665 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013666 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013667 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013668 VkRenderPassBeginInfo* local_pRenderPassBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013669 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
13670 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013671 local_pRenderPassBegin = nullptr;
13672 if (pRenderPassBegin)
13673 {
13674 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
13675 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
13676 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013677 local_pSubpassBeginInfo = nullptr;
13678 if (pSubpassBeginInfo)
13679 {
13680 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
13681 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13682 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013683 countingStream->rewind();
13684 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013685 uint64_t cgen_var_1067;
13686 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1067, 1);
13687 countingStream->write((uint64_t*)&cgen_var_1067, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013688 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
13689 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013690 }
13691 uint32_t packetSize_vkCmdBeginRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13692 countingStream->rewind();
13693 uint32_t opcode_vkCmdBeginRenderPass2KHR = OP_vkCmdBeginRenderPass2KHR;
13694 stream->write(&opcode_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
13695 stream->write(&packetSize_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013696 uint64_t cgen_var_1068;
13697 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1068, 1);
13698 stream->write((uint64_t*)&cgen_var_1068, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013699 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
13700 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013701}
13702
13703void VkEncoder::vkCmdNextSubpass2KHR(
13704 VkCommandBuffer commandBuffer,
13705 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
13706 const VkSubpassEndInfoKHR* pSubpassEndInfo)
13707{
13708 auto stream = mImpl->stream();
13709 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013710 auto resources = mImpl->resources();
13711 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013712 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013713 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013714 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013715 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
13716 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013717 local_pSubpassBeginInfo = nullptr;
13718 if (pSubpassBeginInfo)
13719 {
13720 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
13721 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13722 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013723 local_pSubpassEndInfo = nullptr;
13724 if (pSubpassEndInfo)
13725 {
13726 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
13727 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
13728 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013729 countingStream->rewind();
13730 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013731 uint64_t cgen_var_1069;
13732 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1069, 1);
13733 countingStream->write((uint64_t*)&cgen_var_1069, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013734 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13735 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013736 }
13737 uint32_t packetSize_vkCmdNextSubpass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13738 countingStream->rewind();
13739 uint32_t opcode_vkCmdNextSubpass2KHR = OP_vkCmdNextSubpass2KHR;
13740 stream->write(&opcode_vkCmdNextSubpass2KHR, sizeof(uint32_t));
13741 stream->write(&packetSize_vkCmdNextSubpass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013742 uint64_t cgen_var_1070;
13743 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1070, 1);
13744 stream->write((uint64_t*)&cgen_var_1070, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013745 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13746 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013747}
13748
13749void VkEncoder::vkCmdEndRenderPass2KHR(
13750 VkCommandBuffer commandBuffer,
13751 const VkSubpassEndInfoKHR* pSubpassEndInfo)
13752{
13753 auto stream = mImpl->stream();
13754 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013755 auto resources = mImpl->resources();
13756 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013757 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013758 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013759 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013760 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013761 local_pSubpassEndInfo = nullptr;
13762 if (pSubpassEndInfo)
13763 {
13764 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
13765 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
13766 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013767 countingStream->rewind();
13768 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013769 uint64_t cgen_var_1071;
13770 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1071, 1);
13771 countingStream->write((uint64_t*)&cgen_var_1071, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013772 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013773 }
13774 uint32_t packetSize_vkCmdEndRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13775 countingStream->rewind();
13776 uint32_t opcode_vkCmdEndRenderPass2KHR = OP_vkCmdEndRenderPass2KHR;
13777 stream->write(&opcode_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
13778 stream->write(&packetSize_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013779 uint64_t cgen_var_1072;
13780 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1072, 1);
13781 stream->write((uint64_t*)&cgen_var_1072, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013782 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013783}
13784
13785#endif
13786#ifdef VK_KHR_shared_presentable_image
13787VkResult VkEncoder::vkGetSwapchainStatusKHR(
13788 VkDevice device,
13789 VkSwapchainKHR swapchain)
13790{
13791 auto stream = mImpl->stream();
13792 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013793 auto resources = mImpl->resources();
13794 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013795 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013796 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013797 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013798 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013799 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013800 countingStream->rewind();
13801 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013802 uint64_t cgen_var_1073;
13803 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1073, 1);
13804 countingStream->write((uint64_t*)&cgen_var_1073, 1 * 8);
13805 uint64_t cgen_var_1074;
13806 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1074, 1);
13807 countingStream->write((uint64_t*)&cgen_var_1074, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013808 }
13809 uint32_t packetSize_vkGetSwapchainStatusKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13810 countingStream->rewind();
13811 uint32_t opcode_vkGetSwapchainStatusKHR = OP_vkGetSwapchainStatusKHR;
13812 stream->write(&opcode_vkGetSwapchainStatusKHR, sizeof(uint32_t));
13813 stream->write(&packetSize_vkGetSwapchainStatusKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013814 uint64_t cgen_var_1075;
13815 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1075, 1);
13816 stream->write((uint64_t*)&cgen_var_1075, 1 * 8);
13817 uint64_t cgen_var_1076;
13818 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1076, 1);
13819 stream->write((uint64_t*)&cgen_var_1076, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013820 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
13821 stream->read(&vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013822 countingStream->clearPool();
13823 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013824 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013825 return vkGetSwapchainStatusKHR_VkResult_return;
13826}
13827
13828#endif
13829#ifdef VK_KHR_external_fence_capabilities
13830void VkEncoder::vkGetPhysicalDeviceExternalFencePropertiesKHR(
13831 VkPhysicalDevice physicalDevice,
13832 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
13833 VkExternalFenceProperties* pExternalFenceProperties)
13834{
13835 auto stream = mImpl->stream();
13836 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013837 auto resources = mImpl->resources();
13838 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013839 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013840 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013841 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013842 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013843 local_pExternalFenceInfo = nullptr;
13844 if (pExternalFenceInfo)
13845 {
13846 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
13847 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
13848 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013849 countingStream->rewind();
13850 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013851 uint64_t cgen_var_1077;
13852 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1077, 1);
13853 countingStream->write((uint64_t*)&cgen_var_1077, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013854 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013855 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
13856 }
13857 uint32_t packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13858 countingStream->rewind();
13859 uint32_t opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR = OP_vkGetPhysicalDeviceExternalFencePropertiesKHR;
13860 stream->write(&opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
13861 stream->write(&packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013862 uint64_t cgen_var_1078;
13863 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1078, 1);
13864 stream->write((uint64_t*)&cgen_var_1078, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013865 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013866 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
13867 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
13868}
13869
13870#endif
13871#ifdef VK_KHR_external_fence
13872#endif
13873#ifdef VK_KHR_external_fence_win32
13874VkResult VkEncoder::vkImportFenceWin32HandleKHR(
13875 VkDevice device,
13876 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
13877{
13878 auto stream = mImpl->stream();
13879 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013880 auto resources = mImpl->resources();
13881 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013882 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013883 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013884 VkImportFenceWin32HandleInfoKHR* local_pImportFenceWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013885 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013886 local_pImportFenceWin32HandleInfo = nullptr;
13887 if (pImportFenceWin32HandleInfo)
13888 {
13889 local_pImportFenceWin32HandleInfo = (VkImportFenceWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportFenceWin32HandleInfoKHR));
13890 deepcopy_VkImportFenceWin32HandleInfoKHR(pool, pImportFenceWin32HandleInfo, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
13891 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013892 countingStream->rewind();
13893 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013894 uint64_t cgen_var_1079;
13895 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1079, 1);
13896 countingStream->write((uint64_t*)&cgen_var_1079, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013897 marshal_VkImportFenceWin32HandleInfoKHR(countingStream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013898 }
13899 uint32_t packetSize_vkImportFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13900 countingStream->rewind();
13901 uint32_t opcode_vkImportFenceWin32HandleKHR = OP_vkImportFenceWin32HandleKHR;
13902 stream->write(&opcode_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
13903 stream->write(&packetSize_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013904 uint64_t cgen_var_1080;
13905 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1080, 1);
13906 stream->write((uint64_t*)&cgen_var_1080, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013907 marshal_VkImportFenceWin32HandleInfoKHR(stream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013908 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
13909 stream->read(&vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013910 countingStream->clearPool();
13911 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013912 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013913 return vkImportFenceWin32HandleKHR_VkResult_return;
13914}
13915
13916VkResult VkEncoder::vkGetFenceWin32HandleKHR(
13917 VkDevice device,
13918 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
13919 HANDLE* pHandle)
13920{
13921 auto stream = mImpl->stream();
13922 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013923 auto resources = mImpl->resources();
13924 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013925 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013926 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013927 VkFenceGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013928 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013929 local_pGetWin32HandleInfo = nullptr;
13930 if (pGetWin32HandleInfo)
13931 {
13932 local_pGetWin32HandleInfo = (VkFenceGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkFenceGetWin32HandleInfoKHR));
13933 deepcopy_VkFenceGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
13934 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013935 countingStream->rewind();
13936 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013937 uint64_t cgen_var_1081;
13938 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1081, 1);
13939 countingStream->write((uint64_t*)&cgen_var_1081, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013940 marshal_VkFenceGetWin32HandleInfoKHR(countingStream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013941 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
13942 }
13943 uint32_t packetSize_vkGetFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13944 countingStream->rewind();
13945 uint32_t opcode_vkGetFenceWin32HandleKHR = OP_vkGetFenceWin32HandleKHR;
13946 stream->write(&opcode_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
13947 stream->write(&packetSize_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013948 uint64_t cgen_var_1082;
13949 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1082, 1);
13950 stream->write((uint64_t*)&cgen_var_1082, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013951 marshal_VkFenceGetWin32HandleInfoKHR(stream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013952 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
13953 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
13954 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
13955 stream->read(&vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013956 countingStream->clearPool();
13957 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013958 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013959 return vkGetFenceWin32HandleKHR_VkResult_return;
13960}
13961
13962#endif
13963#ifdef VK_KHR_external_fence_fd
13964VkResult VkEncoder::vkImportFenceFdKHR(
13965 VkDevice device,
13966 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
13967{
13968 auto stream = mImpl->stream();
13969 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013970 auto resources = mImpl->resources();
13971 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013972 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013973 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013974 VkImportFenceFdInfoKHR* local_pImportFenceFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013975 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013976 local_pImportFenceFdInfo = nullptr;
13977 if (pImportFenceFdInfo)
13978 {
13979 local_pImportFenceFdInfo = (VkImportFenceFdInfoKHR*)pool->alloc(sizeof(const VkImportFenceFdInfoKHR));
13980 deepcopy_VkImportFenceFdInfoKHR(pool, pImportFenceFdInfo, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
13981 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013982 countingStream->rewind();
13983 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013984 uint64_t cgen_var_1083;
13985 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1083, 1);
13986 countingStream->write((uint64_t*)&cgen_var_1083, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013987 marshal_VkImportFenceFdInfoKHR(countingStream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013988 }
13989 uint32_t packetSize_vkImportFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13990 countingStream->rewind();
13991 uint32_t opcode_vkImportFenceFdKHR = OP_vkImportFenceFdKHR;
13992 stream->write(&opcode_vkImportFenceFdKHR, sizeof(uint32_t));
13993 stream->write(&packetSize_vkImportFenceFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013994 uint64_t cgen_var_1084;
13995 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1084, 1);
13996 stream->write((uint64_t*)&cgen_var_1084, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013997 marshal_VkImportFenceFdInfoKHR(stream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013998 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
13999 stream->read(&vkImportFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014000 countingStream->clearPool();
14001 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014002 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014003 return vkImportFenceFdKHR_VkResult_return;
14004}
14005
14006VkResult VkEncoder::vkGetFenceFdKHR(
14007 VkDevice device,
14008 const VkFenceGetFdInfoKHR* pGetFdInfo,
14009 int* pFd)
14010{
14011 auto stream = mImpl->stream();
14012 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014013 auto resources = mImpl->resources();
14014 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014015 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014016 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014017 VkFenceGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014018 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014019 local_pGetFdInfo = nullptr;
14020 if (pGetFdInfo)
14021 {
14022 local_pGetFdInfo = (VkFenceGetFdInfoKHR*)pool->alloc(sizeof(const VkFenceGetFdInfoKHR));
14023 deepcopy_VkFenceGetFdInfoKHR(pool, pGetFdInfo, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
14024 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014025 countingStream->rewind();
14026 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014027 uint64_t cgen_var_1085;
14028 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1085, 1);
14029 countingStream->write((uint64_t*)&cgen_var_1085, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014030 marshal_VkFenceGetFdInfoKHR(countingStream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014031 countingStream->write((int*)pFd, sizeof(int));
14032 }
14033 uint32_t packetSize_vkGetFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14034 countingStream->rewind();
14035 uint32_t opcode_vkGetFenceFdKHR = OP_vkGetFenceFdKHR;
14036 stream->write(&opcode_vkGetFenceFdKHR, sizeof(uint32_t));
14037 stream->write(&packetSize_vkGetFenceFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014038 uint64_t cgen_var_1086;
14039 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1086, 1);
14040 stream->write((uint64_t*)&cgen_var_1086, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014041 marshal_VkFenceGetFdInfoKHR(stream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014042 stream->write((int*)pFd, sizeof(int));
14043 stream->read((int*)pFd, sizeof(int));
14044 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
14045 stream->read(&vkGetFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014046 countingStream->clearPool();
14047 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014048 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014049 return vkGetFenceFdKHR_VkResult_return;
14050}
14051
14052#endif
14053#ifdef VK_KHR_maintenance2
14054#endif
14055#ifdef VK_KHR_get_surface_capabilities2
14056VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2KHR(
14057 VkPhysicalDevice physicalDevice,
14058 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
14059 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
14060{
14061 auto stream = mImpl->stream();
14062 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014063 auto resources = mImpl->resources();
14064 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014065 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014066 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014067 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014068 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014069 local_pSurfaceInfo = nullptr;
14070 if (pSurfaceInfo)
14071 {
14072 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
14073 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
14074 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014075 countingStream->rewind();
14076 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014077 uint64_t cgen_var_1087;
14078 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1087, 1);
14079 countingStream->write((uint64_t*)&cgen_var_1087, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014080 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014081 marshal_VkSurfaceCapabilities2KHR(countingStream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
14082 }
14083 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14084 countingStream->rewind();
14085 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR = OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR;
14086 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
14087 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014088 uint64_t cgen_var_1088;
14089 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1088, 1);
14090 stream->write((uint64_t*)&cgen_var_1088, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014091 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014092 marshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
14093 unmarshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
14094 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
14095 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014096 countingStream->clearPool();
14097 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014098 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014099 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
14100}
14101
14102VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormats2KHR(
14103 VkPhysicalDevice physicalDevice,
14104 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
14105 uint32_t* pSurfaceFormatCount,
14106 VkSurfaceFormat2KHR* pSurfaceFormats)
14107{
14108 auto stream = mImpl->stream();
14109 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014110 auto resources = mImpl->resources();
14111 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014112 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014113 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014114 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014115 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014116 local_pSurfaceInfo = nullptr;
14117 if (pSurfaceInfo)
14118 {
14119 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
14120 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
14121 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014122 countingStream->rewind();
14123 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014124 uint64_t cgen_var_1089;
14125 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1089, 1);
14126 countingStream->write((uint64_t*)&cgen_var_1089, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014127 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014128 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014129 uint64_t cgen_var_1090 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
14130 countingStream->putBe64(cgen_var_1090);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014131 if (pSurfaceFormatCount)
14132 {
14133 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
14134 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014135 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014136 uint64_t cgen_var_1091 = (uint64_t)(uintptr_t)pSurfaceFormats;
14137 countingStream->putBe64(cgen_var_1091);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014138 if (pSurfaceFormats)
14139 {
14140 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
14141 {
14142 marshal_VkSurfaceFormat2KHR(countingStream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
14143 }
14144 }
14145 }
14146 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14147 countingStream->rewind();
14148 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormats2KHR = OP_vkGetPhysicalDeviceSurfaceFormats2KHR;
14149 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
14150 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014151 uint64_t cgen_var_1092;
14152 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1092, 1);
14153 stream->write((uint64_t*)&cgen_var_1092, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014154 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014155 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014156 uint64_t cgen_var_1093 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
14157 stream->putBe64(cgen_var_1093);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014158 if (pSurfaceFormatCount)
14159 {
14160 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
14161 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014162 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014163 uint64_t cgen_var_1094 = (uint64_t)(uintptr_t)pSurfaceFormats;
14164 stream->putBe64(cgen_var_1094);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014165 if (pSurfaceFormats)
14166 {
14167 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
14168 {
14169 marshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
14170 }
14171 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014172 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014173 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014174 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014175 if (pSurfaceFormatCount)
14176 {
14177 if (!(check_pSurfaceFormatCount))
14178 {
14179 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
14180 }
14181 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
14182 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014183 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014184 VkSurfaceFormat2KHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014185 check_pSurfaceFormats = (VkSurfaceFormat2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014186 if (pSurfaceFormats)
14187 {
14188 if (!(check_pSurfaceFormats))
14189 {
14190 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
14191 }
14192 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
14193 {
14194 unmarshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
14195 }
14196 }
14197 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
14198 stream->read(&vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014199 countingStream->clearPool();
14200 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014201 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014202 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
14203}
14204
14205#endif
14206#ifdef VK_KHR_variable_pointers
14207#endif
14208#ifdef VK_KHR_get_display_properties2
14209VkResult VkEncoder::vkGetPhysicalDeviceDisplayProperties2KHR(
14210 VkPhysicalDevice physicalDevice,
14211 uint32_t* pPropertyCount,
14212 VkDisplayProperties2KHR* pProperties)
14213{
14214 auto stream = mImpl->stream();
14215 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014216 auto resources = mImpl->resources();
14217 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014218 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014219 VkPhysicalDevice local_physicalDevice;
14220 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014221 countingStream->rewind();
14222 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014223 uint64_t cgen_var_1097;
14224 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1097, 1);
14225 countingStream->write((uint64_t*)&cgen_var_1097, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014226 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014227 uint64_t cgen_var_1098 = (uint64_t)(uintptr_t)pPropertyCount;
14228 countingStream->putBe64(cgen_var_1098);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014229 if (pPropertyCount)
14230 {
14231 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14232 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014233 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014234 uint64_t cgen_var_1099 = (uint64_t)(uintptr_t)pProperties;
14235 countingStream->putBe64(cgen_var_1099);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014236 if (pProperties)
14237 {
14238 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14239 {
14240 marshal_VkDisplayProperties2KHR(countingStream, (VkDisplayProperties2KHR*)(pProperties + i));
14241 }
14242 }
14243 }
14244 uint32_t packetSize_vkGetPhysicalDeviceDisplayProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14245 countingStream->rewind();
14246 uint32_t opcode_vkGetPhysicalDeviceDisplayProperties2KHR = OP_vkGetPhysicalDeviceDisplayProperties2KHR;
14247 stream->write(&opcode_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
14248 stream->write(&packetSize_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014249 uint64_t cgen_var_1100;
14250 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1100, 1);
14251 stream->write((uint64_t*)&cgen_var_1100, 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_1101 = (uint64_t)(uintptr_t)pPropertyCount;
14254 stream->putBe64(cgen_var_1101);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014255 if (pPropertyCount)
14256 {
14257 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14258 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014259 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014260 uint64_t cgen_var_1102 = (uint64_t)(uintptr_t)pProperties;
14261 stream->putBe64(cgen_var_1102);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014262 if (pProperties)
14263 {
14264 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14265 {
14266 marshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
14267 }
14268 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014269 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014270 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014271 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014272 if (pPropertyCount)
14273 {
14274 if (!(check_pPropertyCount))
14275 {
14276 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
14277 }
14278 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
14279 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014280 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014281 VkDisplayProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014282 check_pProperties = (VkDisplayProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014283 if (pProperties)
14284 {
14285 if (!(check_pProperties))
14286 {
14287 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
14288 }
14289 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14290 {
14291 unmarshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
14292 }
14293 }
14294 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
14295 stream->read(&vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014296 countingStream->clearPool();
14297 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014298 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014299 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
14300}
14301
14302VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
14303 VkPhysicalDevice physicalDevice,
14304 uint32_t* pPropertyCount,
14305 VkDisplayPlaneProperties2KHR* pProperties)
14306{
14307 auto stream = mImpl->stream();
14308 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014309 auto resources = mImpl->resources();
14310 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014311 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014312 VkPhysicalDevice local_physicalDevice;
14313 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014314 countingStream->rewind();
14315 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014316 uint64_t cgen_var_1105;
14317 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1105, 1);
14318 countingStream->write((uint64_t*)&cgen_var_1105, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014319 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014320 uint64_t cgen_var_1106 = (uint64_t)(uintptr_t)pPropertyCount;
14321 countingStream->putBe64(cgen_var_1106);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014322 if (pPropertyCount)
14323 {
14324 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14325 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014326 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014327 uint64_t cgen_var_1107 = (uint64_t)(uintptr_t)pProperties;
14328 countingStream->putBe64(cgen_var_1107);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014329 if (pProperties)
14330 {
14331 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14332 {
14333 marshal_VkDisplayPlaneProperties2KHR(countingStream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
14334 }
14335 }
14336 }
14337 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14338 countingStream->rewind();
14339 uint32_t opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
14340 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
14341 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014342 uint64_t cgen_var_1108;
14343 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1108, 1);
14344 stream->write((uint64_t*)&cgen_var_1108, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014345 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014346 uint64_t cgen_var_1109 = (uint64_t)(uintptr_t)pPropertyCount;
14347 stream->putBe64(cgen_var_1109);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014348 if (pPropertyCount)
14349 {
14350 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14351 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014352 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014353 uint64_t cgen_var_1110 = (uint64_t)(uintptr_t)pProperties;
14354 stream->putBe64(cgen_var_1110);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014355 if (pProperties)
14356 {
14357 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14358 {
14359 marshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
14360 }
14361 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014362 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014363 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014364 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014365 if (pPropertyCount)
14366 {
14367 if (!(check_pPropertyCount))
14368 {
14369 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
14370 }
14371 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
14372 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014373 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014374 VkDisplayPlaneProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014375 check_pProperties = (VkDisplayPlaneProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014376 if (pProperties)
14377 {
14378 if (!(check_pProperties))
14379 {
14380 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
14381 }
14382 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14383 {
14384 unmarshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
14385 }
14386 }
14387 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
14388 stream->read(&vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014389 countingStream->clearPool();
14390 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014391 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014392 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
14393}
14394
14395VkResult VkEncoder::vkGetDisplayModeProperties2KHR(
14396 VkPhysicalDevice physicalDevice,
14397 VkDisplayKHR display,
14398 uint32_t* pPropertyCount,
14399 VkDisplayModeProperties2KHR* pProperties)
14400{
14401 auto stream = mImpl->stream();
14402 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014403 auto resources = mImpl->resources();
14404 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014405 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014406 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014407 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014408 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014409 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014410 countingStream->rewind();
14411 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014412 uint64_t cgen_var_1113;
14413 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1113, 1);
14414 countingStream->write((uint64_t*)&cgen_var_1113, 1 * 8);
14415 uint64_t cgen_var_1114;
14416 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1114, 1);
14417 countingStream->write((uint64_t*)&cgen_var_1114, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014418 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014419 uint64_t cgen_var_1115 = (uint64_t)(uintptr_t)pPropertyCount;
14420 countingStream->putBe64(cgen_var_1115);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014421 if (pPropertyCount)
14422 {
14423 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14424 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014425 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014426 uint64_t cgen_var_1116 = (uint64_t)(uintptr_t)pProperties;
14427 countingStream->putBe64(cgen_var_1116);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014428 if (pProperties)
14429 {
14430 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14431 {
14432 marshal_VkDisplayModeProperties2KHR(countingStream, (VkDisplayModeProperties2KHR*)(pProperties + i));
14433 }
14434 }
14435 }
14436 uint32_t packetSize_vkGetDisplayModeProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14437 countingStream->rewind();
14438 uint32_t opcode_vkGetDisplayModeProperties2KHR = OP_vkGetDisplayModeProperties2KHR;
14439 stream->write(&opcode_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
14440 stream->write(&packetSize_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014441 uint64_t cgen_var_1117;
14442 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1117, 1);
14443 stream->write((uint64_t*)&cgen_var_1117, 1 * 8);
14444 uint64_t cgen_var_1118;
14445 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1118, 1);
14446 stream->write((uint64_t*)&cgen_var_1118, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014447 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014448 uint64_t cgen_var_1119 = (uint64_t)(uintptr_t)pPropertyCount;
14449 stream->putBe64(cgen_var_1119);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014450 if (pPropertyCount)
14451 {
14452 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14453 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014454 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014455 uint64_t cgen_var_1120 = (uint64_t)(uintptr_t)pProperties;
14456 stream->putBe64(cgen_var_1120);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014457 if (pProperties)
14458 {
14459 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14460 {
14461 marshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
14462 }
14463 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014464 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014465 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014466 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014467 if (pPropertyCount)
14468 {
14469 if (!(check_pPropertyCount))
14470 {
14471 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
14472 }
14473 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
14474 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014475 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014476 VkDisplayModeProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014477 check_pProperties = (VkDisplayModeProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014478 if (pProperties)
14479 {
14480 if (!(check_pProperties))
14481 {
14482 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
14483 }
14484 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14485 {
14486 unmarshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
14487 }
14488 }
14489 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
14490 stream->read(&vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014491 countingStream->clearPool();
14492 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014493 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014494 return vkGetDisplayModeProperties2KHR_VkResult_return;
14495}
14496
14497VkResult VkEncoder::vkGetDisplayPlaneCapabilities2KHR(
14498 VkPhysicalDevice physicalDevice,
14499 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
14500 VkDisplayPlaneCapabilities2KHR* pCapabilities)
14501{
14502 auto stream = mImpl->stream();
14503 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014504 auto resources = mImpl->resources();
14505 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014506 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014507 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014508 VkDisplayPlaneInfo2KHR* local_pDisplayPlaneInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014509 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014510 local_pDisplayPlaneInfo = nullptr;
14511 if (pDisplayPlaneInfo)
14512 {
14513 local_pDisplayPlaneInfo = (VkDisplayPlaneInfo2KHR*)pool->alloc(sizeof(const VkDisplayPlaneInfo2KHR));
14514 deepcopy_VkDisplayPlaneInfo2KHR(pool, pDisplayPlaneInfo, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
14515 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014516 countingStream->rewind();
14517 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014518 uint64_t cgen_var_1123;
14519 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1123, 1);
14520 countingStream->write((uint64_t*)&cgen_var_1123, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014521 marshal_VkDisplayPlaneInfo2KHR(countingStream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014522 marshal_VkDisplayPlaneCapabilities2KHR(countingStream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
14523 }
14524 uint32_t packetSize_vkGetDisplayPlaneCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14525 countingStream->rewind();
14526 uint32_t opcode_vkGetDisplayPlaneCapabilities2KHR = OP_vkGetDisplayPlaneCapabilities2KHR;
14527 stream->write(&opcode_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
14528 stream->write(&packetSize_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014529 uint64_t cgen_var_1124;
14530 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1124, 1);
14531 stream->write((uint64_t*)&cgen_var_1124, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014532 marshal_VkDisplayPlaneInfo2KHR(stream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014533 marshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
14534 unmarshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
14535 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
14536 stream->read(&vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014537 countingStream->clearPool();
14538 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014539 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014540 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
14541}
14542
14543#endif
14544#ifdef VK_KHR_dedicated_allocation
14545#endif
14546#ifdef VK_KHR_storage_buffer_storage_class
14547#endif
14548#ifdef VK_KHR_relaxed_block_layout
14549#endif
14550#ifdef VK_KHR_get_memory_requirements2
14551void VkEncoder::vkGetImageMemoryRequirements2KHR(
14552 VkDevice device,
14553 const VkImageMemoryRequirementsInfo2* pInfo,
14554 VkMemoryRequirements2* pMemoryRequirements)
14555{
14556 auto stream = mImpl->stream();
14557 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014558 auto resources = mImpl->resources();
14559 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014560 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014561 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014562 VkImageMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014563 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014564 local_pInfo = nullptr;
14565 if (pInfo)
14566 {
14567 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
14568 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
14569 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014570 countingStream->rewind();
14571 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014572 uint64_t cgen_var_1125;
14573 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1125, 1);
14574 countingStream->write((uint64_t*)&cgen_var_1125, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014575 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014576 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
14577 }
14578 uint32_t packetSize_vkGetImageMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14579 countingStream->rewind();
14580 uint32_t opcode_vkGetImageMemoryRequirements2KHR = OP_vkGetImageMemoryRequirements2KHR;
14581 stream->write(&opcode_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
14582 stream->write(&packetSize_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014583 uint64_t cgen_var_1126;
14584 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1126, 1);
14585 stream->write((uint64_t*)&cgen_var_1126, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014586 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014587 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14588 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14589}
14590
14591void VkEncoder::vkGetBufferMemoryRequirements2KHR(
14592 VkDevice device,
14593 const VkBufferMemoryRequirementsInfo2* pInfo,
14594 VkMemoryRequirements2* pMemoryRequirements)
14595{
14596 auto stream = mImpl->stream();
14597 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014598 auto resources = mImpl->resources();
14599 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014600 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014601 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014602 VkBufferMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014603 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014604 local_pInfo = nullptr;
14605 if (pInfo)
14606 {
14607 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
14608 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
14609 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014610 countingStream->rewind();
14611 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014612 uint64_t cgen_var_1127;
14613 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1127, 1);
14614 countingStream->write((uint64_t*)&cgen_var_1127, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014615 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014616 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
14617 }
14618 uint32_t packetSize_vkGetBufferMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14619 countingStream->rewind();
14620 uint32_t opcode_vkGetBufferMemoryRequirements2KHR = OP_vkGetBufferMemoryRequirements2KHR;
14621 stream->write(&opcode_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
14622 stream->write(&packetSize_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014623 uint64_t cgen_var_1128;
14624 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1128, 1);
14625 stream->write((uint64_t*)&cgen_var_1128, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014626 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014627 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14628 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14629}
14630
14631void VkEncoder::vkGetImageSparseMemoryRequirements2KHR(
14632 VkDevice device,
14633 const VkImageSparseMemoryRequirementsInfo2* pInfo,
14634 uint32_t* pSparseMemoryRequirementCount,
14635 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
14636{
14637 auto stream = mImpl->stream();
14638 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014639 auto resources = mImpl->resources();
14640 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014641 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014642 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014643 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014644 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014645 local_pInfo = nullptr;
14646 if (pInfo)
14647 {
14648 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
14649 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
14650 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014651 countingStream->rewind();
14652 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014653 uint64_t cgen_var_1129;
14654 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1129, 1);
14655 countingStream->write((uint64_t*)&cgen_var_1129, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014656 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014657 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014658 uint64_t cgen_var_1130 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
14659 countingStream->putBe64(cgen_var_1130);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014660 if (pSparseMemoryRequirementCount)
14661 {
14662 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
14663 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014664 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014665 uint64_t cgen_var_1131 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
14666 countingStream->putBe64(cgen_var_1131);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014667 if (pSparseMemoryRequirements)
14668 {
14669 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
14670 {
14671 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
14672 }
14673 }
14674 }
14675 uint32_t packetSize_vkGetImageSparseMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14676 countingStream->rewind();
14677 uint32_t opcode_vkGetImageSparseMemoryRequirements2KHR = OP_vkGetImageSparseMemoryRequirements2KHR;
14678 stream->write(&opcode_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
14679 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014680 uint64_t cgen_var_1132;
14681 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1132, 1);
14682 stream->write((uint64_t*)&cgen_var_1132, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014683 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014684 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014685 uint64_t cgen_var_1133 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
14686 stream->putBe64(cgen_var_1133);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014687 if (pSparseMemoryRequirementCount)
14688 {
14689 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
14690 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014691 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014692 uint64_t cgen_var_1134 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
14693 stream->putBe64(cgen_var_1134);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014694 if (pSparseMemoryRequirements)
14695 {
14696 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
14697 {
14698 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
14699 }
14700 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014701 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014702 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014703 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014704 if (pSparseMemoryRequirementCount)
14705 {
14706 if (!(check_pSparseMemoryRequirementCount))
14707 {
14708 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
14709 }
14710 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
14711 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014712 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014713 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014714 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014715 if (pSparseMemoryRequirements)
14716 {
14717 if (!(check_pSparseMemoryRequirements))
14718 {
14719 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
14720 }
14721 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
14722 {
14723 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
14724 }
14725 }
14726}
14727
14728#endif
14729#ifdef VK_KHR_image_format_list
14730#endif
14731#ifdef VK_KHR_sampler_ycbcr_conversion
14732VkResult VkEncoder::vkCreateSamplerYcbcrConversionKHR(
14733 VkDevice device,
14734 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
14735 const VkAllocationCallbacks* pAllocator,
14736 VkSamplerYcbcrConversion* pYcbcrConversion)
14737{
14738 auto stream = mImpl->stream();
14739 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014740 auto resources = mImpl->resources();
14741 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014742 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014743 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014744 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014745 VkAllocationCallbacks* local_pAllocator;
14746 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014747 local_pCreateInfo = nullptr;
14748 if (pCreateInfo)
14749 {
14750 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
14751 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
14752 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014753 local_pAllocator = nullptr;
14754 if (pAllocator)
14755 {
14756 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14757 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14758 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014759 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014760 countingStream->rewind();
14761 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014762 uint64_t cgen_var_1137;
14763 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1137, 1);
14764 countingStream->write((uint64_t*)&cgen_var_1137, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014765 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014766 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014767 uint64_t cgen_var_1138 = (uint64_t)(uintptr_t)local_pAllocator;
14768 countingStream->putBe64(cgen_var_1138);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014769 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014770 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014771 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014772 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014773 uint64_t cgen_var_1139;
14774 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1139, 1);
14775 countingStream->write((uint64_t*)&cgen_var_1139, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014776 }
14777 uint32_t packetSize_vkCreateSamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14778 countingStream->rewind();
14779 uint32_t opcode_vkCreateSamplerYcbcrConversionKHR = OP_vkCreateSamplerYcbcrConversionKHR;
14780 stream->write(&opcode_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
14781 stream->write(&packetSize_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014782 uint64_t cgen_var_1140;
14783 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1140, 1);
14784 stream->write((uint64_t*)&cgen_var_1140, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014785 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014786 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014787 uint64_t cgen_var_1141 = (uint64_t)(uintptr_t)local_pAllocator;
14788 stream->putBe64(cgen_var_1141);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014789 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014790 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014791 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014792 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080014793 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014794 uint64_t cgen_var_1142;
14795 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1142, 1);
14796 stream->write((uint64_t*)&cgen_var_1142, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080014797 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014798 uint64_t cgen_var_1143;
14799 stream->read((uint64_t*)&cgen_var_1143, 8);
14800 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_1143, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014801 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
14802 stream->read(&vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014803 countingStream->clearPool();
14804 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014805 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014806 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
14807}
14808
14809void VkEncoder::vkDestroySamplerYcbcrConversionKHR(
14810 VkDevice device,
14811 VkSamplerYcbcrConversion ycbcrConversion,
14812 const VkAllocationCallbacks* pAllocator)
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 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014820 VkSamplerYcbcrConversion local_ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014821 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014822 local_device = device;
14823 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014824 local_pAllocator = nullptr;
14825 if (pAllocator)
14826 {
14827 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14828 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14829 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014830 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014831 countingStream->rewind();
14832 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014833 uint64_t cgen_var_1144;
14834 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1144, 1);
14835 countingStream->write((uint64_t*)&cgen_var_1144, 1 * 8);
14836 uint64_t cgen_var_1145;
14837 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1145, 1);
14838 countingStream->write((uint64_t*)&cgen_var_1145, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014839 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014840 uint64_t cgen_var_1146 = (uint64_t)(uintptr_t)local_pAllocator;
14841 countingStream->putBe64(cgen_var_1146);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014842 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014843 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014844 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014845 }
14846 }
14847 uint32_t packetSize_vkDestroySamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14848 countingStream->rewind();
14849 uint32_t opcode_vkDestroySamplerYcbcrConversionKHR = OP_vkDestroySamplerYcbcrConversionKHR;
14850 stream->write(&opcode_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
14851 stream->write(&packetSize_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014852 uint64_t cgen_var_1147;
14853 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1147, 1);
14854 stream->write((uint64_t*)&cgen_var_1147, 1 * 8);
14855 uint64_t cgen_var_1148;
14856 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1148, 1);
14857 stream->write((uint64_t*)&cgen_var_1148, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014858 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014859 uint64_t cgen_var_1149 = (uint64_t)(uintptr_t)local_pAllocator;
14860 stream->putBe64(cgen_var_1149);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014861 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014862 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014863 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014864 }
14865}
14866
14867#endif
14868#ifdef VK_KHR_bind_memory2
14869VkResult VkEncoder::vkBindBufferMemory2KHR(
14870 VkDevice device,
14871 uint32_t bindInfoCount,
14872 const VkBindBufferMemoryInfo* pBindInfos)
14873{
14874 auto stream = mImpl->stream();
14875 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014876 auto resources = mImpl->resources();
14877 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014878 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014879 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014880 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014881 VkBindBufferMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014882 local_device = device;
14883 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014884 local_pBindInfos = nullptr;
14885 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014886 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014887 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014888 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14889 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014890 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
14891 }
14892 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014893 countingStream->rewind();
14894 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014895 uint64_t cgen_var_1150;
14896 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1150, 1);
14897 countingStream->write((uint64_t*)&cgen_var_1150, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014898 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
14899 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14900 {
14901 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014902 }
14903 }
14904 uint32_t packetSize_vkBindBufferMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14905 countingStream->rewind();
14906 uint32_t opcode_vkBindBufferMemory2KHR = OP_vkBindBufferMemory2KHR;
14907 stream->write(&opcode_vkBindBufferMemory2KHR, sizeof(uint32_t));
14908 stream->write(&packetSize_vkBindBufferMemory2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014909 uint64_t cgen_var_1151;
14910 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1151, 1);
14911 stream->write((uint64_t*)&cgen_var_1151, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014912 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014913 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14914 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014915 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014916 }
14917 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
14918 stream->read(&vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014919 countingStream->clearPool();
14920 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014921 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014922 return vkBindBufferMemory2KHR_VkResult_return;
14923}
14924
14925VkResult VkEncoder::vkBindImageMemory2KHR(
14926 VkDevice device,
14927 uint32_t bindInfoCount,
14928 const VkBindImageMemoryInfo* pBindInfos)
14929{
14930 auto stream = mImpl->stream();
14931 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014932 auto resources = mImpl->resources();
14933 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014934 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014935 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014936 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014937 VkBindImageMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014938 local_device = device;
14939 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014940 local_pBindInfos = nullptr;
14941 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014942 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014943 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014944 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14945 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014946 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
14947 }
14948 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014949 countingStream->rewind();
14950 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014951 uint64_t cgen_var_1152;
14952 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1152, 1);
14953 countingStream->write((uint64_t*)&cgen_var_1152, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014954 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
14955 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14956 {
14957 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014958 }
14959 }
14960 uint32_t packetSize_vkBindImageMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14961 countingStream->rewind();
14962 uint32_t opcode_vkBindImageMemory2KHR = OP_vkBindImageMemory2KHR;
14963 stream->write(&opcode_vkBindImageMemory2KHR, sizeof(uint32_t));
14964 stream->write(&packetSize_vkBindImageMemory2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014965 uint64_t cgen_var_1153;
14966 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1153, 1);
14967 stream->write((uint64_t*)&cgen_var_1153, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014968 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014969 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14970 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014971 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014972 }
14973 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
14974 stream->read(&vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014975 countingStream->clearPool();
14976 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014977 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014978 return vkBindImageMemory2KHR_VkResult_return;
14979}
14980
14981#endif
14982#ifdef VK_KHR_maintenance3
14983void VkEncoder::vkGetDescriptorSetLayoutSupportKHR(
14984 VkDevice device,
14985 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
14986 VkDescriptorSetLayoutSupport* pSupport)
14987{
14988 auto stream = mImpl->stream();
14989 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014990 auto resources = mImpl->resources();
14991 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014992 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014993 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014994 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014995 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014996 local_pCreateInfo = nullptr;
14997 if (pCreateInfo)
14998 {
14999 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
15000 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
15001 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015002 countingStream->rewind();
15003 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015004 uint64_t cgen_var_1154;
15005 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1154, 1);
15006 countingStream->write((uint64_t*)&cgen_var_1154, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015007 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015008 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
15009 }
15010 uint32_t packetSize_vkGetDescriptorSetLayoutSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15011 countingStream->rewind();
15012 uint32_t opcode_vkGetDescriptorSetLayoutSupportKHR = OP_vkGetDescriptorSetLayoutSupportKHR;
15013 stream->write(&opcode_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
15014 stream->write(&packetSize_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015015 uint64_t cgen_var_1155;
15016 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1155, 1);
15017 stream->write((uint64_t*)&cgen_var_1155, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015018 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015019 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
15020 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
15021}
15022
15023#endif
15024#ifdef VK_KHR_draw_indirect_count
15025void VkEncoder::vkCmdDrawIndirectCountKHR(
15026 VkCommandBuffer commandBuffer,
15027 VkBuffer buffer,
15028 VkDeviceSize offset,
15029 VkBuffer countBuffer,
15030 VkDeviceSize countBufferOffset,
15031 uint32_t maxDrawCount,
15032 uint32_t stride)
15033{
15034 auto stream = mImpl->stream();
15035 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015036 auto resources = mImpl->resources();
15037 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015038 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015039 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015040 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015041 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015042 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015043 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015044 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015045 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015046 local_commandBuffer = commandBuffer;
15047 local_buffer = buffer;
15048 local_offset = offset;
15049 local_countBuffer = countBuffer;
15050 local_countBufferOffset = countBufferOffset;
15051 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015052 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015053 countingStream->rewind();
15054 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015055 uint64_t cgen_var_1156;
15056 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1156, 1);
15057 countingStream->write((uint64_t*)&cgen_var_1156, 1 * 8);
15058 uint64_t cgen_var_1157;
15059 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1157, 1);
15060 countingStream->write((uint64_t*)&cgen_var_1157, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015061 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015062 uint64_t cgen_var_1158;
15063 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1158, 1);
15064 countingStream->write((uint64_t*)&cgen_var_1158, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015065 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15066 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15067 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015068 }
15069 uint32_t packetSize_vkCmdDrawIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15070 countingStream->rewind();
15071 uint32_t opcode_vkCmdDrawIndirectCountKHR = OP_vkCmdDrawIndirectCountKHR;
15072 stream->write(&opcode_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
15073 stream->write(&packetSize_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015074 uint64_t cgen_var_1159;
15075 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1159, 1);
15076 stream->write((uint64_t*)&cgen_var_1159, 1 * 8);
15077 uint64_t cgen_var_1160;
15078 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1160, 1);
15079 stream->write((uint64_t*)&cgen_var_1160, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015080 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015081 uint64_t cgen_var_1161;
15082 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1161, 1);
15083 stream->write((uint64_t*)&cgen_var_1161, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015084 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15085 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15086 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015087}
15088
15089void VkEncoder::vkCmdDrawIndexedIndirectCountKHR(
15090 VkCommandBuffer commandBuffer,
15091 VkBuffer buffer,
15092 VkDeviceSize offset,
15093 VkBuffer countBuffer,
15094 VkDeviceSize countBufferOffset,
15095 uint32_t maxDrawCount,
15096 uint32_t stride)
15097{
15098 auto stream = mImpl->stream();
15099 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015100 auto resources = mImpl->resources();
15101 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015102 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015103 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015104 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015105 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015106 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015107 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015108 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015109 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015110 local_commandBuffer = commandBuffer;
15111 local_buffer = buffer;
15112 local_offset = offset;
15113 local_countBuffer = countBuffer;
15114 local_countBufferOffset = countBufferOffset;
15115 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015116 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015117 countingStream->rewind();
15118 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015119 uint64_t cgen_var_1162;
15120 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1162, 1);
15121 countingStream->write((uint64_t*)&cgen_var_1162, 1 * 8);
15122 uint64_t cgen_var_1163;
15123 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1163, 1);
15124 countingStream->write((uint64_t*)&cgen_var_1163, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015125 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015126 uint64_t cgen_var_1164;
15127 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1164, 1);
15128 countingStream->write((uint64_t*)&cgen_var_1164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015129 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15130 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15131 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015132 }
15133 uint32_t packetSize_vkCmdDrawIndexedIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15134 countingStream->rewind();
15135 uint32_t opcode_vkCmdDrawIndexedIndirectCountKHR = OP_vkCmdDrawIndexedIndirectCountKHR;
15136 stream->write(&opcode_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
15137 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015138 uint64_t cgen_var_1165;
15139 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1165, 1);
15140 stream->write((uint64_t*)&cgen_var_1165, 1 * 8);
15141 uint64_t cgen_var_1166;
15142 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1166, 1);
15143 stream->write((uint64_t*)&cgen_var_1166, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015144 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015145 uint64_t cgen_var_1167;
15146 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1167, 1);
15147 stream->write((uint64_t*)&cgen_var_1167, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015148 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15149 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15150 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015151}
15152
15153#endif
15154#ifdef VK_KHR_8bit_storage
15155#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -080015156#ifdef VK_ANDROID_native_buffer
15157VkResult VkEncoder::vkGetSwapchainGrallocUsageANDROID(
15158 VkDevice device,
15159 VkFormat format,
15160 VkImageUsageFlags imageUsage,
15161 int* grallocUsage)
15162{
15163 auto stream = mImpl->stream();
15164 auto countingStream = mImpl->countingStream();
15165 auto resources = mImpl->resources();
15166 auto pool = mImpl->pool();
15167 stream->setHandleMapping(resources->unwrapMapping());
15168 VkDevice local_device;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015169 VkFormat local_format;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015170 VkImageUsageFlags local_imageUsage;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015171 local_device = device;
15172 local_format = format;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015173 local_imageUsage = imageUsage;
15174 countingStream->rewind();
15175 {
15176 uint64_t cgen_var_1168;
15177 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1168, 1);
15178 countingStream->write((uint64_t*)&cgen_var_1168, 1 * 8);
15179 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
15180 countingStream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
15181 countingStream->write((int*)grallocUsage, sizeof(int));
15182 }
15183 uint32_t packetSize_vkGetSwapchainGrallocUsageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15184 countingStream->rewind();
15185 uint32_t opcode_vkGetSwapchainGrallocUsageANDROID = OP_vkGetSwapchainGrallocUsageANDROID;
15186 stream->write(&opcode_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
15187 stream->write(&packetSize_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
15188 uint64_t cgen_var_1169;
15189 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1169, 1);
15190 stream->write((uint64_t*)&cgen_var_1169, 1 * 8);
15191 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
15192 stream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
15193 stream->write((int*)grallocUsage, sizeof(int));
15194 stream->read((int*)grallocUsage, sizeof(int));
15195 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
15196 stream->read(&vkGetSwapchainGrallocUsageANDROID_VkResult_return, sizeof(VkResult));
15197 countingStream->clearPool();
15198 stream->clearPool();
15199 pool->freeAll();
15200 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
15201}
15202
15203VkResult VkEncoder::vkAcquireImageANDROID(
15204 VkDevice device,
15205 VkImage image,
15206 int nativeFenceFd,
15207 VkSemaphore semaphore,
15208 VkFence fence)
15209{
15210 auto stream = mImpl->stream();
15211 auto countingStream = mImpl->countingStream();
15212 auto resources = mImpl->resources();
15213 auto pool = mImpl->pool();
15214 stream->setHandleMapping(resources->unwrapMapping());
15215 VkDevice local_device;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015216 VkImage local_image;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015217 int local_nativeFenceFd;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015218 VkSemaphore local_semaphore;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015219 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015220 local_device = device;
15221 local_image = image;
15222 local_nativeFenceFd = nativeFenceFd;
15223 local_semaphore = semaphore;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015224 local_fence = fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015225 goldfish_unwrap_vkAcquireImageANDROID_nativeFenceFd(nativeFenceFd, &local_nativeFenceFd);
Lingfeng Yang808a6312018-11-13 21:06:15 -080015226 countingStream->rewind();
15227 {
15228 uint64_t cgen_var_1170;
15229 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1170, 1);
15230 countingStream->write((uint64_t*)&cgen_var_1170, 1 * 8);
15231 uint64_t cgen_var_1171;
15232 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1171, 1);
15233 countingStream->write((uint64_t*)&cgen_var_1171, 1 * 8);
15234 countingStream->write((int*)&local_nativeFenceFd, sizeof(int));
15235 uint64_t cgen_var_1172;
15236 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1172, 1);
15237 countingStream->write((uint64_t*)&cgen_var_1172, 1 * 8);
15238 uint64_t cgen_var_1173;
15239 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1173, 1);
15240 countingStream->write((uint64_t*)&cgen_var_1173, 1 * 8);
15241 }
15242 uint32_t packetSize_vkAcquireImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15243 countingStream->rewind();
15244 uint32_t opcode_vkAcquireImageANDROID = OP_vkAcquireImageANDROID;
15245 stream->write(&opcode_vkAcquireImageANDROID, sizeof(uint32_t));
15246 stream->write(&packetSize_vkAcquireImageANDROID, sizeof(uint32_t));
15247 uint64_t cgen_var_1174;
15248 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1174, 1);
15249 stream->write((uint64_t*)&cgen_var_1174, 1 * 8);
15250 uint64_t cgen_var_1175;
15251 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1175, 1);
15252 stream->write((uint64_t*)&cgen_var_1175, 1 * 8);
15253 stream->write((int*)&local_nativeFenceFd, sizeof(int));
15254 uint64_t cgen_var_1176;
15255 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1176, 1);
15256 stream->write((uint64_t*)&cgen_var_1176, 1 * 8);
15257 uint64_t cgen_var_1177;
15258 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1177, 1);
15259 stream->write((uint64_t*)&cgen_var_1177, 1 * 8);
15260 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
15261 stream->read(&vkAcquireImageANDROID_VkResult_return, sizeof(VkResult));
15262 countingStream->clearPool();
15263 stream->clearPool();
15264 pool->freeAll();
15265 return vkAcquireImageANDROID_VkResult_return;
15266}
15267
15268VkResult VkEncoder::vkQueueSignalReleaseImageANDROID(
15269 VkQueue queue,
15270 uint32_t waitSemaphoreCount,
15271 const VkSemaphore* pWaitSemaphores,
15272 VkImage image,
15273 int* pNativeFenceFd)
15274{
15275 auto stream = mImpl->stream();
15276 auto countingStream = mImpl->countingStream();
15277 auto resources = mImpl->resources();
15278 auto pool = mImpl->pool();
15279 stream->setHandleMapping(resources->unwrapMapping());
15280 VkQueue local_queue;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015281 uint32_t local_waitSemaphoreCount;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015282 VkSemaphore* local_pWaitSemaphores;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015283 VkImage local_image;
15284 local_queue = queue;
15285 local_waitSemaphoreCount = waitSemaphoreCount;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015286 local_pWaitSemaphores = nullptr;
15287 if (pWaitSemaphores)
15288 {
15289 local_pWaitSemaphores = (VkSemaphore*)pool->dupArray(pWaitSemaphores, sizeof(const VkSemaphore));
15290 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080015291 local_image = image;
15292 countingStream->rewind();
15293 {
15294 uint64_t cgen_var_1178;
15295 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1178, 1);
15296 countingStream->write((uint64_t*)&cgen_var_1178, 1 * 8);
15297 countingStream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
15298 uint64_t cgen_var_1179;
15299 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, &cgen_var_1179, 1);
15300 countingStream->write((uint64_t*)&cgen_var_1179, 8);
15301 uint64_t cgen_var_1180;
15302 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1180, 1);
15303 countingStream->write((uint64_t*)&cgen_var_1180, 1 * 8);
15304 countingStream->write((int*)pNativeFenceFd, sizeof(int));
15305 }
15306 uint32_t packetSize_vkQueueSignalReleaseImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15307 countingStream->rewind();
15308 uint32_t opcode_vkQueueSignalReleaseImageANDROID = OP_vkQueueSignalReleaseImageANDROID;
15309 stream->write(&opcode_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
15310 stream->write(&packetSize_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
15311 uint64_t cgen_var_1181;
15312 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1181, 1);
15313 stream->write((uint64_t*)&cgen_var_1181, 1 * 8);
15314 stream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
15315 uint64_t cgen_var_1182;
15316 stream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, &cgen_var_1182, 1);
15317 stream->write((uint64_t*)&cgen_var_1182, 8);
15318 uint64_t cgen_var_1183;
15319 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1183, 1);
15320 stream->write((uint64_t*)&cgen_var_1183, 1 * 8);
15321 stream->write((int*)pNativeFenceFd, sizeof(int));
15322 stream->read((int*)pNativeFenceFd, sizeof(int));
15323 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
15324 stream->read(&vkQueueSignalReleaseImageANDROID_VkResult_return, sizeof(VkResult));
15325 countingStream->clearPool();
15326 stream->clearPool();
15327 pool->freeAll();
15328 return vkQueueSignalReleaseImageANDROID_VkResult_return;
15329}
15330
15331#endif
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015332#ifdef VK_EXT_debug_report
15333VkResult VkEncoder::vkCreateDebugReportCallbackEXT(
15334 VkInstance instance,
15335 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
15336 const VkAllocationCallbacks* pAllocator,
15337 VkDebugReportCallbackEXT* pCallback)
15338{
15339 auto stream = mImpl->stream();
15340 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015341 auto resources = mImpl->resources();
15342 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015343 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015344 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015345 VkDebugReportCallbackCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015346 VkAllocationCallbacks* local_pAllocator;
15347 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015348 local_pCreateInfo = nullptr;
15349 if (pCreateInfo)
15350 {
15351 local_pCreateInfo = (VkDebugReportCallbackCreateInfoEXT*)pool->alloc(sizeof(const VkDebugReportCallbackCreateInfoEXT));
15352 deepcopy_VkDebugReportCallbackCreateInfoEXT(pool, pCreateInfo, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
15353 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015354 local_pAllocator = nullptr;
15355 if (pAllocator)
15356 {
15357 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15358 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15359 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015360 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015361 countingStream->rewind();
15362 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015363 uint64_t cgen_var_1184;
15364 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1184, 1);
15365 countingStream->write((uint64_t*)&cgen_var_1184, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015366 marshal_VkDebugReportCallbackCreateInfoEXT(countingStream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015367 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015368 uint64_t cgen_var_1185 = (uint64_t)(uintptr_t)local_pAllocator;
15369 countingStream->putBe64(cgen_var_1185);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015370 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015371 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015372 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015373 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080015374 uint64_t cgen_var_1186;
15375 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1186, 1);
15376 countingStream->write((uint64_t*)&cgen_var_1186, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015377 }
15378 uint32_t packetSize_vkCreateDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15379 countingStream->rewind();
15380 uint32_t opcode_vkCreateDebugReportCallbackEXT = OP_vkCreateDebugReportCallbackEXT;
15381 stream->write(&opcode_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
15382 stream->write(&packetSize_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015383 uint64_t cgen_var_1187;
15384 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1187, 1);
15385 stream->write((uint64_t*)&cgen_var_1187, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015386 marshal_VkDebugReportCallbackCreateInfoEXT(stream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015387 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015388 uint64_t cgen_var_1188 = (uint64_t)(uintptr_t)local_pAllocator;
15389 stream->putBe64(cgen_var_1188);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015390 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015391 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015392 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015393 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080015394 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015395 uint64_t cgen_var_1189;
15396 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1189, 1);
15397 stream->write((uint64_t*)&cgen_var_1189, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015398 stream->setHandleMapping(resources->unwrapMapping());
15399 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080015400 uint64_t cgen_var_1190;
15401 stream->read((uint64_t*)&cgen_var_1190, 8);
15402 stream->handleMapping()->mapHandles_u64_VkDebugReportCallbackEXT(&cgen_var_1190, (VkDebugReportCallbackEXT*)pCallback, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015403 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015404 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
15405 stream->read(&vkCreateDebugReportCallbackEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015406 countingStream->clearPool();
15407 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015408 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015409 return vkCreateDebugReportCallbackEXT_VkResult_return;
15410}
15411
15412void VkEncoder::vkDestroyDebugReportCallbackEXT(
15413 VkInstance instance,
15414 VkDebugReportCallbackEXT callback,
15415 const VkAllocationCallbacks* pAllocator)
15416{
15417 auto stream = mImpl->stream();
15418 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015419 auto resources = mImpl->resources();
15420 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015421 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015422 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015423 VkDebugReportCallbackEXT local_callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015424 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015425 local_instance = instance;
15426 local_callback = callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015427 local_pAllocator = nullptr;
15428 if (pAllocator)
15429 {
15430 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15431 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15432 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015433 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015434 countingStream->rewind();
15435 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015436 uint64_t cgen_var_1191;
15437 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1191, 1);
15438 countingStream->write((uint64_t*)&cgen_var_1191, 1 * 8);
15439 uint64_t cgen_var_1192;
15440 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1192, 1);
15441 countingStream->write((uint64_t*)&cgen_var_1192, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015442 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015443 uint64_t cgen_var_1193 = (uint64_t)(uintptr_t)local_pAllocator;
15444 countingStream->putBe64(cgen_var_1193);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015445 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015446 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015447 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015448 }
15449 }
15450 uint32_t packetSize_vkDestroyDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15451 countingStream->rewind();
15452 uint32_t opcode_vkDestroyDebugReportCallbackEXT = OP_vkDestroyDebugReportCallbackEXT;
15453 stream->write(&opcode_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
15454 stream->write(&packetSize_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015455 uint64_t cgen_var_1194;
15456 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1194, 1);
15457 stream->write((uint64_t*)&cgen_var_1194, 1 * 8);
15458 uint64_t cgen_var_1195;
15459 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1195, 1);
15460 stream->write((uint64_t*)&cgen_var_1195, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015461 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015462 uint64_t cgen_var_1196 = (uint64_t)(uintptr_t)local_pAllocator;
15463 stream->putBe64(cgen_var_1196);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015464 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015465 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015466 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015467 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015468 resources->destroyMapping()->mapHandles_VkDebugReportCallbackEXT((VkDebugReportCallbackEXT*)&callback);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015469}
15470
15471void VkEncoder::vkDebugReportMessageEXT(
15472 VkInstance instance,
15473 VkDebugReportFlagsEXT flags,
15474 VkDebugReportObjectTypeEXT objectType,
15475 uint64_t object,
15476 size_t location,
15477 int32_t messageCode,
15478 const char* pLayerPrefix,
15479 const char* pMessage)
15480{
15481 auto stream = mImpl->stream();
15482 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015483 auto resources = mImpl->resources();
15484 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015485 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015486 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015487 VkDebugReportFlagsEXT local_flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015488 VkDebugReportObjectTypeEXT local_objectType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015489 uint64_t local_object;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015490 size_t local_location;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015491 int32_t local_messageCode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015492 char* local_pLayerPrefix;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015493 char* local_pMessage;
15494 local_instance = instance;
15495 local_flags = flags;
15496 local_objectType = objectType;
15497 local_object = object;
15498 local_location = location;
15499 local_messageCode = messageCode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015500 local_pLayerPrefix = nullptr;
15501 if (pLayerPrefix)
15502 {
15503 local_pLayerPrefix = pool->strDup(pLayerPrefix);
15504 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015505 local_pMessage = nullptr;
15506 if (pMessage)
15507 {
15508 local_pMessage = pool->strDup(pMessage);
15509 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015510 countingStream->rewind();
15511 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015512 uint64_t cgen_var_1197;
15513 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1197, 1);
15514 countingStream->write((uint64_t*)&cgen_var_1197, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015515 countingStream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
15516 countingStream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
15517 countingStream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015518 uint64_t cgen_var_1198 = (uint64_t)local_location;
15519 countingStream->putBe64(cgen_var_1198);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015520 countingStream->write((int32_t*)&local_messageCode, sizeof(int32_t));
15521 countingStream->putString(local_pLayerPrefix);
15522 countingStream->putString(local_pMessage);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015523 }
15524 uint32_t packetSize_vkDebugReportMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15525 countingStream->rewind();
15526 uint32_t opcode_vkDebugReportMessageEXT = OP_vkDebugReportMessageEXT;
15527 stream->write(&opcode_vkDebugReportMessageEXT, sizeof(uint32_t));
15528 stream->write(&packetSize_vkDebugReportMessageEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015529 uint64_t cgen_var_1199;
15530 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1199, 1);
15531 stream->write((uint64_t*)&cgen_var_1199, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015532 stream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
15533 stream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
15534 stream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015535 uint64_t cgen_var_1200 = (uint64_t)local_location;
15536 stream->putBe64(cgen_var_1200);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015537 stream->write((int32_t*)&local_messageCode, sizeof(int32_t));
15538 stream->putString(local_pLayerPrefix);
15539 stream->putString(local_pMessage);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015540}
15541
15542#endif
15543#ifdef VK_NV_glsl_shader
15544#endif
15545#ifdef VK_EXT_depth_range_unrestricted
15546#endif
15547#ifdef VK_IMG_filter_cubic
15548#endif
15549#ifdef VK_AMD_rasterization_order
15550#endif
15551#ifdef VK_AMD_shader_trinary_minmax
15552#endif
15553#ifdef VK_AMD_shader_explicit_vertex_parameter
15554#endif
15555#ifdef VK_EXT_debug_marker
15556VkResult VkEncoder::vkDebugMarkerSetObjectTagEXT(
15557 VkDevice device,
15558 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
15559{
15560 auto stream = mImpl->stream();
15561 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015562 auto resources = mImpl->resources();
15563 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015564 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015565 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015566 VkDebugMarkerObjectTagInfoEXT* local_pTagInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015567 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015568 local_pTagInfo = nullptr;
15569 if (pTagInfo)
15570 {
15571 local_pTagInfo = (VkDebugMarkerObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectTagInfoEXT));
15572 deepcopy_VkDebugMarkerObjectTagInfoEXT(pool, pTagInfo, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
15573 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015574 countingStream->rewind();
15575 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015576 uint64_t cgen_var_1201;
15577 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1201, 1);
15578 countingStream->write((uint64_t*)&cgen_var_1201, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015579 marshal_VkDebugMarkerObjectTagInfoEXT(countingStream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015580 }
15581 uint32_t packetSize_vkDebugMarkerSetObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15582 countingStream->rewind();
15583 uint32_t opcode_vkDebugMarkerSetObjectTagEXT = OP_vkDebugMarkerSetObjectTagEXT;
15584 stream->write(&opcode_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
15585 stream->write(&packetSize_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015586 uint64_t cgen_var_1202;
15587 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1202, 1);
15588 stream->write((uint64_t*)&cgen_var_1202, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015589 marshal_VkDebugMarkerObjectTagInfoEXT(stream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015590 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
15591 stream->read(&vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015592 countingStream->clearPool();
15593 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015594 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015595 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
15596}
15597
15598VkResult VkEncoder::vkDebugMarkerSetObjectNameEXT(
15599 VkDevice device,
15600 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
15601{
15602 auto stream = mImpl->stream();
15603 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015604 auto resources = mImpl->resources();
15605 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015606 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015607 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015608 VkDebugMarkerObjectNameInfoEXT* local_pNameInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015609 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015610 local_pNameInfo = nullptr;
15611 if (pNameInfo)
15612 {
15613 local_pNameInfo = (VkDebugMarkerObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectNameInfoEXT));
15614 deepcopy_VkDebugMarkerObjectNameInfoEXT(pool, pNameInfo, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
15615 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015616 countingStream->rewind();
15617 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015618 uint64_t cgen_var_1203;
15619 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1203, 1);
15620 countingStream->write((uint64_t*)&cgen_var_1203, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015621 marshal_VkDebugMarkerObjectNameInfoEXT(countingStream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015622 }
15623 uint32_t packetSize_vkDebugMarkerSetObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15624 countingStream->rewind();
15625 uint32_t opcode_vkDebugMarkerSetObjectNameEXT = OP_vkDebugMarkerSetObjectNameEXT;
15626 stream->write(&opcode_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
15627 stream->write(&packetSize_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015628 uint64_t cgen_var_1204;
15629 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1204, 1);
15630 stream->write((uint64_t*)&cgen_var_1204, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015631 marshal_VkDebugMarkerObjectNameInfoEXT(stream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015632 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
15633 stream->read(&vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015634 countingStream->clearPool();
15635 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015636 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015637 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
15638}
15639
15640void VkEncoder::vkCmdDebugMarkerBeginEXT(
15641 VkCommandBuffer commandBuffer,
15642 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
15643{
15644 auto stream = mImpl->stream();
15645 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015646 auto resources = mImpl->resources();
15647 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015648 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015649 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015650 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015651 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015652 local_pMarkerInfo = nullptr;
15653 if (pMarkerInfo)
15654 {
15655 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
15656 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
15657 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015658 countingStream->rewind();
15659 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015660 uint64_t cgen_var_1205;
15661 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1205, 1);
15662 countingStream->write((uint64_t*)&cgen_var_1205, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015663 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015664 }
15665 uint32_t packetSize_vkCmdDebugMarkerBeginEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15666 countingStream->rewind();
15667 uint32_t opcode_vkCmdDebugMarkerBeginEXT = OP_vkCmdDebugMarkerBeginEXT;
15668 stream->write(&opcode_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
15669 stream->write(&packetSize_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015670 uint64_t cgen_var_1206;
15671 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1206, 1);
15672 stream->write((uint64_t*)&cgen_var_1206, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015673 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015674}
15675
15676void VkEncoder::vkCmdDebugMarkerEndEXT(
15677 VkCommandBuffer commandBuffer)
15678{
15679 auto stream = mImpl->stream();
15680 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015681 auto resources = mImpl->resources();
15682 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015683 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015684 VkCommandBuffer local_commandBuffer;
15685 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015686 countingStream->rewind();
15687 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015688 uint64_t cgen_var_1207;
15689 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1207, 1);
15690 countingStream->write((uint64_t*)&cgen_var_1207, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015691 }
15692 uint32_t packetSize_vkCmdDebugMarkerEndEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15693 countingStream->rewind();
15694 uint32_t opcode_vkCmdDebugMarkerEndEXT = OP_vkCmdDebugMarkerEndEXT;
15695 stream->write(&opcode_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
15696 stream->write(&packetSize_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015697 uint64_t cgen_var_1208;
15698 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1208, 1);
15699 stream->write((uint64_t*)&cgen_var_1208, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015700}
15701
15702void VkEncoder::vkCmdDebugMarkerInsertEXT(
15703 VkCommandBuffer commandBuffer,
15704 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
15705{
15706 auto stream = mImpl->stream();
15707 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015708 auto resources = mImpl->resources();
15709 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015710 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015711 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015712 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015713 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015714 local_pMarkerInfo = nullptr;
15715 if (pMarkerInfo)
15716 {
15717 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
15718 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
15719 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015720 countingStream->rewind();
15721 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015722 uint64_t cgen_var_1209;
15723 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1209, 1);
15724 countingStream->write((uint64_t*)&cgen_var_1209, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015725 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015726 }
15727 uint32_t packetSize_vkCmdDebugMarkerInsertEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15728 countingStream->rewind();
15729 uint32_t opcode_vkCmdDebugMarkerInsertEXT = OP_vkCmdDebugMarkerInsertEXT;
15730 stream->write(&opcode_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
15731 stream->write(&packetSize_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015732 uint64_t cgen_var_1210;
15733 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1210, 1);
15734 stream->write((uint64_t*)&cgen_var_1210, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015735 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015736}
15737
15738#endif
15739#ifdef VK_AMD_gcn_shader
15740#endif
15741#ifdef VK_NV_dedicated_allocation
15742#endif
15743#ifdef VK_AMD_draw_indirect_count
15744void VkEncoder::vkCmdDrawIndirectCountAMD(
15745 VkCommandBuffer commandBuffer,
15746 VkBuffer buffer,
15747 VkDeviceSize offset,
15748 VkBuffer countBuffer,
15749 VkDeviceSize countBufferOffset,
15750 uint32_t maxDrawCount,
15751 uint32_t stride)
15752{
15753 auto stream = mImpl->stream();
15754 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015755 auto resources = mImpl->resources();
15756 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015757 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015758 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015759 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015760 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015761 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015762 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015763 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015764 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015765 local_commandBuffer = commandBuffer;
15766 local_buffer = buffer;
15767 local_offset = offset;
15768 local_countBuffer = countBuffer;
15769 local_countBufferOffset = countBufferOffset;
15770 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015771 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015772 countingStream->rewind();
15773 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015774 uint64_t cgen_var_1211;
15775 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1211, 1);
15776 countingStream->write((uint64_t*)&cgen_var_1211, 1 * 8);
15777 uint64_t cgen_var_1212;
15778 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1212, 1);
15779 countingStream->write((uint64_t*)&cgen_var_1212, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015780 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015781 uint64_t cgen_var_1213;
15782 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1213, 1);
15783 countingStream->write((uint64_t*)&cgen_var_1213, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015784 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15785 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15786 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015787 }
15788 uint32_t packetSize_vkCmdDrawIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15789 countingStream->rewind();
15790 uint32_t opcode_vkCmdDrawIndirectCountAMD = OP_vkCmdDrawIndirectCountAMD;
15791 stream->write(&opcode_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
15792 stream->write(&packetSize_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015793 uint64_t cgen_var_1214;
15794 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1214, 1);
15795 stream->write((uint64_t*)&cgen_var_1214, 1 * 8);
15796 uint64_t cgen_var_1215;
15797 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1215, 1);
15798 stream->write((uint64_t*)&cgen_var_1215, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015799 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015800 uint64_t cgen_var_1216;
15801 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1216, 1);
15802 stream->write((uint64_t*)&cgen_var_1216, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015803 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15804 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15805 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015806}
15807
15808void VkEncoder::vkCmdDrawIndexedIndirectCountAMD(
15809 VkCommandBuffer commandBuffer,
15810 VkBuffer buffer,
15811 VkDeviceSize offset,
15812 VkBuffer countBuffer,
15813 VkDeviceSize countBufferOffset,
15814 uint32_t maxDrawCount,
15815 uint32_t stride)
15816{
15817 auto stream = mImpl->stream();
15818 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015819 auto resources = mImpl->resources();
15820 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015821 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015822 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015823 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015824 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015825 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015826 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015827 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015828 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015829 local_commandBuffer = commandBuffer;
15830 local_buffer = buffer;
15831 local_offset = offset;
15832 local_countBuffer = countBuffer;
15833 local_countBufferOffset = countBufferOffset;
15834 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015835 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015836 countingStream->rewind();
15837 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015838 uint64_t cgen_var_1217;
15839 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1217, 1);
15840 countingStream->write((uint64_t*)&cgen_var_1217, 1 * 8);
15841 uint64_t cgen_var_1218;
15842 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1218, 1);
15843 countingStream->write((uint64_t*)&cgen_var_1218, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015844 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015845 uint64_t cgen_var_1219;
15846 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1219, 1);
15847 countingStream->write((uint64_t*)&cgen_var_1219, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015848 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15849 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15850 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015851 }
15852 uint32_t packetSize_vkCmdDrawIndexedIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15853 countingStream->rewind();
15854 uint32_t opcode_vkCmdDrawIndexedIndirectCountAMD = OP_vkCmdDrawIndexedIndirectCountAMD;
15855 stream->write(&opcode_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
15856 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015857 uint64_t cgen_var_1220;
15858 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1220, 1);
15859 stream->write((uint64_t*)&cgen_var_1220, 1 * 8);
15860 uint64_t cgen_var_1221;
15861 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1221, 1);
15862 stream->write((uint64_t*)&cgen_var_1221, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015863 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015864 uint64_t cgen_var_1222;
15865 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1222, 1);
15866 stream->write((uint64_t*)&cgen_var_1222, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015867 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15868 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15869 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015870}
15871
15872#endif
15873#ifdef VK_AMD_negative_viewport_height
15874#endif
15875#ifdef VK_AMD_gpu_shader_half_float
15876#endif
15877#ifdef VK_AMD_shader_ballot
15878#endif
15879#ifdef VK_AMD_texture_gather_bias_lod
15880#endif
15881#ifdef VK_AMD_shader_info
15882VkResult VkEncoder::vkGetShaderInfoAMD(
15883 VkDevice device,
15884 VkPipeline pipeline,
15885 VkShaderStageFlagBits shaderStage,
15886 VkShaderInfoTypeAMD infoType,
15887 size_t* pInfoSize,
15888 void* pInfo)
15889{
15890 auto stream = mImpl->stream();
15891 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015892 auto resources = mImpl->resources();
15893 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015894 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015895 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015896 VkPipeline local_pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015897 VkShaderStageFlagBits local_shaderStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015898 VkShaderInfoTypeAMD local_infoType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015899 local_device = device;
15900 local_pipeline = pipeline;
15901 local_shaderStage = shaderStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015902 local_infoType = infoType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015903 countingStream->rewind();
15904 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015905 uint64_t cgen_var_1223;
15906 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1223, 1);
15907 countingStream->write((uint64_t*)&cgen_var_1223, 1 * 8);
15908 uint64_t cgen_var_1224;
15909 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1224, 1);
15910 countingStream->write((uint64_t*)&cgen_var_1224, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015911 countingStream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
15912 countingStream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015913 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015914 uint64_t cgen_var_1225 = (uint64_t)(uintptr_t)pInfoSize;
15915 countingStream->putBe64(cgen_var_1225);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015916 if (pInfoSize)
15917 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015918 uint64_t cgen_var_1226 = (uint64_t)(*pInfoSize);
15919 countingStream->putBe64(cgen_var_1226);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015920 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015921 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015922 uint64_t cgen_var_1227 = (uint64_t)(uintptr_t)pInfo;
15923 countingStream->putBe64(cgen_var_1227);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015924 if (pInfo)
15925 {
15926 countingStream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
15927 }
15928 }
15929 uint32_t packetSize_vkGetShaderInfoAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15930 countingStream->rewind();
15931 uint32_t opcode_vkGetShaderInfoAMD = OP_vkGetShaderInfoAMD;
15932 stream->write(&opcode_vkGetShaderInfoAMD, sizeof(uint32_t));
15933 stream->write(&packetSize_vkGetShaderInfoAMD, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015934 uint64_t cgen_var_1228;
15935 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1228, 1);
15936 stream->write((uint64_t*)&cgen_var_1228, 1 * 8);
15937 uint64_t cgen_var_1229;
15938 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1229, 1);
15939 stream->write((uint64_t*)&cgen_var_1229, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015940 stream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
15941 stream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015942 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015943 uint64_t cgen_var_1230 = (uint64_t)(uintptr_t)pInfoSize;
15944 stream->putBe64(cgen_var_1230);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015945 if (pInfoSize)
15946 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015947 uint64_t cgen_var_1231 = (uint64_t)(*pInfoSize);
15948 stream->putBe64(cgen_var_1231);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015949 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015950 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015951 uint64_t cgen_var_1232 = (uint64_t)(uintptr_t)pInfo;
15952 stream->putBe64(cgen_var_1232);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015953 if (pInfo)
15954 {
15955 stream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
15956 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015957 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015958 size_t* check_pInfoSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015959 check_pInfoSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015960 if (pInfoSize)
15961 {
15962 if (!(check_pInfoSize))
15963 {
15964 fprintf(stderr, "fatal: pInfoSize inconsistent between guest and host\n");
15965 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015966 (*pInfoSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015967 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015968 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015969 void* check_pInfo;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015970 check_pInfo = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015971 if (pInfo)
15972 {
15973 if (!(check_pInfo))
15974 {
15975 fprintf(stderr, "fatal: pInfo inconsistent between guest and host\n");
15976 }
15977 stream->read((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
15978 }
15979 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
15980 stream->read(&vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015981 countingStream->clearPool();
15982 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015983 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015984 return vkGetShaderInfoAMD_VkResult_return;
15985}
15986
15987#endif
15988#ifdef VK_AMD_shader_image_load_store_lod
15989#endif
15990#ifdef VK_IMG_format_pvrtc
15991#endif
15992#ifdef VK_NV_external_memory_capabilities
15993VkResult VkEncoder::vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
15994 VkPhysicalDevice physicalDevice,
15995 VkFormat format,
15996 VkImageType type,
15997 VkImageTiling tiling,
15998 VkImageUsageFlags usage,
15999 VkImageCreateFlags flags,
16000 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
16001 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
16002{
16003 auto stream = mImpl->stream();
16004 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016005 auto resources = mImpl->resources();
16006 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016007 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016008 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016009 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016010 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016011 VkImageTiling local_tiling;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016012 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016013 VkImageCreateFlags local_flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016014 VkExternalMemoryHandleTypeFlagsNV local_externalHandleType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016015 local_physicalDevice = physicalDevice;
16016 local_format = format;
16017 local_type = type;
16018 local_tiling = tiling;
16019 local_usage = usage;
16020 local_flags = flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016021 local_externalHandleType = externalHandleType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016022 countingStream->rewind();
16023 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016024 uint64_t cgen_var_1236;
16025 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1236, 1);
16026 countingStream->write((uint64_t*)&cgen_var_1236, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016027 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
16028 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
16029 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
16030 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
16031 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
16032 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016033 marshal_VkExternalImageFormatPropertiesNV(countingStream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
16034 }
16035 uint32_t packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16036 countingStream->rewind();
16037 uint32_t opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
16038 stream->write(&opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
16039 stream->write(&packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016040 uint64_t cgen_var_1237;
16041 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1237, 1);
16042 stream->write((uint64_t*)&cgen_var_1237, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016043 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
16044 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
16045 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
16046 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
16047 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
16048 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016049 marshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
16050 unmarshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
16051 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
16052 stream->read(&vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016053 countingStream->clearPool();
16054 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016055 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016056 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
16057}
16058
16059#endif
16060#ifdef VK_NV_external_memory
16061#endif
16062#ifdef VK_NV_external_memory_win32
16063VkResult VkEncoder::vkGetMemoryWin32HandleNV(
16064 VkDevice device,
16065 VkDeviceMemory memory,
16066 VkExternalMemoryHandleTypeFlagsNV handleType,
16067 HANDLE* pHandle)
16068{
16069 auto stream = mImpl->stream();
16070 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016071 auto resources = mImpl->resources();
16072 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016073 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016074 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016075 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016076 VkExternalMemoryHandleTypeFlagsNV local_handleType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016077 local_device = device;
16078 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016079 local_handleType = handleType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016080 countingStream->rewind();
16081 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016082 uint64_t cgen_var_1238;
16083 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1238, 1);
16084 countingStream->write((uint64_t*)&cgen_var_1238, 1 * 8);
16085 uint64_t cgen_var_1239;
16086 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1239, 1);
16087 countingStream->write((uint64_t*)&cgen_var_1239, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016088 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016089 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
16090 }
16091 uint32_t packetSize_vkGetMemoryWin32HandleNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16092 countingStream->rewind();
16093 uint32_t opcode_vkGetMemoryWin32HandleNV = OP_vkGetMemoryWin32HandleNV;
16094 stream->write(&opcode_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
16095 stream->write(&packetSize_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016096 uint64_t cgen_var_1240;
16097 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1240, 1);
16098 stream->write((uint64_t*)&cgen_var_1240, 1 * 8);
16099 uint64_t cgen_var_1241;
16100 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1241, 1);
16101 stream->write((uint64_t*)&cgen_var_1241, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016102 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016103 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
16104 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
16105 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
16106 stream->read(&vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016107 countingStream->clearPool();
16108 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016109 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016110 return vkGetMemoryWin32HandleNV_VkResult_return;
16111}
16112
16113#endif
16114#ifdef VK_NV_win32_keyed_mutex
16115#endif
16116#ifdef VK_EXT_validation_flags
16117#endif
16118#ifdef VK_NN_vi_surface
16119VkResult VkEncoder::vkCreateViSurfaceNN(
16120 VkInstance instance,
16121 const VkViSurfaceCreateInfoNN* pCreateInfo,
16122 const VkAllocationCallbacks* pAllocator,
16123 VkSurfaceKHR* pSurface)
16124{
16125 auto stream = mImpl->stream();
16126 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016127 auto resources = mImpl->resources();
16128 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016129 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016130 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016131 VkViSurfaceCreateInfoNN* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016132 VkAllocationCallbacks* local_pAllocator;
16133 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016134 local_pCreateInfo = nullptr;
16135 if (pCreateInfo)
16136 {
16137 local_pCreateInfo = (VkViSurfaceCreateInfoNN*)pool->alloc(sizeof(const VkViSurfaceCreateInfoNN));
16138 deepcopy_VkViSurfaceCreateInfoNN(pool, pCreateInfo, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
16139 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016140 local_pAllocator = nullptr;
16141 if (pAllocator)
16142 {
16143 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16144 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16145 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016146 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016147 countingStream->rewind();
16148 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016149 uint64_t cgen_var_1242;
16150 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1242, 1);
16151 countingStream->write((uint64_t*)&cgen_var_1242, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016152 marshal_VkViSurfaceCreateInfoNN(countingStream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016153 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016154 uint64_t cgen_var_1243 = (uint64_t)(uintptr_t)local_pAllocator;
16155 countingStream->putBe64(cgen_var_1243);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016156 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016157 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016158 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016159 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080016160 uint64_t cgen_var_1244;
16161 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1244, 1);
16162 countingStream->write((uint64_t*)&cgen_var_1244, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016163 }
16164 uint32_t packetSize_vkCreateViSurfaceNN = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16165 countingStream->rewind();
16166 uint32_t opcode_vkCreateViSurfaceNN = OP_vkCreateViSurfaceNN;
16167 stream->write(&opcode_vkCreateViSurfaceNN, sizeof(uint32_t));
16168 stream->write(&packetSize_vkCreateViSurfaceNN, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016169 uint64_t cgen_var_1245;
16170 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1245, 1);
16171 stream->write((uint64_t*)&cgen_var_1245, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016172 marshal_VkViSurfaceCreateInfoNN(stream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016173 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016174 uint64_t cgen_var_1246 = (uint64_t)(uintptr_t)local_pAllocator;
16175 stream->putBe64(cgen_var_1246);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016176 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016177 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016178 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016179 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016180 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016181 uint64_t cgen_var_1247;
16182 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1247, 1);
16183 stream->write((uint64_t*)&cgen_var_1247, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016184 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080016185 uint64_t cgen_var_1248;
16186 stream->read((uint64_t*)&cgen_var_1248, 8);
16187 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1248, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016188 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
16189 stream->read(&vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016190 countingStream->clearPool();
16191 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016192 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016193 return vkCreateViSurfaceNN_VkResult_return;
16194}
16195
16196#endif
16197#ifdef VK_EXT_shader_subgroup_ballot
16198#endif
16199#ifdef VK_EXT_shader_subgroup_vote
16200#endif
16201#ifdef VK_EXT_conditional_rendering
16202void VkEncoder::vkCmdBeginConditionalRenderingEXT(
16203 VkCommandBuffer commandBuffer,
16204 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
16205{
16206 auto stream = mImpl->stream();
16207 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016208 auto resources = mImpl->resources();
16209 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016210 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016211 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016212 VkConditionalRenderingBeginInfoEXT* local_pConditionalRenderingBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016213 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016214 local_pConditionalRenderingBegin = nullptr;
16215 if (pConditionalRenderingBegin)
16216 {
16217 local_pConditionalRenderingBegin = (VkConditionalRenderingBeginInfoEXT*)pool->alloc(sizeof(const VkConditionalRenderingBeginInfoEXT));
16218 deepcopy_VkConditionalRenderingBeginInfoEXT(pool, pConditionalRenderingBegin, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
16219 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016220 countingStream->rewind();
16221 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016222 uint64_t cgen_var_1249;
16223 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1249, 1);
16224 countingStream->write((uint64_t*)&cgen_var_1249, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016225 marshal_VkConditionalRenderingBeginInfoEXT(countingStream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016226 }
16227 uint32_t packetSize_vkCmdBeginConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16228 countingStream->rewind();
16229 uint32_t opcode_vkCmdBeginConditionalRenderingEXT = OP_vkCmdBeginConditionalRenderingEXT;
16230 stream->write(&opcode_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
16231 stream->write(&packetSize_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016232 uint64_t cgen_var_1250;
16233 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1250, 1);
16234 stream->write((uint64_t*)&cgen_var_1250, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016235 marshal_VkConditionalRenderingBeginInfoEXT(stream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016236}
16237
16238void VkEncoder::vkCmdEndConditionalRenderingEXT(
16239 VkCommandBuffer commandBuffer)
16240{
16241 auto stream = mImpl->stream();
16242 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016243 auto resources = mImpl->resources();
16244 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016245 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016246 VkCommandBuffer local_commandBuffer;
16247 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016248 countingStream->rewind();
16249 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016250 uint64_t cgen_var_1251;
16251 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1251, 1);
16252 countingStream->write((uint64_t*)&cgen_var_1251, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016253 }
16254 uint32_t packetSize_vkCmdEndConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16255 countingStream->rewind();
16256 uint32_t opcode_vkCmdEndConditionalRenderingEXT = OP_vkCmdEndConditionalRenderingEXT;
16257 stream->write(&opcode_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
16258 stream->write(&packetSize_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016259 uint64_t cgen_var_1252;
16260 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1252, 1);
16261 stream->write((uint64_t*)&cgen_var_1252, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016262}
16263
16264#endif
16265#ifdef VK_NVX_device_generated_commands
16266void VkEncoder::vkCmdProcessCommandsNVX(
16267 VkCommandBuffer commandBuffer,
16268 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
16269{
16270 auto stream = mImpl->stream();
16271 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016272 auto resources = mImpl->resources();
16273 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016274 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016275 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016276 VkCmdProcessCommandsInfoNVX* local_pProcessCommandsInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016277 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016278 local_pProcessCommandsInfo = nullptr;
16279 if (pProcessCommandsInfo)
16280 {
16281 local_pProcessCommandsInfo = (VkCmdProcessCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdProcessCommandsInfoNVX));
16282 deepcopy_VkCmdProcessCommandsInfoNVX(pool, pProcessCommandsInfo, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
16283 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016284 countingStream->rewind();
16285 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016286 uint64_t cgen_var_1253;
16287 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1253, 1);
16288 countingStream->write((uint64_t*)&cgen_var_1253, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016289 marshal_VkCmdProcessCommandsInfoNVX(countingStream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016290 }
16291 uint32_t packetSize_vkCmdProcessCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16292 countingStream->rewind();
16293 uint32_t opcode_vkCmdProcessCommandsNVX = OP_vkCmdProcessCommandsNVX;
16294 stream->write(&opcode_vkCmdProcessCommandsNVX, sizeof(uint32_t));
16295 stream->write(&packetSize_vkCmdProcessCommandsNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016296 uint64_t cgen_var_1254;
16297 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1254, 1);
16298 stream->write((uint64_t*)&cgen_var_1254, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016299 marshal_VkCmdProcessCommandsInfoNVX(stream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016300}
16301
16302void VkEncoder::vkCmdReserveSpaceForCommandsNVX(
16303 VkCommandBuffer commandBuffer,
16304 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
16305{
16306 auto stream = mImpl->stream();
16307 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016308 auto resources = mImpl->resources();
16309 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016310 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016311 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016312 VkCmdReserveSpaceForCommandsInfoNVX* local_pReserveSpaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016313 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016314 local_pReserveSpaceInfo = nullptr;
16315 if (pReserveSpaceInfo)
16316 {
16317 local_pReserveSpaceInfo = (VkCmdReserveSpaceForCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdReserveSpaceForCommandsInfoNVX));
16318 deepcopy_VkCmdReserveSpaceForCommandsInfoNVX(pool, pReserveSpaceInfo, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
16319 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016320 countingStream->rewind();
16321 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016322 uint64_t cgen_var_1255;
16323 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1255, 1);
16324 countingStream->write((uint64_t*)&cgen_var_1255, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016325 marshal_VkCmdReserveSpaceForCommandsInfoNVX(countingStream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016326 }
16327 uint32_t packetSize_vkCmdReserveSpaceForCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16328 countingStream->rewind();
16329 uint32_t opcode_vkCmdReserveSpaceForCommandsNVX = OP_vkCmdReserveSpaceForCommandsNVX;
16330 stream->write(&opcode_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
16331 stream->write(&packetSize_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016332 uint64_t cgen_var_1256;
16333 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1256, 1);
16334 stream->write((uint64_t*)&cgen_var_1256, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016335 marshal_VkCmdReserveSpaceForCommandsInfoNVX(stream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016336}
16337
16338VkResult VkEncoder::vkCreateIndirectCommandsLayoutNVX(
16339 VkDevice device,
16340 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
16341 const VkAllocationCallbacks* pAllocator,
16342 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
16343{
16344 auto stream = mImpl->stream();
16345 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016346 auto resources = mImpl->resources();
16347 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016348 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016349 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016350 VkIndirectCommandsLayoutCreateInfoNVX* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016351 VkAllocationCallbacks* local_pAllocator;
16352 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016353 local_pCreateInfo = nullptr;
16354 if (pCreateInfo)
16355 {
16356 local_pCreateInfo = (VkIndirectCommandsLayoutCreateInfoNVX*)pool->alloc(sizeof(const VkIndirectCommandsLayoutCreateInfoNVX));
16357 deepcopy_VkIndirectCommandsLayoutCreateInfoNVX(pool, pCreateInfo, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
16358 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016359 local_pAllocator = nullptr;
16360 if (pAllocator)
16361 {
16362 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16363 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16364 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016365 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016366 countingStream->rewind();
16367 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016368 uint64_t cgen_var_1257;
16369 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1257, 1);
16370 countingStream->write((uint64_t*)&cgen_var_1257, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016371 marshal_VkIndirectCommandsLayoutCreateInfoNVX(countingStream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016372 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016373 uint64_t cgen_var_1258 = (uint64_t)(uintptr_t)local_pAllocator;
16374 countingStream->putBe64(cgen_var_1258);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016375 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016376 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016377 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016378 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080016379 uint64_t cgen_var_1259;
16380 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1259, 1);
16381 countingStream->write((uint64_t*)&cgen_var_1259, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016382 }
16383 uint32_t packetSize_vkCreateIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16384 countingStream->rewind();
16385 uint32_t opcode_vkCreateIndirectCommandsLayoutNVX = OP_vkCreateIndirectCommandsLayoutNVX;
16386 stream->write(&opcode_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
16387 stream->write(&packetSize_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016388 uint64_t cgen_var_1260;
16389 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1260, 1);
16390 stream->write((uint64_t*)&cgen_var_1260, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016391 marshal_VkIndirectCommandsLayoutCreateInfoNVX(stream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016392 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016393 uint64_t cgen_var_1261 = (uint64_t)(uintptr_t)local_pAllocator;
16394 stream->putBe64(cgen_var_1261);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016395 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016396 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016397 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016398 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016399 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016400 uint64_t cgen_var_1262;
16401 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1262, 1);
16402 stream->write((uint64_t*)&cgen_var_1262, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016403 stream->setHandleMapping(resources->unwrapMapping());
16404 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080016405 uint64_t cgen_var_1263;
16406 stream->read((uint64_t*)&cgen_var_1263, 8);
16407 stream->handleMapping()->mapHandles_u64_VkIndirectCommandsLayoutNVX(&cgen_var_1263, (VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016408 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016409 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
16410 stream->read(&vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016411 countingStream->clearPool();
16412 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016413 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016414 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
16415}
16416
16417void VkEncoder::vkDestroyIndirectCommandsLayoutNVX(
16418 VkDevice device,
16419 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
16420 const VkAllocationCallbacks* pAllocator)
16421{
16422 auto stream = mImpl->stream();
16423 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016424 auto resources = mImpl->resources();
16425 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016426 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016427 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016428 VkIndirectCommandsLayoutNVX local_indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016429 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016430 local_device = device;
16431 local_indirectCommandsLayout = indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016432 local_pAllocator = nullptr;
16433 if (pAllocator)
16434 {
16435 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16436 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16437 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016438 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016439 countingStream->rewind();
16440 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016441 uint64_t cgen_var_1264;
16442 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1264, 1);
16443 countingStream->write((uint64_t*)&cgen_var_1264, 1 * 8);
16444 uint64_t cgen_var_1265;
16445 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1265, 1);
16446 countingStream->write((uint64_t*)&cgen_var_1265, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016447 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016448 uint64_t cgen_var_1266 = (uint64_t)(uintptr_t)local_pAllocator;
16449 countingStream->putBe64(cgen_var_1266);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016450 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016451 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016452 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016453 }
16454 }
16455 uint32_t packetSize_vkDestroyIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16456 countingStream->rewind();
16457 uint32_t opcode_vkDestroyIndirectCommandsLayoutNVX = OP_vkDestroyIndirectCommandsLayoutNVX;
16458 stream->write(&opcode_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
16459 stream->write(&packetSize_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016460 uint64_t cgen_var_1267;
16461 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1267, 1);
16462 stream->write((uint64_t*)&cgen_var_1267, 1 * 8);
16463 uint64_t cgen_var_1268;
16464 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1268, 1);
16465 stream->write((uint64_t*)&cgen_var_1268, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016466 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016467 uint64_t cgen_var_1269 = (uint64_t)(uintptr_t)local_pAllocator;
16468 stream->putBe64(cgen_var_1269);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016469 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016470 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016471 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016472 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016473 resources->destroyMapping()->mapHandles_VkIndirectCommandsLayoutNVX((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016474}
16475
16476VkResult VkEncoder::vkCreateObjectTableNVX(
16477 VkDevice device,
16478 const VkObjectTableCreateInfoNVX* pCreateInfo,
16479 const VkAllocationCallbacks* pAllocator,
16480 VkObjectTableNVX* pObjectTable)
16481{
16482 auto stream = mImpl->stream();
16483 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016484 auto resources = mImpl->resources();
16485 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016486 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016487 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016488 VkObjectTableCreateInfoNVX* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016489 VkAllocationCallbacks* local_pAllocator;
16490 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016491 local_pCreateInfo = nullptr;
16492 if (pCreateInfo)
16493 {
16494 local_pCreateInfo = (VkObjectTableCreateInfoNVX*)pool->alloc(sizeof(const VkObjectTableCreateInfoNVX));
16495 deepcopy_VkObjectTableCreateInfoNVX(pool, pCreateInfo, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
16496 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016497 local_pAllocator = nullptr;
16498 if (pAllocator)
16499 {
16500 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16501 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16502 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016503 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016504 countingStream->rewind();
16505 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016506 uint64_t cgen_var_1270;
16507 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1270, 1);
16508 countingStream->write((uint64_t*)&cgen_var_1270, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016509 marshal_VkObjectTableCreateInfoNVX(countingStream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016510 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016511 uint64_t cgen_var_1271 = (uint64_t)(uintptr_t)local_pAllocator;
16512 countingStream->putBe64(cgen_var_1271);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016513 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016514 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016515 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016516 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080016517 uint64_t cgen_var_1272;
16518 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1272, 1);
16519 countingStream->write((uint64_t*)&cgen_var_1272, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016520 }
16521 uint32_t packetSize_vkCreateObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16522 countingStream->rewind();
16523 uint32_t opcode_vkCreateObjectTableNVX = OP_vkCreateObjectTableNVX;
16524 stream->write(&opcode_vkCreateObjectTableNVX, sizeof(uint32_t));
16525 stream->write(&packetSize_vkCreateObjectTableNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016526 uint64_t cgen_var_1273;
16527 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1273, 1);
16528 stream->write((uint64_t*)&cgen_var_1273, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016529 marshal_VkObjectTableCreateInfoNVX(stream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016530 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016531 uint64_t cgen_var_1274 = (uint64_t)(uintptr_t)local_pAllocator;
16532 stream->putBe64(cgen_var_1274);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016533 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016534 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016535 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016536 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016537 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016538 uint64_t cgen_var_1275;
16539 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1275, 1);
16540 stream->write((uint64_t*)&cgen_var_1275, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016541 stream->setHandleMapping(resources->unwrapMapping());
16542 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080016543 uint64_t cgen_var_1276;
16544 stream->read((uint64_t*)&cgen_var_1276, 8);
16545 stream->handleMapping()->mapHandles_u64_VkObjectTableNVX(&cgen_var_1276, (VkObjectTableNVX*)pObjectTable, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016546 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016547 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
16548 stream->read(&vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016549 countingStream->clearPool();
16550 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016551 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016552 return vkCreateObjectTableNVX_VkResult_return;
16553}
16554
16555void VkEncoder::vkDestroyObjectTableNVX(
16556 VkDevice device,
16557 VkObjectTableNVX objectTable,
16558 const VkAllocationCallbacks* pAllocator)
16559{
16560 auto stream = mImpl->stream();
16561 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016562 auto resources = mImpl->resources();
16563 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016564 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016565 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016566 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016567 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016568 local_device = device;
16569 local_objectTable = objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016570 local_pAllocator = nullptr;
16571 if (pAllocator)
16572 {
16573 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16574 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16575 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016576 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016577 countingStream->rewind();
16578 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016579 uint64_t cgen_var_1277;
16580 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1277, 1);
16581 countingStream->write((uint64_t*)&cgen_var_1277, 1 * 8);
16582 uint64_t cgen_var_1278;
16583 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1278, 1);
16584 countingStream->write((uint64_t*)&cgen_var_1278, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016585 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016586 uint64_t cgen_var_1279 = (uint64_t)(uintptr_t)local_pAllocator;
16587 countingStream->putBe64(cgen_var_1279);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016588 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016589 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016590 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016591 }
16592 }
16593 uint32_t packetSize_vkDestroyObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16594 countingStream->rewind();
16595 uint32_t opcode_vkDestroyObjectTableNVX = OP_vkDestroyObjectTableNVX;
16596 stream->write(&opcode_vkDestroyObjectTableNVX, sizeof(uint32_t));
16597 stream->write(&packetSize_vkDestroyObjectTableNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016598 uint64_t cgen_var_1280;
16599 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1280, 1);
16600 stream->write((uint64_t*)&cgen_var_1280, 1 * 8);
16601 uint64_t cgen_var_1281;
16602 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1281, 1);
16603 stream->write((uint64_t*)&cgen_var_1281, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016604 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016605 uint64_t cgen_var_1282 = (uint64_t)(uintptr_t)local_pAllocator;
16606 stream->putBe64(cgen_var_1282);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016607 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016608 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016609 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016610 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016611 resources->destroyMapping()->mapHandles_VkObjectTableNVX((VkObjectTableNVX*)&objectTable);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016612}
16613
16614VkResult VkEncoder::vkRegisterObjectsNVX(
16615 VkDevice device,
16616 VkObjectTableNVX objectTable,
16617 uint32_t objectCount,
16618 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
16619 const uint32_t* pObjectIndices)
16620{
16621 auto stream = mImpl->stream();
16622 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016623 auto resources = mImpl->resources();
16624 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016625 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016626 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016627 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016628 uint32_t local_objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016629 VkObjectTableEntryNVX** local_ppObjectTableEntries;
16630 uint32_t* local_pObjectIndices;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016631 local_device = device;
16632 local_objectTable = objectTable;
16633 local_objectCount = objectCount;
16634 (void)ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016635 local_pObjectIndices = nullptr;
16636 if (pObjectIndices)
16637 {
16638 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
16639 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016640 countingStream->rewind();
16641 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016642 uint64_t cgen_var_1283;
16643 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1283, 1);
16644 countingStream->write((uint64_t*)&cgen_var_1283, 1 * 8);
16645 uint64_t cgen_var_1284;
16646 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1284, 1);
16647 countingStream->write((uint64_t*)&cgen_var_1284, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016648 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080016649 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016650 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016651 }
16652 uint32_t packetSize_vkRegisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16653 countingStream->rewind();
16654 uint32_t opcode_vkRegisterObjectsNVX = OP_vkRegisterObjectsNVX;
16655 stream->write(&opcode_vkRegisterObjectsNVX, sizeof(uint32_t));
16656 stream->write(&packetSize_vkRegisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016657 uint64_t cgen_var_1285;
16658 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1285, 1);
16659 stream->write((uint64_t*)&cgen_var_1285, 1 * 8);
16660 uint64_t cgen_var_1286;
16661 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1286, 1);
16662 stream->write((uint64_t*)&cgen_var_1286, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016663 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080016664 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016665 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016666 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
16667 stream->read(&vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016668 countingStream->clearPool();
16669 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016670 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016671 return vkRegisterObjectsNVX_VkResult_return;
16672}
16673
16674VkResult VkEncoder::vkUnregisterObjectsNVX(
16675 VkDevice device,
16676 VkObjectTableNVX objectTable,
16677 uint32_t objectCount,
16678 const VkObjectEntryTypeNVX* pObjectEntryTypes,
16679 const uint32_t* pObjectIndices)
16680{
16681 auto stream = mImpl->stream();
16682 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016683 auto resources = mImpl->resources();
16684 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016685 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016686 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016687 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016688 uint32_t local_objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016689 VkObjectEntryTypeNVX* local_pObjectEntryTypes;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016690 uint32_t* local_pObjectIndices;
16691 local_device = device;
16692 local_objectTable = objectTable;
16693 local_objectCount = objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016694 local_pObjectEntryTypes = nullptr;
16695 if (pObjectEntryTypes)
16696 {
16697 local_pObjectEntryTypes = (VkObjectEntryTypeNVX*)pool->dupArray(pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
16698 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016699 local_pObjectIndices = nullptr;
16700 if (pObjectIndices)
16701 {
16702 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
16703 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016704 countingStream->rewind();
16705 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016706 uint64_t cgen_var_1287;
16707 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1287, 1);
16708 countingStream->write((uint64_t*)&cgen_var_1287, 1 * 8);
16709 uint64_t cgen_var_1288;
16710 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1288, 1);
16711 countingStream->write((uint64_t*)&cgen_var_1288, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016712 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
16713 countingStream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
16714 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016715 }
16716 uint32_t packetSize_vkUnregisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16717 countingStream->rewind();
16718 uint32_t opcode_vkUnregisterObjectsNVX = OP_vkUnregisterObjectsNVX;
16719 stream->write(&opcode_vkUnregisterObjectsNVX, sizeof(uint32_t));
16720 stream->write(&packetSize_vkUnregisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016721 uint64_t cgen_var_1289;
16722 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1289, 1);
16723 stream->write((uint64_t*)&cgen_var_1289, 1 * 8);
16724 uint64_t cgen_var_1290;
16725 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1290, 1);
16726 stream->write((uint64_t*)&cgen_var_1290, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016727 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
16728 stream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
16729 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016730 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
16731 stream->read(&vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016732 countingStream->clearPool();
16733 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016734 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016735 return vkUnregisterObjectsNVX_VkResult_return;
16736}
16737
16738void VkEncoder::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
16739 VkPhysicalDevice physicalDevice,
16740 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
16741 VkDeviceGeneratedCommandsLimitsNVX* pLimits)
16742{
16743 auto stream = mImpl->stream();
16744 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016745 auto resources = mImpl->resources();
16746 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016747 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016748 VkPhysicalDevice local_physicalDevice;
16749 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016750 countingStream->rewind();
16751 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016752 uint64_t cgen_var_1291;
16753 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1291, 1);
16754 countingStream->write((uint64_t*)&cgen_var_1291, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016755 marshal_VkDeviceGeneratedCommandsFeaturesNVX(countingStream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
16756 marshal_VkDeviceGeneratedCommandsLimitsNVX(countingStream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
16757 }
16758 uint32_t packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16759 countingStream->rewind();
16760 uint32_t opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = OP_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX;
16761 stream->write(&opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
16762 stream->write(&packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016763 uint64_t cgen_var_1292;
16764 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1292, 1);
16765 stream->write((uint64_t*)&cgen_var_1292, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016766 marshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
16767 marshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
16768 unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
16769 unmarshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
16770}
16771
16772#endif
16773#ifdef VK_NV_clip_space_w_scaling
16774void VkEncoder::vkCmdSetViewportWScalingNV(
16775 VkCommandBuffer commandBuffer,
16776 uint32_t firstViewport,
16777 uint32_t viewportCount,
16778 const VkViewportWScalingNV* pViewportWScalings)
16779{
16780 auto stream = mImpl->stream();
16781 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016782 auto resources = mImpl->resources();
16783 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016784 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016785 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016786 uint32_t local_firstViewport;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016787 uint32_t local_viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016788 VkViewportWScalingNV* local_pViewportWScalings;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016789 local_commandBuffer = commandBuffer;
16790 local_firstViewport = firstViewport;
16791 local_viewportCount = viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016792 local_pViewportWScalings = nullptr;
16793 if (pViewportWScalings)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016794 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016795 local_pViewportWScalings = (VkViewportWScalingNV*)pool->alloc(((viewportCount)) * sizeof(const VkViewportWScalingNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016796 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
16797 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016798 deepcopy_VkViewportWScalingNV(pool, pViewportWScalings + i, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
16799 }
16800 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016801 countingStream->rewind();
16802 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016803 uint64_t cgen_var_1293;
16804 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1293, 1);
16805 countingStream->write((uint64_t*)&cgen_var_1293, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016806 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
16807 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
16808 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
16809 {
16810 marshal_VkViewportWScalingNV(countingStream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016811 }
16812 }
16813 uint32_t packetSize_vkCmdSetViewportWScalingNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16814 countingStream->rewind();
16815 uint32_t opcode_vkCmdSetViewportWScalingNV = OP_vkCmdSetViewportWScalingNV;
16816 stream->write(&opcode_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
16817 stream->write(&packetSize_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016818 uint64_t cgen_var_1294;
16819 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1294, 1);
16820 stream->write((uint64_t*)&cgen_var_1294, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016821 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
16822 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016823 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
16824 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016825 marshal_VkViewportWScalingNV(stream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016826 }
16827}
16828
16829#endif
16830#ifdef VK_EXT_direct_mode_display
16831VkResult VkEncoder::vkReleaseDisplayEXT(
16832 VkPhysicalDevice physicalDevice,
16833 VkDisplayKHR display)
16834{
16835 auto stream = mImpl->stream();
16836 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016837 auto resources = mImpl->resources();
16838 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016839 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016840 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016841 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016842 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016843 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016844 countingStream->rewind();
16845 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016846 uint64_t cgen_var_1295;
16847 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1295, 1);
16848 countingStream->write((uint64_t*)&cgen_var_1295, 1 * 8);
16849 uint64_t cgen_var_1296;
16850 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1296, 1);
16851 countingStream->write((uint64_t*)&cgen_var_1296, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016852 }
16853 uint32_t packetSize_vkReleaseDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16854 countingStream->rewind();
16855 uint32_t opcode_vkReleaseDisplayEXT = OP_vkReleaseDisplayEXT;
16856 stream->write(&opcode_vkReleaseDisplayEXT, sizeof(uint32_t));
16857 stream->write(&packetSize_vkReleaseDisplayEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016858 uint64_t cgen_var_1297;
16859 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1297, 1);
16860 stream->write((uint64_t*)&cgen_var_1297, 1 * 8);
16861 uint64_t cgen_var_1298;
16862 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1298, 1);
16863 stream->write((uint64_t*)&cgen_var_1298, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016864 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
16865 stream->read(&vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016866 countingStream->clearPool();
16867 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016868 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016869 return vkReleaseDisplayEXT_VkResult_return;
16870}
16871
16872#endif
16873#ifdef VK_EXT_acquire_xlib_display
16874VkResult VkEncoder::vkAcquireXlibDisplayEXT(
16875 VkPhysicalDevice physicalDevice,
16876 Display* dpy,
16877 VkDisplayKHR display)
16878{
16879 auto stream = mImpl->stream();
16880 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016881 auto resources = mImpl->resources();
16882 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016883 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016884 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016885 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016886 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016887 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016888 countingStream->rewind();
16889 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016890 uint64_t cgen_var_1299;
16891 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1299, 1);
16892 countingStream->write((uint64_t*)&cgen_var_1299, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016893 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016894 uint64_t cgen_var_1300;
16895 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1300, 1);
16896 countingStream->write((uint64_t*)&cgen_var_1300, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016897 }
16898 uint32_t packetSize_vkAcquireXlibDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16899 countingStream->rewind();
16900 uint32_t opcode_vkAcquireXlibDisplayEXT = OP_vkAcquireXlibDisplayEXT;
16901 stream->write(&opcode_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
16902 stream->write(&packetSize_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016903 uint64_t cgen_var_1301;
16904 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1301, 1);
16905 stream->write((uint64_t*)&cgen_var_1301, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016906 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016907 uint64_t cgen_var_1302;
16908 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1302, 1);
16909 stream->write((uint64_t*)&cgen_var_1302, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016910 stream->read((Display*)dpy, sizeof(Display));
16911 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
16912 stream->read(&vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016913 countingStream->clearPool();
16914 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016915 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016916 return vkAcquireXlibDisplayEXT_VkResult_return;
16917}
16918
16919VkResult VkEncoder::vkGetRandROutputDisplayEXT(
16920 VkPhysicalDevice physicalDevice,
16921 Display* dpy,
16922 RROutput rrOutput,
16923 VkDisplayKHR* pDisplay)
16924{
16925 auto stream = mImpl->stream();
16926 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016927 auto resources = mImpl->resources();
16928 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016929 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016930 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016931 RROutput local_rrOutput;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016932 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016933 local_rrOutput = rrOutput;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016934 countingStream->rewind();
16935 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016936 uint64_t cgen_var_1303;
16937 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1303, 1);
16938 countingStream->write((uint64_t*)&cgen_var_1303, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016939 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016940 countingStream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016941 uint64_t cgen_var_1304;
16942 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1304, 1);
16943 countingStream->write((uint64_t*)&cgen_var_1304, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016944 }
16945 uint32_t packetSize_vkGetRandROutputDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16946 countingStream->rewind();
16947 uint32_t opcode_vkGetRandROutputDisplayEXT = OP_vkGetRandROutputDisplayEXT;
16948 stream->write(&opcode_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
16949 stream->write(&packetSize_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016950 uint64_t cgen_var_1305;
16951 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1305, 1);
16952 stream->write((uint64_t*)&cgen_var_1305, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016953 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016954 stream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yange4008a02018-11-18 12:22:48 -080016955 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016956 uint64_t cgen_var_1306;
16957 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1306, 1);
16958 stream->write((uint64_t*)&cgen_var_1306, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016959 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016960 stream->read((Display*)dpy, sizeof(Display));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016961 uint64_t cgen_var_1307;
16962 stream->read((uint64_t*)&cgen_var_1307, 8);
16963 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(&cgen_var_1307, (VkDisplayKHR*)pDisplay, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016964 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
16965 stream->read(&vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016966 countingStream->clearPool();
16967 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016968 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016969 return vkGetRandROutputDisplayEXT_VkResult_return;
16970}
16971
16972#endif
16973#ifdef VK_EXT_display_surface_counter
16974VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2EXT(
16975 VkPhysicalDevice physicalDevice,
16976 VkSurfaceKHR surface,
16977 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
16978{
16979 auto stream = mImpl->stream();
16980 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016981 auto resources = mImpl->resources();
16982 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016983 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016984 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016985 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016986 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016987 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016988 countingStream->rewind();
16989 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016990 uint64_t cgen_var_1308;
16991 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1308, 1);
16992 countingStream->write((uint64_t*)&cgen_var_1308, 1 * 8);
16993 uint64_t cgen_var_1309;
16994 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1309, 1);
16995 countingStream->write((uint64_t*)&cgen_var_1309, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016996 marshal_VkSurfaceCapabilities2EXT(countingStream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
16997 }
16998 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16999 countingStream->rewind();
17000 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT = OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT;
17001 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
17002 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017003 uint64_t cgen_var_1310;
17004 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1310, 1);
17005 stream->write((uint64_t*)&cgen_var_1310, 1 * 8);
17006 uint64_t cgen_var_1311;
17007 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1311, 1);
17008 stream->write((uint64_t*)&cgen_var_1311, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017009 marshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
17010 unmarshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
17011 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
17012 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017013 countingStream->clearPool();
17014 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017015 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017016 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
17017}
17018
17019#endif
17020#ifdef VK_EXT_display_control
17021VkResult VkEncoder::vkDisplayPowerControlEXT(
17022 VkDevice device,
17023 VkDisplayKHR display,
17024 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
17025{
17026 auto stream = mImpl->stream();
17027 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017028 auto resources = mImpl->resources();
17029 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017030 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017031 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017032 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017033 VkDisplayPowerInfoEXT* local_pDisplayPowerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017034 local_device = device;
17035 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017036 local_pDisplayPowerInfo = nullptr;
17037 if (pDisplayPowerInfo)
17038 {
17039 local_pDisplayPowerInfo = (VkDisplayPowerInfoEXT*)pool->alloc(sizeof(const VkDisplayPowerInfoEXT));
17040 deepcopy_VkDisplayPowerInfoEXT(pool, pDisplayPowerInfo, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
17041 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017042 countingStream->rewind();
17043 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017044 uint64_t cgen_var_1312;
17045 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1312, 1);
17046 countingStream->write((uint64_t*)&cgen_var_1312, 1 * 8);
17047 uint64_t cgen_var_1313;
17048 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1313, 1);
17049 countingStream->write((uint64_t*)&cgen_var_1313, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017050 marshal_VkDisplayPowerInfoEXT(countingStream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017051 }
17052 uint32_t packetSize_vkDisplayPowerControlEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17053 countingStream->rewind();
17054 uint32_t opcode_vkDisplayPowerControlEXT = OP_vkDisplayPowerControlEXT;
17055 stream->write(&opcode_vkDisplayPowerControlEXT, sizeof(uint32_t));
17056 stream->write(&packetSize_vkDisplayPowerControlEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017057 uint64_t cgen_var_1314;
17058 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1314, 1);
17059 stream->write((uint64_t*)&cgen_var_1314, 1 * 8);
17060 uint64_t cgen_var_1315;
17061 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1315, 1);
17062 stream->write((uint64_t*)&cgen_var_1315, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017063 marshal_VkDisplayPowerInfoEXT(stream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017064 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
17065 stream->read(&vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017066 countingStream->clearPool();
17067 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017068 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017069 return vkDisplayPowerControlEXT_VkResult_return;
17070}
17071
17072VkResult VkEncoder::vkRegisterDeviceEventEXT(
17073 VkDevice device,
17074 const VkDeviceEventInfoEXT* pDeviceEventInfo,
17075 const VkAllocationCallbacks* pAllocator,
17076 VkFence* pFence)
17077{
17078 auto stream = mImpl->stream();
17079 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017080 auto resources = mImpl->resources();
17081 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017082 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017083 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017084 VkDeviceEventInfoEXT* local_pDeviceEventInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017085 VkAllocationCallbacks* local_pAllocator;
17086 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017087 local_pDeviceEventInfo = nullptr;
17088 if (pDeviceEventInfo)
17089 {
17090 local_pDeviceEventInfo = (VkDeviceEventInfoEXT*)pool->alloc(sizeof(const VkDeviceEventInfoEXT));
17091 deepcopy_VkDeviceEventInfoEXT(pool, pDeviceEventInfo, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
17092 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017093 local_pAllocator = nullptr;
17094 if (pAllocator)
17095 {
17096 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17097 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17098 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017099 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017100 countingStream->rewind();
17101 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017102 uint64_t cgen_var_1316;
17103 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1316, 1);
17104 countingStream->write((uint64_t*)&cgen_var_1316, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017105 marshal_VkDeviceEventInfoEXT(countingStream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017106 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017107 uint64_t cgen_var_1317 = (uint64_t)(uintptr_t)local_pAllocator;
17108 countingStream->putBe64(cgen_var_1317);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017109 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017110 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017111 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017112 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017113 uint64_t cgen_var_1318;
17114 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1318, 1);
17115 countingStream->write((uint64_t*)&cgen_var_1318, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017116 }
17117 uint32_t packetSize_vkRegisterDeviceEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17118 countingStream->rewind();
17119 uint32_t opcode_vkRegisterDeviceEventEXT = OP_vkRegisterDeviceEventEXT;
17120 stream->write(&opcode_vkRegisterDeviceEventEXT, sizeof(uint32_t));
17121 stream->write(&packetSize_vkRegisterDeviceEventEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017122 uint64_t cgen_var_1319;
17123 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1319, 1);
17124 stream->write((uint64_t*)&cgen_var_1319, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017125 marshal_VkDeviceEventInfoEXT(stream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017126 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017127 uint64_t cgen_var_1320 = (uint64_t)(uintptr_t)local_pAllocator;
17128 stream->putBe64(cgen_var_1320);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017129 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017130 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017131 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017132 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017133 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017134 uint64_t cgen_var_1321;
17135 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1321, 1);
17136 stream->write((uint64_t*)&cgen_var_1321, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017137 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080017138 uint64_t cgen_var_1322;
17139 stream->read((uint64_t*)&cgen_var_1322, 8);
17140 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1322, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017141 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
17142 stream->read(&vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017143 countingStream->clearPool();
17144 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017145 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017146 return vkRegisterDeviceEventEXT_VkResult_return;
17147}
17148
17149VkResult VkEncoder::vkRegisterDisplayEventEXT(
17150 VkDevice device,
17151 VkDisplayKHR display,
17152 const VkDisplayEventInfoEXT* pDisplayEventInfo,
17153 const VkAllocationCallbacks* pAllocator,
17154 VkFence* pFence)
17155{
17156 auto stream = mImpl->stream();
17157 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017158 auto resources = mImpl->resources();
17159 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017160 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017161 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017162 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017163 VkDisplayEventInfoEXT* local_pDisplayEventInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017164 VkAllocationCallbacks* local_pAllocator;
17165 local_device = device;
17166 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017167 local_pDisplayEventInfo = nullptr;
17168 if (pDisplayEventInfo)
17169 {
17170 local_pDisplayEventInfo = (VkDisplayEventInfoEXT*)pool->alloc(sizeof(const VkDisplayEventInfoEXT));
17171 deepcopy_VkDisplayEventInfoEXT(pool, pDisplayEventInfo, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
17172 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017173 local_pAllocator = nullptr;
17174 if (pAllocator)
17175 {
17176 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17177 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17178 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017179 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017180 countingStream->rewind();
17181 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017182 uint64_t cgen_var_1323;
17183 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1323, 1);
17184 countingStream->write((uint64_t*)&cgen_var_1323, 1 * 8);
17185 uint64_t cgen_var_1324;
17186 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1324, 1);
17187 countingStream->write((uint64_t*)&cgen_var_1324, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017188 marshal_VkDisplayEventInfoEXT(countingStream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017189 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017190 uint64_t cgen_var_1325 = (uint64_t)(uintptr_t)local_pAllocator;
17191 countingStream->putBe64(cgen_var_1325);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017192 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017193 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017194 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017195 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017196 uint64_t cgen_var_1326;
17197 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1326, 1);
17198 countingStream->write((uint64_t*)&cgen_var_1326, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017199 }
17200 uint32_t packetSize_vkRegisterDisplayEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17201 countingStream->rewind();
17202 uint32_t opcode_vkRegisterDisplayEventEXT = OP_vkRegisterDisplayEventEXT;
17203 stream->write(&opcode_vkRegisterDisplayEventEXT, sizeof(uint32_t));
17204 stream->write(&packetSize_vkRegisterDisplayEventEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017205 uint64_t cgen_var_1327;
17206 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1327, 1);
17207 stream->write((uint64_t*)&cgen_var_1327, 1 * 8);
17208 uint64_t cgen_var_1328;
17209 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1328, 1);
17210 stream->write((uint64_t*)&cgen_var_1328, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017211 marshal_VkDisplayEventInfoEXT(stream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017212 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017213 uint64_t cgen_var_1329 = (uint64_t)(uintptr_t)local_pAllocator;
17214 stream->putBe64(cgen_var_1329);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017215 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017216 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017217 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017218 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017219 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017220 uint64_t cgen_var_1330;
17221 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1330, 1);
17222 stream->write((uint64_t*)&cgen_var_1330, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017223 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080017224 uint64_t cgen_var_1331;
17225 stream->read((uint64_t*)&cgen_var_1331, 8);
17226 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1331, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017227 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
17228 stream->read(&vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017229 countingStream->clearPool();
17230 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017231 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017232 return vkRegisterDisplayEventEXT_VkResult_return;
17233}
17234
17235VkResult VkEncoder::vkGetSwapchainCounterEXT(
17236 VkDevice device,
17237 VkSwapchainKHR swapchain,
17238 VkSurfaceCounterFlagBitsEXT counter,
17239 uint64_t* pCounterValue)
17240{
17241 auto stream = mImpl->stream();
17242 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017243 auto resources = mImpl->resources();
17244 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017245 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017246 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017247 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017248 VkSurfaceCounterFlagBitsEXT local_counter;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017249 local_device = device;
17250 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017251 local_counter = counter;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017252 countingStream->rewind();
17253 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017254 uint64_t cgen_var_1332;
17255 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1332, 1);
17256 countingStream->write((uint64_t*)&cgen_var_1332, 1 * 8);
17257 uint64_t cgen_var_1333;
17258 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1333, 1);
17259 countingStream->write((uint64_t*)&cgen_var_1333, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017260 countingStream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017261 countingStream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
17262 }
17263 uint32_t packetSize_vkGetSwapchainCounterEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17264 countingStream->rewind();
17265 uint32_t opcode_vkGetSwapchainCounterEXT = OP_vkGetSwapchainCounterEXT;
17266 stream->write(&opcode_vkGetSwapchainCounterEXT, sizeof(uint32_t));
17267 stream->write(&packetSize_vkGetSwapchainCounterEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017268 uint64_t cgen_var_1334;
17269 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1334, 1);
17270 stream->write((uint64_t*)&cgen_var_1334, 1 * 8);
17271 uint64_t cgen_var_1335;
17272 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1335, 1);
17273 stream->write((uint64_t*)&cgen_var_1335, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017274 stream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017275 stream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
17276 stream->read((uint64_t*)pCounterValue, sizeof(uint64_t));
17277 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
17278 stream->read(&vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017279 countingStream->clearPool();
17280 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017281 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017282 return vkGetSwapchainCounterEXT_VkResult_return;
17283}
17284
17285#endif
17286#ifdef VK_GOOGLE_display_timing
17287VkResult VkEncoder::vkGetRefreshCycleDurationGOOGLE(
17288 VkDevice device,
17289 VkSwapchainKHR swapchain,
17290 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
17291{
17292 auto stream = mImpl->stream();
17293 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017294 auto resources = mImpl->resources();
17295 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017296 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017297 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017298 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017299 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017300 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017301 countingStream->rewind();
17302 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017303 uint64_t cgen_var_1336;
17304 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1336, 1);
17305 countingStream->write((uint64_t*)&cgen_var_1336, 1 * 8);
17306 uint64_t cgen_var_1337;
17307 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1337, 1);
17308 countingStream->write((uint64_t*)&cgen_var_1337, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017309 marshal_VkRefreshCycleDurationGOOGLE(countingStream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
17310 }
17311 uint32_t packetSize_vkGetRefreshCycleDurationGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17312 countingStream->rewind();
17313 uint32_t opcode_vkGetRefreshCycleDurationGOOGLE = OP_vkGetRefreshCycleDurationGOOGLE;
17314 stream->write(&opcode_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
17315 stream->write(&packetSize_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017316 uint64_t cgen_var_1338;
17317 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1338, 1);
17318 stream->write((uint64_t*)&cgen_var_1338, 1 * 8);
17319 uint64_t cgen_var_1339;
17320 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1339, 1);
17321 stream->write((uint64_t*)&cgen_var_1339, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017322 marshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
17323 unmarshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
17324 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
17325 stream->read(&vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017326 countingStream->clearPool();
17327 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017328 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017329 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
17330}
17331
17332VkResult VkEncoder::vkGetPastPresentationTimingGOOGLE(
17333 VkDevice device,
17334 VkSwapchainKHR swapchain,
17335 uint32_t* pPresentationTimingCount,
17336 VkPastPresentationTimingGOOGLE* pPresentationTimings)
17337{
17338 auto stream = mImpl->stream();
17339 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017340 auto resources = mImpl->resources();
17341 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017342 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017343 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017344 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017345 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017346 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017347 countingStream->rewind();
17348 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017349 uint64_t cgen_var_1340;
17350 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1340, 1);
17351 countingStream->write((uint64_t*)&cgen_var_1340, 1 * 8);
17352 uint64_t cgen_var_1341;
17353 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1341, 1);
17354 countingStream->write((uint64_t*)&cgen_var_1341, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017355 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017356 uint64_t cgen_var_1342 = (uint64_t)(uintptr_t)pPresentationTimingCount;
17357 countingStream->putBe64(cgen_var_1342);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017358 if (pPresentationTimingCount)
17359 {
17360 countingStream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
17361 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017362 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017363 uint64_t cgen_var_1343 = (uint64_t)(uintptr_t)pPresentationTimings;
17364 countingStream->putBe64(cgen_var_1343);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017365 if (pPresentationTimings)
17366 {
17367 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
17368 {
17369 marshal_VkPastPresentationTimingGOOGLE(countingStream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
17370 }
17371 }
17372 }
17373 uint32_t packetSize_vkGetPastPresentationTimingGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17374 countingStream->rewind();
17375 uint32_t opcode_vkGetPastPresentationTimingGOOGLE = OP_vkGetPastPresentationTimingGOOGLE;
17376 stream->write(&opcode_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
17377 stream->write(&packetSize_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017378 uint64_t cgen_var_1344;
17379 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1344, 1);
17380 stream->write((uint64_t*)&cgen_var_1344, 1 * 8);
17381 uint64_t cgen_var_1345;
17382 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1345, 1);
17383 stream->write((uint64_t*)&cgen_var_1345, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017384 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017385 uint64_t cgen_var_1346 = (uint64_t)(uintptr_t)pPresentationTimingCount;
17386 stream->putBe64(cgen_var_1346);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017387 if (pPresentationTimingCount)
17388 {
17389 stream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
17390 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017391 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017392 uint64_t cgen_var_1347 = (uint64_t)(uintptr_t)pPresentationTimings;
17393 stream->putBe64(cgen_var_1347);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017394 if (pPresentationTimings)
17395 {
17396 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
17397 {
17398 marshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
17399 }
17400 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017401 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017402 uint32_t* check_pPresentationTimingCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017403 check_pPresentationTimingCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017404 if (pPresentationTimingCount)
17405 {
17406 if (!(check_pPresentationTimingCount))
17407 {
17408 fprintf(stderr, "fatal: pPresentationTimingCount inconsistent between guest and host\n");
17409 }
17410 stream->read((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
17411 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017412 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017413 VkPastPresentationTimingGOOGLE* check_pPresentationTimings;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017414 check_pPresentationTimings = (VkPastPresentationTimingGOOGLE*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017415 if (pPresentationTimings)
17416 {
17417 if (!(check_pPresentationTimings))
17418 {
17419 fprintf(stderr, "fatal: pPresentationTimings inconsistent between guest and host\n");
17420 }
17421 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
17422 {
17423 unmarshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
17424 }
17425 }
17426 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
17427 stream->read(&vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017428 countingStream->clearPool();
17429 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017430 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017431 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
17432}
17433
17434#endif
17435#ifdef VK_NV_sample_mask_override_coverage
17436#endif
17437#ifdef VK_NV_geometry_shader_passthrough
17438#endif
17439#ifdef VK_NV_viewport_array2
17440#endif
17441#ifdef VK_NVX_multiview_per_view_attributes
17442#endif
17443#ifdef VK_NV_viewport_swizzle
17444#endif
17445#ifdef VK_EXT_discard_rectangles
17446void VkEncoder::vkCmdSetDiscardRectangleEXT(
17447 VkCommandBuffer commandBuffer,
17448 uint32_t firstDiscardRectangle,
17449 uint32_t discardRectangleCount,
17450 const VkRect2D* pDiscardRectangles)
17451{
17452 auto stream = mImpl->stream();
17453 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017454 auto resources = mImpl->resources();
17455 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017456 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017457 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017458 uint32_t local_firstDiscardRectangle;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017459 uint32_t local_discardRectangleCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017460 VkRect2D* local_pDiscardRectangles;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017461 local_commandBuffer = commandBuffer;
17462 local_firstDiscardRectangle = firstDiscardRectangle;
17463 local_discardRectangleCount = discardRectangleCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017464 local_pDiscardRectangles = nullptr;
17465 if (pDiscardRectangles)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017466 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017467 local_pDiscardRectangles = (VkRect2D*)pool->alloc(((discardRectangleCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017468 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
17469 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017470 deepcopy_VkRect2D(pool, pDiscardRectangles + i, (VkRect2D*)(local_pDiscardRectangles + i));
17471 }
17472 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017473 countingStream->rewind();
17474 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017475 uint64_t cgen_var_1350;
17476 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1350, 1);
17477 countingStream->write((uint64_t*)&cgen_var_1350, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017478 countingStream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
17479 countingStream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
17480 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
17481 {
17482 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017483 }
17484 }
17485 uint32_t packetSize_vkCmdSetDiscardRectangleEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17486 countingStream->rewind();
17487 uint32_t opcode_vkCmdSetDiscardRectangleEXT = OP_vkCmdSetDiscardRectangleEXT;
17488 stream->write(&opcode_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
17489 stream->write(&packetSize_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017490 uint64_t cgen_var_1351;
17491 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1351, 1);
17492 stream->write((uint64_t*)&cgen_var_1351, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017493 stream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
17494 stream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017495 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
17496 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017497 marshal_VkRect2D(stream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017498 }
17499}
17500
17501#endif
17502#ifdef VK_EXT_conservative_rasterization
17503#endif
17504#ifdef VK_EXT_swapchain_colorspace
17505#endif
17506#ifdef VK_EXT_hdr_metadata
17507void VkEncoder::vkSetHdrMetadataEXT(
17508 VkDevice device,
17509 uint32_t swapchainCount,
17510 const VkSwapchainKHR* pSwapchains,
17511 const VkHdrMetadataEXT* pMetadata)
17512{
17513 auto stream = mImpl->stream();
17514 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017515 auto resources = mImpl->resources();
17516 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017517 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017518 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017519 uint32_t local_swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017520 VkSwapchainKHR* local_pSwapchains;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017521 VkHdrMetadataEXT* local_pMetadata;
17522 local_device = device;
17523 local_swapchainCount = swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017524 local_pSwapchains = nullptr;
17525 if (pSwapchains)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017526 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017527 local_pSwapchains = (VkSwapchainKHR*)pool->dupArray(pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
17528 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017529 local_pMetadata = nullptr;
17530 if (pMetadata)
17531 {
17532 local_pMetadata = (VkHdrMetadataEXT*)pool->alloc(((swapchainCount)) * sizeof(const VkHdrMetadataEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017533 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
17534 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017535 deepcopy_VkHdrMetadataEXT(pool, pMetadata + i, (VkHdrMetadataEXT*)(local_pMetadata + i));
17536 }
17537 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017538 countingStream->rewind();
17539 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017540 uint64_t cgen_var_1352;
17541 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1352, 1);
17542 countingStream->write((uint64_t*)&cgen_var_1352, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017543 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017544 if (((swapchainCount)))
17545 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017546 uint64_t* cgen_var_1353;
17547 countingStream->alloc((void**)&cgen_var_1353, ((swapchainCount)) * 8);
17548 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1353, ((swapchainCount)));
17549 countingStream->write((uint64_t*)cgen_var_1353, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080017550 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017551 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
17552 {
17553 marshal_VkHdrMetadataEXT(countingStream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017554 }
17555 }
17556 uint32_t packetSize_vkSetHdrMetadataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17557 countingStream->rewind();
17558 uint32_t opcode_vkSetHdrMetadataEXT = OP_vkSetHdrMetadataEXT;
17559 stream->write(&opcode_vkSetHdrMetadataEXT, sizeof(uint32_t));
17560 stream->write(&packetSize_vkSetHdrMetadataEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017561 uint64_t cgen_var_1354;
17562 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1354, 1);
17563 stream->write((uint64_t*)&cgen_var_1354, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017564 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017565 if (((swapchainCount)))
17566 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017567 uint64_t* cgen_var_1355;
17568 stream->alloc((void**)&cgen_var_1355, ((swapchainCount)) * 8);
17569 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1355, ((swapchainCount)));
17570 stream->write((uint64_t*)cgen_var_1355, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080017571 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017572 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
17573 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017574 marshal_VkHdrMetadataEXT(stream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017575 }
17576}
17577
17578#endif
17579#ifdef VK_MVK_ios_surface
17580VkResult VkEncoder::vkCreateIOSSurfaceMVK(
17581 VkInstance instance,
17582 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
17583 const VkAllocationCallbacks* pAllocator,
17584 VkSurfaceKHR* pSurface)
17585{
17586 auto stream = mImpl->stream();
17587 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017588 auto resources = mImpl->resources();
17589 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017590 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017591 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017592 VkIOSSurfaceCreateInfoMVK* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017593 VkAllocationCallbacks* local_pAllocator;
17594 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017595 local_pCreateInfo = nullptr;
17596 if (pCreateInfo)
17597 {
17598 local_pCreateInfo = (VkIOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkIOSSurfaceCreateInfoMVK));
17599 deepcopy_VkIOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
17600 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017601 local_pAllocator = nullptr;
17602 if (pAllocator)
17603 {
17604 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17605 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17606 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017607 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017608 countingStream->rewind();
17609 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017610 uint64_t cgen_var_1356;
17611 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1356, 1);
17612 countingStream->write((uint64_t*)&cgen_var_1356, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017613 marshal_VkIOSSurfaceCreateInfoMVK(countingStream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017614 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017615 uint64_t cgen_var_1357 = (uint64_t)(uintptr_t)local_pAllocator;
17616 countingStream->putBe64(cgen_var_1357);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017617 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017618 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017619 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017620 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017621 uint64_t cgen_var_1358;
17622 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1358, 1);
17623 countingStream->write((uint64_t*)&cgen_var_1358, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017624 }
17625 uint32_t packetSize_vkCreateIOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17626 countingStream->rewind();
17627 uint32_t opcode_vkCreateIOSSurfaceMVK = OP_vkCreateIOSSurfaceMVK;
17628 stream->write(&opcode_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
17629 stream->write(&packetSize_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017630 uint64_t cgen_var_1359;
17631 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1359, 1);
17632 stream->write((uint64_t*)&cgen_var_1359, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017633 marshal_VkIOSSurfaceCreateInfoMVK(stream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017634 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017635 uint64_t cgen_var_1360 = (uint64_t)(uintptr_t)local_pAllocator;
17636 stream->putBe64(cgen_var_1360);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017637 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017638 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017639 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017640 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017641 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017642 uint64_t cgen_var_1361;
17643 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1361, 1);
17644 stream->write((uint64_t*)&cgen_var_1361, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017645 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080017646 uint64_t cgen_var_1362;
17647 stream->read((uint64_t*)&cgen_var_1362, 8);
17648 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1362, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017649 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
17650 stream->read(&vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017651 countingStream->clearPool();
17652 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017653 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017654 return vkCreateIOSSurfaceMVK_VkResult_return;
17655}
17656
17657#endif
17658#ifdef VK_MVK_macos_surface
17659VkResult VkEncoder::vkCreateMacOSSurfaceMVK(
17660 VkInstance instance,
17661 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
17662 const VkAllocationCallbacks* pAllocator,
17663 VkSurfaceKHR* pSurface)
17664{
17665 auto stream = mImpl->stream();
17666 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017667 auto resources = mImpl->resources();
17668 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017669 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017670 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017671 VkMacOSSurfaceCreateInfoMVK* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017672 VkAllocationCallbacks* local_pAllocator;
17673 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017674 local_pCreateInfo = nullptr;
17675 if (pCreateInfo)
17676 {
17677 local_pCreateInfo = (VkMacOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkMacOSSurfaceCreateInfoMVK));
17678 deepcopy_VkMacOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
17679 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017680 local_pAllocator = nullptr;
17681 if (pAllocator)
17682 {
17683 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17684 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17685 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017686 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017687 countingStream->rewind();
17688 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017689 uint64_t cgen_var_1363;
17690 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1363, 1);
17691 countingStream->write((uint64_t*)&cgen_var_1363, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017692 marshal_VkMacOSSurfaceCreateInfoMVK(countingStream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017693 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017694 uint64_t cgen_var_1364 = (uint64_t)(uintptr_t)local_pAllocator;
17695 countingStream->putBe64(cgen_var_1364);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017696 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017697 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017698 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017699 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017700 uint64_t cgen_var_1365;
17701 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1365, 1);
17702 countingStream->write((uint64_t*)&cgen_var_1365, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017703 }
17704 uint32_t packetSize_vkCreateMacOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17705 countingStream->rewind();
17706 uint32_t opcode_vkCreateMacOSSurfaceMVK = OP_vkCreateMacOSSurfaceMVK;
17707 stream->write(&opcode_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
17708 stream->write(&packetSize_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017709 uint64_t cgen_var_1366;
17710 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1366, 1);
17711 stream->write((uint64_t*)&cgen_var_1366, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017712 marshal_VkMacOSSurfaceCreateInfoMVK(stream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017713 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017714 uint64_t cgen_var_1367 = (uint64_t)(uintptr_t)local_pAllocator;
17715 stream->putBe64(cgen_var_1367);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017716 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017717 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017718 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017719 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017720 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017721 uint64_t cgen_var_1368;
17722 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1368, 1);
17723 stream->write((uint64_t*)&cgen_var_1368, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017724 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080017725 uint64_t cgen_var_1369;
17726 stream->read((uint64_t*)&cgen_var_1369, 8);
17727 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1369, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017728 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
17729 stream->read(&vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017730 countingStream->clearPool();
17731 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017732 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017733 return vkCreateMacOSSurfaceMVK_VkResult_return;
17734}
17735
17736#endif
17737#ifdef VK_EXT_external_memory_dma_buf
17738#endif
17739#ifdef VK_EXT_queue_family_foreign
17740#endif
17741#ifdef VK_EXT_debug_utils
17742VkResult VkEncoder::vkSetDebugUtilsObjectNameEXT(
17743 VkDevice device,
17744 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
17745{
17746 auto stream = mImpl->stream();
17747 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017748 auto resources = mImpl->resources();
17749 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017750 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017751 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017752 VkDebugUtilsObjectNameInfoEXT* local_pNameInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017753 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017754 local_pNameInfo = nullptr;
17755 if (pNameInfo)
17756 {
17757 local_pNameInfo = (VkDebugUtilsObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectNameInfoEXT));
17758 deepcopy_VkDebugUtilsObjectNameInfoEXT(pool, pNameInfo, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
17759 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017760 countingStream->rewind();
17761 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017762 uint64_t cgen_var_1370;
17763 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1370, 1);
17764 countingStream->write((uint64_t*)&cgen_var_1370, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017765 marshal_VkDebugUtilsObjectNameInfoEXT(countingStream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017766 }
17767 uint32_t packetSize_vkSetDebugUtilsObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17768 countingStream->rewind();
17769 uint32_t opcode_vkSetDebugUtilsObjectNameEXT = OP_vkSetDebugUtilsObjectNameEXT;
17770 stream->write(&opcode_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
17771 stream->write(&packetSize_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017772 uint64_t cgen_var_1371;
17773 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1371, 1);
17774 stream->write((uint64_t*)&cgen_var_1371, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017775 marshal_VkDebugUtilsObjectNameInfoEXT(stream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017776 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
17777 stream->read(&vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017778 countingStream->clearPool();
17779 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017780 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017781 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
17782}
17783
17784VkResult VkEncoder::vkSetDebugUtilsObjectTagEXT(
17785 VkDevice device,
17786 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
17787{
17788 auto stream = mImpl->stream();
17789 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017790 auto resources = mImpl->resources();
17791 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017792 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017793 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017794 VkDebugUtilsObjectTagInfoEXT* local_pTagInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017795 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017796 local_pTagInfo = nullptr;
17797 if (pTagInfo)
17798 {
17799 local_pTagInfo = (VkDebugUtilsObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectTagInfoEXT));
17800 deepcopy_VkDebugUtilsObjectTagInfoEXT(pool, pTagInfo, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
17801 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017802 countingStream->rewind();
17803 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017804 uint64_t cgen_var_1372;
17805 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1372, 1);
17806 countingStream->write((uint64_t*)&cgen_var_1372, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017807 marshal_VkDebugUtilsObjectTagInfoEXT(countingStream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017808 }
17809 uint32_t packetSize_vkSetDebugUtilsObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17810 countingStream->rewind();
17811 uint32_t opcode_vkSetDebugUtilsObjectTagEXT = OP_vkSetDebugUtilsObjectTagEXT;
17812 stream->write(&opcode_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
17813 stream->write(&packetSize_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017814 uint64_t cgen_var_1373;
17815 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1373, 1);
17816 stream->write((uint64_t*)&cgen_var_1373, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017817 marshal_VkDebugUtilsObjectTagInfoEXT(stream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017818 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
17819 stream->read(&vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017820 countingStream->clearPool();
17821 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017822 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017823 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
17824}
17825
17826void VkEncoder::vkQueueBeginDebugUtilsLabelEXT(
17827 VkQueue queue,
17828 const VkDebugUtilsLabelEXT* pLabelInfo)
17829{
17830 auto stream = mImpl->stream();
17831 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017832 auto resources = mImpl->resources();
17833 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017834 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017835 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017836 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017837 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017838 local_pLabelInfo = nullptr;
17839 if (pLabelInfo)
17840 {
17841 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
17842 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17843 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017844 countingStream->rewind();
17845 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017846 uint64_t cgen_var_1374;
17847 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1374, 1);
17848 countingStream->write((uint64_t*)&cgen_var_1374, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017849 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017850 }
17851 uint32_t packetSize_vkQueueBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17852 countingStream->rewind();
17853 uint32_t opcode_vkQueueBeginDebugUtilsLabelEXT = OP_vkQueueBeginDebugUtilsLabelEXT;
17854 stream->write(&opcode_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
17855 stream->write(&packetSize_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017856 uint64_t cgen_var_1375;
17857 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1375, 1);
17858 stream->write((uint64_t*)&cgen_var_1375, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017859 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017860}
17861
17862void VkEncoder::vkQueueEndDebugUtilsLabelEXT(
17863 VkQueue queue)
17864{
17865 auto stream = mImpl->stream();
17866 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017867 auto resources = mImpl->resources();
17868 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017869 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017870 VkQueue local_queue;
17871 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017872 countingStream->rewind();
17873 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017874 uint64_t cgen_var_1376;
17875 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1376, 1);
17876 countingStream->write((uint64_t*)&cgen_var_1376, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017877 }
17878 uint32_t packetSize_vkQueueEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17879 countingStream->rewind();
17880 uint32_t opcode_vkQueueEndDebugUtilsLabelEXT = OP_vkQueueEndDebugUtilsLabelEXT;
17881 stream->write(&opcode_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
17882 stream->write(&packetSize_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017883 uint64_t cgen_var_1377;
17884 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1377, 1);
17885 stream->write((uint64_t*)&cgen_var_1377, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017886}
17887
17888void VkEncoder::vkQueueInsertDebugUtilsLabelEXT(
17889 VkQueue queue,
17890 const VkDebugUtilsLabelEXT* pLabelInfo)
17891{
17892 auto stream = mImpl->stream();
17893 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017894 auto resources = mImpl->resources();
17895 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017896 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017897 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017898 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017899 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017900 local_pLabelInfo = nullptr;
17901 if (pLabelInfo)
17902 {
17903 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
17904 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17905 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017906 countingStream->rewind();
17907 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017908 uint64_t cgen_var_1378;
17909 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1378, 1);
17910 countingStream->write((uint64_t*)&cgen_var_1378, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017911 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017912 }
17913 uint32_t packetSize_vkQueueInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17914 countingStream->rewind();
17915 uint32_t opcode_vkQueueInsertDebugUtilsLabelEXT = OP_vkQueueInsertDebugUtilsLabelEXT;
17916 stream->write(&opcode_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
17917 stream->write(&packetSize_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017918 uint64_t cgen_var_1379;
17919 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1379, 1);
17920 stream->write((uint64_t*)&cgen_var_1379, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017921 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017922}
17923
17924void VkEncoder::vkCmdBeginDebugUtilsLabelEXT(
17925 VkCommandBuffer commandBuffer,
17926 const VkDebugUtilsLabelEXT* pLabelInfo)
17927{
17928 auto stream = mImpl->stream();
17929 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017930 auto resources = mImpl->resources();
17931 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017932 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017933 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017934 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017935 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017936 local_pLabelInfo = nullptr;
17937 if (pLabelInfo)
17938 {
17939 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
17940 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17941 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017942 countingStream->rewind();
17943 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017944 uint64_t cgen_var_1380;
17945 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1380, 1);
17946 countingStream->write((uint64_t*)&cgen_var_1380, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017947 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017948 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017949 uint32_t packetSize_vkCmdBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17950 countingStream->rewind();
17951 uint32_t opcode_vkCmdBeginDebugUtilsLabelEXT = OP_vkCmdBeginDebugUtilsLabelEXT;
17952 stream->write(&opcode_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
17953 stream->write(&packetSize_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017954 uint64_t cgen_var_1381;
17955 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1381, 1);
17956 stream->write((uint64_t*)&cgen_var_1381, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017957 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17958}
17959
17960void VkEncoder::vkCmdEndDebugUtilsLabelEXT(
17961 VkCommandBuffer commandBuffer)
17962{
17963 auto stream = mImpl->stream();
17964 auto countingStream = mImpl->countingStream();
17965 auto resources = mImpl->resources();
17966 auto pool = mImpl->pool();
17967 stream->setHandleMapping(resources->unwrapMapping());
17968 VkCommandBuffer local_commandBuffer;
17969 local_commandBuffer = commandBuffer;
17970 countingStream->rewind();
17971 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017972 uint64_t cgen_var_1382;
17973 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1382, 1);
17974 countingStream->write((uint64_t*)&cgen_var_1382, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017975 }
17976 uint32_t packetSize_vkCmdEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17977 countingStream->rewind();
17978 uint32_t opcode_vkCmdEndDebugUtilsLabelEXT = OP_vkCmdEndDebugUtilsLabelEXT;
17979 stream->write(&opcode_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
17980 stream->write(&packetSize_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017981 uint64_t cgen_var_1383;
17982 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1383, 1);
17983 stream->write((uint64_t*)&cgen_var_1383, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017984}
17985
17986void VkEncoder::vkCmdInsertDebugUtilsLabelEXT(
17987 VkCommandBuffer commandBuffer,
17988 const VkDebugUtilsLabelEXT* pLabelInfo)
17989{
17990 auto stream = mImpl->stream();
17991 auto countingStream = mImpl->countingStream();
17992 auto resources = mImpl->resources();
17993 auto pool = mImpl->pool();
17994 stream->setHandleMapping(resources->unwrapMapping());
17995 VkCommandBuffer local_commandBuffer;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017996 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017997 local_commandBuffer = commandBuffer;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017998 local_pLabelInfo = nullptr;
17999 if (pLabelInfo)
18000 {
18001 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
18002 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
18003 }
18004 countingStream->rewind();
18005 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018006 uint64_t cgen_var_1384;
18007 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1384, 1);
18008 countingStream->write((uint64_t*)&cgen_var_1384, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018009 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
18010 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018011 uint32_t packetSize_vkCmdInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18012 countingStream->rewind();
18013 uint32_t opcode_vkCmdInsertDebugUtilsLabelEXT = OP_vkCmdInsertDebugUtilsLabelEXT;
18014 stream->write(&opcode_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
18015 stream->write(&packetSize_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018016 uint64_t cgen_var_1385;
18017 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1385, 1);
18018 stream->write((uint64_t*)&cgen_var_1385, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018019 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018020}
18021
18022VkResult VkEncoder::vkCreateDebugUtilsMessengerEXT(
18023 VkInstance instance,
18024 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
18025 const VkAllocationCallbacks* pAllocator,
18026 VkDebugUtilsMessengerEXT* pMessenger)
18027{
18028 auto stream = mImpl->stream();
18029 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018030 auto resources = mImpl->resources();
18031 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018032 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018033 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018034 VkDebugUtilsMessengerCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018035 VkAllocationCallbacks* local_pAllocator;
18036 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018037 local_pCreateInfo = nullptr;
18038 if (pCreateInfo)
18039 {
18040 local_pCreateInfo = (VkDebugUtilsMessengerCreateInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCreateInfoEXT));
18041 deepcopy_VkDebugUtilsMessengerCreateInfoEXT(pool, pCreateInfo, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
18042 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018043 local_pAllocator = nullptr;
18044 if (pAllocator)
18045 {
18046 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18047 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18048 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018049 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018050 countingStream->rewind();
18051 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018052 uint64_t cgen_var_1386;
18053 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1386, 1);
18054 countingStream->write((uint64_t*)&cgen_var_1386, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018055 marshal_VkDebugUtilsMessengerCreateInfoEXT(countingStream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018056 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018057 uint64_t cgen_var_1387 = (uint64_t)(uintptr_t)local_pAllocator;
18058 countingStream->putBe64(cgen_var_1387);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018059 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018060 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018061 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018062 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080018063 uint64_t cgen_var_1388;
18064 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1388, 1);
18065 countingStream->write((uint64_t*)&cgen_var_1388, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018066 }
18067 uint32_t packetSize_vkCreateDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18068 countingStream->rewind();
18069 uint32_t opcode_vkCreateDebugUtilsMessengerEXT = OP_vkCreateDebugUtilsMessengerEXT;
18070 stream->write(&opcode_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
18071 stream->write(&packetSize_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018072 uint64_t cgen_var_1389;
18073 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1389, 1);
18074 stream->write((uint64_t*)&cgen_var_1389, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018075 marshal_VkDebugUtilsMessengerCreateInfoEXT(stream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018076 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018077 uint64_t cgen_var_1390 = (uint64_t)(uintptr_t)local_pAllocator;
18078 stream->putBe64(cgen_var_1390);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018079 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018080 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018081 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018082 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018083 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080018084 uint64_t cgen_var_1391;
18085 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1391, 1);
18086 stream->write((uint64_t*)&cgen_var_1391, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018087 stream->setHandleMapping(resources->unwrapMapping());
18088 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080018089 uint64_t cgen_var_1392;
18090 stream->read((uint64_t*)&cgen_var_1392, 8);
18091 stream->handleMapping()->mapHandles_u64_VkDebugUtilsMessengerEXT(&cgen_var_1392, (VkDebugUtilsMessengerEXT*)pMessenger, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018092 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018093 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
18094 stream->read(&vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018095 countingStream->clearPool();
18096 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018097 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018098 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
18099}
18100
18101void VkEncoder::vkDestroyDebugUtilsMessengerEXT(
18102 VkInstance instance,
18103 VkDebugUtilsMessengerEXT messenger,
18104 const VkAllocationCallbacks* pAllocator)
18105{
18106 auto stream = mImpl->stream();
18107 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018108 auto resources = mImpl->resources();
18109 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018110 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018111 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018112 VkDebugUtilsMessengerEXT local_messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018113 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018114 local_instance = instance;
18115 local_messenger = messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018116 local_pAllocator = nullptr;
18117 if (pAllocator)
18118 {
18119 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18120 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18121 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018122 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018123 countingStream->rewind();
18124 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018125 uint64_t cgen_var_1393;
18126 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1393, 1);
18127 countingStream->write((uint64_t*)&cgen_var_1393, 1 * 8);
18128 uint64_t cgen_var_1394;
18129 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1394, 1);
18130 countingStream->write((uint64_t*)&cgen_var_1394, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018131 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018132 uint64_t cgen_var_1395 = (uint64_t)(uintptr_t)local_pAllocator;
18133 countingStream->putBe64(cgen_var_1395);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018134 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018135 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018136 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018137 }
18138 }
18139 uint32_t packetSize_vkDestroyDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18140 countingStream->rewind();
18141 uint32_t opcode_vkDestroyDebugUtilsMessengerEXT = OP_vkDestroyDebugUtilsMessengerEXT;
18142 stream->write(&opcode_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
18143 stream->write(&packetSize_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018144 uint64_t cgen_var_1396;
18145 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1396, 1);
18146 stream->write((uint64_t*)&cgen_var_1396, 1 * 8);
18147 uint64_t cgen_var_1397;
18148 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1397, 1);
18149 stream->write((uint64_t*)&cgen_var_1397, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018150 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018151 uint64_t cgen_var_1398 = (uint64_t)(uintptr_t)local_pAllocator;
18152 stream->putBe64(cgen_var_1398);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018153 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018154 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018155 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018156 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018157 resources->destroyMapping()->mapHandles_VkDebugUtilsMessengerEXT((VkDebugUtilsMessengerEXT*)&messenger);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018158}
18159
18160void VkEncoder::vkSubmitDebugUtilsMessageEXT(
18161 VkInstance instance,
18162 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
18163 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
18164 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
18165{
18166 auto stream = mImpl->stream();
18167 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018168 auto resources = mImpl->resources();
18169 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018170 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018171 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018172 VkDebugUtilsMessageSeverityFlagBitsEXT local_messageSeverity;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018173 VkDebugUtilsMessageTypeFlagsEXT local_messageTypes;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018174 VkDebugUtilsMessengerCallbackDataEXT* local_pCallbackData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018175 local_instance = instance;
18176 local_messageSeverity = messageSeverity;
18177 local_messageTypes = messageTypes;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018178 local_pCallbackData = nullptr;
18179 if (pCallbackData)
18180 {
18181 local_pCallbackData = (VkDebugUtilsMessengerCallbackDataEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCallbackDataEXT));
18182 deepcopy_VkDebugUtilsMessengerCallbackDataEXT(pool, pCallbackData, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
18183 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018184 countingStream->rewind();
18185 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018186 uint64_t cgen_var_1399;
18187 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1399, 1);
18188 countingStream->write((uint64_t*)&cgen_var_1399, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018189 countingStream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
18190 countingStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
18191 marshal_VkDebugUtilsMessengerCallbackDataEXT(countingStream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018192 }
18193 uint32_t packetSize_vkSubmitDebugUtilsMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18194 countingStream->rewind();
18195 uint32_t opcode_vkSubmitDebugUtilsMessageEXT = OP_vkSubmitDebugUtilsMessageEXT;
18196 stream->write(&opcode_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
18197 stream->write(&packetSize_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018198 uint64_t cgen_var_1400;
18199 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1400, 1);
18200 stream->write((uint64_t*)&cgen_var_1400, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018201 stream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
18202 stream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
18203 marshal_VkDebugUtilsMessengerCallbackDataEXT(stream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018204}
18205
18206#endif
18207#ifdef VK_ANDROID_external_memory_android_hardware_buffer
18208VkResult VkEncoder::vkGetAndroidHardwareBufferPropertiesANDROID(
18209 VkDevice device,
18210 const AHardwareBuffer* buffer,
18211 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
18212{
18213 auto stream = mImpl->stream();
18214 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018215 auto resources = mImpl->resources();
18216 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018217 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018218 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018219 AHardwareBuffer* local_buffer;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018220 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018221 local_buffer = nullptr;
18222 if (buffer)
18223 {
18224 local_buffer = (AHardwareBuffer*)pool->dupArray(buffer, sizeof(const AHardwareBuffer));
18225 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018226 countingStream->rewind();
18227 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018228 uint64_t cgen_var_1401;
18229 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1401, 1);
18230 countingStream->write((uint64_t*)&cgen_var_1401, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018231 countingStream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018232 marshal_VkAndroidHardwareBufferPropertiesANDROID(countingStream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
18233 }
18234 uint32_t packetSize_vkGetAndroidHardwareBufferPropertiesANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18235 countingStream->rewind();
18236 uint32_t opcode_vkGetAndroidHardwareBufferPropertiesANDROID = OP_vkGetAndroidHardwareBufferPropertiesANDROID;
18237 stream->write(&opcode_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
18238 stream->write(&packetSize_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018239 uint64_t cgen_var_1402;
18240 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1402, 1);
18241 stream->write((uint64_t*)&cgen_var_1402, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018242 stream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018243 marshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
18244 unmarshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
18245 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
18246 stream->read(&vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018247 countingStream->clearPool();
18248 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018249 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018250 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
18251}
18252
18253VkResult VkEncoder::vkGetMemoryAndroidHardwareBufferANDROID(
18254 VkDevice device,
18255 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
18256 AHardwareBuffer** pBuffer)
18257{
18258 auto stream = mImpl->stream();
18259 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018260 auto resources = mImpl->resources();
18261 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018262 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018263 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018264 VkMemoryGetAndroidHardwareBufferInfoANDROID* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018265 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018266 local_pInfo = nullptr;
18267 if (pInfo)
18268 {
18269 local_pInfo = (VkMemoryGetAndroidHardwareBufferInfoANDROID*)pool->alloc(sizeof(const VkMemoryGetAndroidHardwareBufferInfoANDROID));
18270 deepcopy_VkMemoryGetAndroidHardwareBufferInfoANDROID(pool, pInfo, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
18271 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018272 countingStream->rewind();
18273 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018274 uint64_t cgen_var_1403;
18275 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1403, 1);
18276 countingStream->write((uint64_t*)&cgen_var_1403, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018277 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(countingStream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018278 countingStream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
18279 }
18280 uint32_t packetSize_vkGetMemoryAndroidHardwareBufferANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18281 countingStream->rewind();
18282 uint32_t opcode_vkGetMemoryAndroidHardwareBufferANDROID = OP_vkGetMemoryAndroidHardwareBufferANDROID;
18283 stream->write(&opcode_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
18284 stream->write(&packetSize_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018285 uint64_t cgen_var_1404;
18286 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1404, 1);
18287 stream->write((uint64_t*)&cgen_var_1404, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018288 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(stream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018289 stream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
18290 stream->read((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
18291 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
18292 stream->read(&vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018293 countingStream->clearPool();
18294 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018295 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018296 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
18297}
18298
18299#endif
18300#ifdef VK_EXT_sampler_filter_minmax
18301#endif
18302#ifdef VK_AMD_gpu_shader_int16
18303#endif
18304#ifdef VK_AMD_mixed_attachment_samples
18305#endif
18306#ifdef VK_AMD_shader_fragment_mask
18307#endif
18308#ifdef VK_EXT_shader_stencil_export
18309#endif
18310#ifdef VK_EXT_sample_locations
18311void VkEncoder::vkCmdSetSampleLocationsEXT(
18312 VkCommandBuffer commandBuffer,
18313 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
18314{
18315 auto stream = mImpl->stream();
18316 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018317 auto resources = mImpl->resources();
18318 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018319 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018320 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018321 VkSampleLocationsInfoEXT* local_pSampleLocationsInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018322 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018323 local_pSampleLocationsInfo = nullptr;
18324 if (pSampleLocationsInfo)
18325 {
18326 local_pSampleLocationsInfo = (VkSampleLocationsInfoEXT*)pool->alloc(sizeof(const VkSampleLocationsInfoEXT));
18327 deepcopy_VkSampleLocationsInfoEXT(pool, pSampleLocationsInfo, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
18328 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018329 countingStream->rewind();
18330 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018331 uint64_t cgen_var_1405;
18332 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1405, 1);
18333 countingStream->write((uint64_t*)&cgen_var_1405, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018334 marshal_VkSampleLocationsInfoEXT(countingStream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018335 }
18336 uint32_t packetSize_vkCmdSetSampleLocationsEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18337 countingStream->rewind();
18338 uint32_t opcode_vkCmdSetSampleLocationsEXT = OP_vkCmdSetSampleLocationsEXT;
18339 stream->write(&opcode_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
18340 stream->write(&packetSize_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018341 uint64_t cgen_var_1406;
18342 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1406, 1);
18343 stream->write((uint64_t*)&cgen_var_1406, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018344 marshal_VkSampleLocationsInfoEXT(stream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018345}
18346
18347void VkEncoder::vkGetPhysicalDeviceMultisamplePropertiesEXT(
18348 VkPhysicalDevice physicalDevice,
18349 VkSampleCountFlagBits samples,
18350 VkMultisamplePropertiesEXT* pMultisampleProperties)
18351{
18352 auto stream = mImpl->stream();
18353 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018354 auto resources = mImpl->resources();
18355 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018356 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018357 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018358 VkSampleCountFlagBits local_samples;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018359 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018360 local_samples = samples;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018361 countingStream->rewind();
18362 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018363 uint64_t cgen_var_1407;
18364 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1407, 1);
18365 countingStream->write((uint64_t*)&cgen_var_1407, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018366 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018367 marshal_VkMultisamplePropertiesEXT(countingStream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
18368 }
18369 uint32_t packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18370 countingStream->rewind();
18371 uint32_t opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT = OP_vkGetPhysicalDeviceMultisamplePropertiesEXT;
18372 stream->write(&opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
18373 stream->write(&packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018374 uint64_t cgen_var_1408;
18375 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1408, 1);
18376 stream->write((uint64_t*)&cgen_var_1408, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018377 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018378 marshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
18379 unmarshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
18380}
18381
18382#endif
18383#ifdef VK_EXT_blend_operation_advanced
18384#endif
18385#ifdef VK_NV_fragment_coverage_to_color
18386#endif
18387#ifdef VK_NV_framebuffer_mixed_samples
18388#endif
18389#ifdef VK_NV_fill_rectangle
18390#endif
18391#ifdef VK_EXT_post_depth_coverage
18392#endif
18393#ifdef VK_EXT_validation_cache
18394VkResult VkEncoder::vkCreateValidationCacheEXT(
18395 VkDevice device,
18396 const VkValidationCacheCreateInfoEXT* pCreateInfo,
18397 const VkAllocationCallbacks* pAllocator,
18398 VkValidationCacheEXT* pValidationCache)
18399{
18400 auto stream = mImpl->stream();
18401 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018402 auto resources = mImpl->resources();
18403 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018404 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018405 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018406 VkValidationCacheCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018407 VkAllocationCallbacks* local_pAllocator;
18408 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018409 local_pCreateInfo = nullptr;
18410 if (pCreateInfo)
18411 {
18412 local_pCreateInfo = (VkValidationCacheCreateInfoEXT*)pool->alloc(sizeof(const VkValidationCacheCreateInfoEXT));
18413 deepcopy_VkValidationCacheCreateInfoEXT(pool, pCreateInfo, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
18414 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018415 local_pAllocator = nullptr;
18416 if (pAllocator)
18417 {
18418 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18419 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18420 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018421 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018422 countingStream->rewind();
18423 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018424 uint64_t cgen_var_1409;
18425 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1409, 1);
18426 countingStream->write((uint64_t*)&cgen_var_1409, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018427 marshal_VkValidationCacheCreateInfoEXT(countingStream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018428 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018429 uint64_t cgen_var_1410 = (uint64_t)(uintptr_t)local_pAllocator;
18430 countingStream->putBe64(cgen_var_1410);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018431 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018432 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018433 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018434 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080018435 uint64_t cgen_var_1411;
18436 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1411, 1);
18437 countingStream->write((uint64_t*)&cgen_var_1411, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018438 }
18439 uint32_t packetSize_vkCreateValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18440 countingStream->rewind();
18441 uint32_t opcode_vkCreateValidationCacheEXT = OP_vkCreateValidationCacheEXT;
18442 stream->write(&opcode_vkCreateValidationCacheEXT, sizeof(uint32_t));
18443 stream->write(&packetSize_vkCreateValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018444 uint64_t cgen_var_1412;
18445 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1412, 1);
18446 stream->write((uint64_t*)&cgen_var_1412, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018447 marshal_VkValidationCacheCreateInfoEXT(stream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018448 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018449 uint64_t cgen_var_1413 = (uint64_t)(uintptr_t)local_pAllocator;
18450 stream->putBe64(cgen_var_1413);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018451 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018452 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018453 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018454 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018455 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080018456 uint64_t cgen_var_1414;
18457 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1414, 1);
18458 stream->write((uint64_t*)&cgen_var_1414, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018459 stream->setHandleMapping(resources->unwrapMapping());
18460 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080018461 uint64_t cgen_var_1415;
18462 stream->read((uint64_t*)&cgen_var_1415, 8);
18463 stream->handleMapping()->mapHandles_u64_VkValidationCacheEXT(&cgen_var_1415, (VkValidationCacheEXT*)pValidationCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018464 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018465 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
18466 stream->read(&vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018467 countingStream->clearPool();
18468 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018469 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018470 return vkCreateValidationCacheEXT_VkResult_return;
18471}
18472
18473void VkEncoder::vkDestroyValidationCacheEXT(
18474 VkDevice device,
18475 VkValidationCacheEXT validationCache,
18476 const VkAllocationCallbacks* pAllocator)
18477{
18478 auto stream = mImpl->stream();
18479 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018480 auto resources = mImpl->resources();
18481 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018482 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018483 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018484 VkValidationCacheEXT local_validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018485 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018486 local_device = device;
18487 local_validationCache = validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018488 local_pAllocator = nullptr;
18489 if (pAllocator)
18490 {
18491 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18492 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18493 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018494 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018495 countingStream->rewind();
18496 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018497 uint64_t cgen_var_1416;
18498 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1416, 1);
18499 countingStream->write((uint64_t*)&cgen_var_1416, 1 * 8);
18500 uint64_t cgen_var_1417;
18501 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1417, 1);
18502 countingStream->write((uint64_t*)&cgen_var_1417, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018503 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018504 uint64_t cgen_var_1418 = (uint64_t)(uintptr_t)local_pAllocator;
18505 countingStream->putBe64(cgen_var_1418);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018506 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018507 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018508 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018509 }
18510 }
18511 uint32_t packetSize_vkDestroyValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18512 countingStream->rewind();
18513 uint32_t opcode_vkDestroyValidationCacheEXT = OP_vkDestroyValidationCacheEXT;
18514 stream->write(&opcode_vkDestroyValidationCacheEXT, sizeof(uint32_t));
18515 stream->write(&packetSize_vkDestroyValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018516 uint64_t cgen_var_1419;
18517 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1419, 1);
18518 stream->write((uint64_t*)&cgen_var_1419, 1 * 8);
18519 uint64_t cgen_var_1420;
18520 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1420, 1);
18521 stream->write((uint64_t*)&cgen_var_1420, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018522 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018523 uint64_t cgen_var_1421 = (uint64_t)(uintptr_t)local_pAllocator;
18524 stream->putBe64(cgen_var_1421);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018525 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018526 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018527 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018528 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018529 resources->destroyMapping()->mapHandles_VkValidationCacheEXT((VkValidationCacheEXT*)&validationCache);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018530}
18531
18532VkResult VkEncoder::vkMergeValidationCachesEXT(
18533 VkDevice device,
18534 VkValidationCacheEXT dstCache,
18535 uint32_t srcCacheCount,
18536 const VkValidationCacheEXT* pSrcCaches)
18537{
18538 auto stream = mImpl->stream();
18539 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018540 auto resources = mImpl->resources();
18541 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018542 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018543 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018544 VkValidationCacheEXT local_dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018545 uint32_t local_srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018546 VkValidationCacheEXT* local_pSrcCaches;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018547 local_device = device;
18548 local_dstCache = dstCache;
18549 local_srcCacheCount = srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018550 local_pSrcCaches = nullptr;
18551 if (pSrcCaches)
18552 {
18553 local_pSrcCaches = (VkValidationCacheEXT*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
18554 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018555 countingStream->rewind();
18556 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018557 uint64_t cgen_var_1422;
18558 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1422, 1);
18559 countingStream->write((uint64_t*)&cgen_var_1422, 1 * 8);
18560 uint64_t cgen_var_1423;
18561 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1423, 1);
18562 countingStream->write((uint64_t*)&cgen_var_1423, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018563 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018564 if (((srcCacheCount)))
18565 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018566 uint64_t* cgen_var_1424;
18567 countingStream->alloc((void**)&cgen_var_1424, ((srcCacheCount)) * 8);
18568 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1424, ((srcCacheCount)));
18569 countingStream->write((uint64_t*)cgen_var_1424, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080018570 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018571 }
18572 uint32_t packetSize_vkMergeValidationCachesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18573 countingStream->rewind();
18574 uint32_t opcode_vkMergeValidationCachesEXT = OP_vkMergeValidationCachesEXT;
18575 stream->write(&opcode_vkMergeValidationCachesEXT, sizeof(uint32_t));
18576 stream->write(&packetSize_vkMergeValidationCachesEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018577 uint64_t cgen_var_1425;
18578 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1425, 1);
18579 stream->write((uint64_t*)&cgen_var_1425, 1 * 8);
18580 uint64_t cgen_var_1426;
18581 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1426, 1);
18582 stream->write((uint64_t*)&cgen_var_1426, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018583 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018584 if (((srcCacheCount)))
18585 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018586 uint64_t* cgen_var_1427;
18587 stream->alloc((void**)&cgen_var_1427, ((srcCacheCount)) * 8);
18588 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1427, ((srcCacheCount)));
18589 stream->write((uint64_t*)cgen_var_1427, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080018590 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018591 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
18592 stream->read(&vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018593 countingStream->clearPool();
18594 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018595 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018596 return vkMergeValidationCachesEXT_VkResult_return;
18597}
18598
18599VkResult VkEncoder::vkGetValidationCacheDataEXT(
18600 VkDevice device,
18601 VkValidationCacheEXT validationCache,
18602 size_t* pDataSize,
18603 void* pData)
18604{
18605 auto stream = mImpl->stream();
18606 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018607 auto resources = mImpl->resources();
18608 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018609 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018610 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018611 VkValidationCacheEXT local_validationCache;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018612 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018613 local_validationCache = validationCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018614 countingStream->rewind();
18615 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018616 uint64_t cgen_var_1428;
18617 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1428, 1);
18618 countingStream->write((uint64_t*)&cgen_var_1428, 1 * 8);
18619 uint64_t cgen_var_1429;
18620 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1429, 1);
18621 countingStream->write((uint64_t*)&cgen_var_1429, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018622 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018623 uint64_t cgen_var_1430 = (uint64_t)(uintptr_t)pDataSize;
18624 countingStream->putBe64(cgen_var_1430);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018625 if (pDataSize)
18626 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018627 uint64_t cgen_var_1431 = (uint64_t)(*pDataSize);
18628 countingStream->putBe64(cgen_var_1431);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018629 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018630 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018631 uint64_t cgen_var_1432 = (uint64_t)(uintptr_t)pData;
18632 countingStream->putBe64(cgen_var_1432);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018633 if (pData)
18634 {
18635 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
18636 }
18637 }
18638 uint32_t packetSize_vkGetValidationCacheDataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18639 countingStream->rewind();
18640 uint32_t opcode_vkGetValidationCacheDataEXT = OP_vkGetValidationCacheDataEXT;
18641 stream->write(&opcode_vkGetValidationCacheDataEXT, sizeof(uint32_t));
18642 stream->write(&packetSize_vkGetValidationCacheDataEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018643 uint64_t cgen_var_1433;
18644 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1433, 1);
18645 stream->write((uint64_t*)&cgen_var_1433, 1 * 8);
18646 uint64_t cgen_var_1434;
18647 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1434, 1);
18648 stream->write((uint64_t*)&cgen_var_1434, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018649 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018650 uint64_t cgen_var_1435 = (uint64_t)(uintptr_t)pDataSize;
18651 stream->putBe64(cgen_var_1435);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018652 if (pDataSize)
18653 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018654 uint64_t cgen_var_1436 = (uint64_t)(*pDataSize);
18655 stream->putBe64(cgen_var_1436);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018656 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018657 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018658 uint64_t cgen_var_1437 = (uint64_t)(uintptr_t)pData;
18659 stream->putBe64(cgen_var_1437);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018660 if (pData)
18661 {
18662 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
18663 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018664 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018665 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018666 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018667 if (pDataSize)
18668 {
18669 if (!(check_pDataSize))
18670 {
18671 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
18672 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018673 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018674 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018675 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018676 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018677 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018678 if (pData)
18679 {
18680 if (!(check_pData))
18681 {
18682 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
18683 }
18684 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
18685 }
18686 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
18687 stream->read(&vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018688 countingStream->clearPool();
18689 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018690 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018691 return vkGetValidationCacheDataEXT_VkResult_return;
18692}
18693
18694#endif
18695#ifdef VK_EXT_descriptor_indexing
18696#endif
18697#ifdef VK_EXT_shader_viewport_index_layer
18698#endif
18699#ifdef VK_EXT_global_priority
18700#endif
18701#ifdef VK_EXT_external_memory_host
18702VkResult VkEncoder::vkGetMemoryHostPointerPropertiesEXT(
18703 VkDevice device,
18704 VkExternalMemoryHandleTypeFlagBits handleType,
18705 const void* pHostPointer,
18706 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
18707{
18708 auto stream = mImpl->stream();
18709 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018710 auto resources = mImpl->resources();
18711 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018712 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018713 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018714 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018715 void* local_pHostPointer;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018716 local_device = device;
18717 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018718 local_pHostPointer = nullptr;
18719 if (pHostPointer)
18720 {
18721 local_pHostPointer = (void*)pool->dupArray(pHostPointer, sizeof(const uint8_t));
18722 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018723 countingStream->rewind();
18724 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018725 uint64_t cgen_var_1441;
18726 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1441, 1);
18727 countingStream->write((uint64_t*)&cgen_var_1441, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018728 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018729 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018730 uint64_t cgen_var_1442 = (uint64_t)(uintptr_t)local_pHostPointer;
18731 countingStream->putBe64(cgen_var_1442);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018732 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018733 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018734 countingStream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018735 }
18736 marshal_VkMemoryHostPointerPropertiesEXT(countingStream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
18737 }
18738 uint32_t packetSize_vkGetMemoryHostPointerPropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18739 countingStream->rewind();
18740 uint32_t opcode_vkGetMemoryHostPointerPropertiesEXT = OP_vkGetMemoryHostPointerPropertiesEXT;
18741 stream->write(&opcode_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
18742 stream->write(&packetSize_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018743 uint64_t cgen_var_1443;
18744 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1443, 1);
18745 stream->write((uint64_t*)&cgen_var_1443, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018746 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018747 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018748 uint64_t cgen_var_1444 = (uint64_t)(uintptr_t)local_pHostPointer;
18749 stream->putBe64(cgen_var_1444);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018750 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018751 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018752 stream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018753 }
18754 marshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
18755 unmarshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
18756 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
18757 stream->read(&vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018758 countingStream->clearPool();
18759 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018760 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018761 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
18762}
18763
18764#endif
18765#ifdef VK_AMD_buffer_marker
18766void VkEncoder::vkCmdWriteBufferMarkerAMD(
18767 VkCommandBuffer commandBuffer,
18768 VkPipelineStageFlagBits pipelineStage,
18769 VkBuffer dstBuffer,
18770 VkDeviceSize dstOffset,
18771 uint32_t marker)
18772{
18773 auto stream = mImpl->stream();
18774 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018775 auto resources = mImpl->resources();
18776 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018777 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018778 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018779 VkPipelineStageFlagBits local_pipelineStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018780 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018781 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018782 uint32_t local_marker;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018783 local_commandBuffer = commandBuffer;
18784 local_pipelineStage = pipelineStage;
18785 local_dstBuffer = dstBuffer;
18786 local_dstOffset = dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018787 local_marker = marker;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018788 countingStream->rewind();
18789 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018790 uint64_t cgen_var_1445;
18791 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1445, 1);
18792 countingStream->write((uint64_t*)&cgen_var_1445, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018793 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018794 uint64_t cgen_var_1446;
18795 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1446, 1);
18796 countingStream->write((uint64_t*)&cgen_var_1446, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018797 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
18798 countingStream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018799 }
18800 uint32_t packetSize_vkCmdWriteBufferMarkerAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18801 countingStream->rewind();
18802 uint32_t opcode_vkCmdWriteBufferMarkerAMD = OP_vkCmdWriteBufferMarkerAMD;
18803 stream->write(&opcode_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
18804 stream->write(&packetSize_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018805 uint64_t cgen_var_1447;
18806 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1447, 1);
18807 stream->write((uint64_t*)&cgen_var_1447, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018808 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018809 uint64_t cgen_var_1448;
18810 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1448, 1);
18811 stream->write((uint64_t*)&cgen_var_1448, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018812 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
18813 stream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018814}
18815
18816#endif
18817#ifdef VK_AMD_shader_core_properties
18818#endif
18819#ifdef VK_EXT_vertex_attribute_divisor
18820#endif
18821#ifdef VK_NV_shader_subgroup_partitioned
18822#endif
18823#ifdef VK_NV_device_diagnostic_checkpoints
18824void VkEncoder::vkCmdSetCheckpointNV(
18825 VkCommandBuffer commandBuffer,
18826 const void* pCheckpointMarker)
18827{
18828 auto stream = mImpl->stream();
18829 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018830 auto resources = mImpl->resources();
18831 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018832 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018833 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018834 void* local_pCheckpointMarker;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018835 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018836 local_pCheckpointMarker = nullptr;
18837 if (pCheckpointMarker)
18838 {
18839 local_pCheckpointMarker = (void*)pool->dupArray(pCheckpointMarker, sizeof(const uint8_t));
18840 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018841 countingStream->rewind();
18842 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018843 uint64_t cgen_var_1449;
18844 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1449, 1);
18845 countingStream->write((uint64_t*)&cgen_var_1449, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018846 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018847 uint64_t cgen_var_1450 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
18848 countingStream->putBe64(cgen_var_1450);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018849 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018850 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018851 countingStream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018852 }
18853 }
18854 uint32_t packetSize_vkCmdSetCheckpointNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18855 countingStream->rewind();
18856 uint32_t opcode_vkCmdSetCheckpointNV = OP_vkCmdSetCheckpointNV;
18857 stream->write(&opcode_vkCmdSetCheckpointNV, sizeof(uint32_t));
18858 stream->write(&packetSize_vkCmdSetCheckpointNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018859 uint64_t cgen_var_1451;
18860 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1451, 1);
18861 stream->write((uint64_t*)&cgen_var_1451, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018862 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018863 uint64_t cgen_var_1452 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
18864 stream->putBe64(cgen_var_1452);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018865 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018866 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018867 stream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018868 }
18869}
18870
18871void VkEncoder::vkGetQueueCheckpointDataNV(
18872 VkQueue queue,
18873 uint32_t* pCheckpointDataCount,
18874 VkCheckpointDataNV* pCheckpointData)
18875{
18876 auto stream = mImpl->stream();
18877 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018878 auto resources = mImpl->resources();
18879 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018880 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018881 VkQueue local_queue;
18882 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018883 countingStream->rewind();
18884 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018885 uint64_t cgen_var_1453;
18886 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1453, 1);
18887 countingStream->write((uint64_t*)&cgen_var_1453, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018888 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018889 uint64_t cgen_var_1454 = (uint64_t)(uintptr_t)pCheckpointDataCount;
18890 countingStream->putBe64(cgen_var_1454);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018891 if (pCheckpointDataCount)
18892 {
18893 countingStream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
18894 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018895 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018896 uint64_t cgen_var_1455 = (uint64_t)(uintptr_t)pCheckpointData;
18897 countingStream->putBe64(cgen_var_1455);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018898 if (pCheckpointData)
18899 {
18900 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
18901 {
18902 marshal_VkCheckpointDataNV(countingStream, (VkCheckpointDataNV*)(pCheckpointData + i));
18903 }
18904 }
18905 }
18906 uint32_t packetSize_vkGetQueueCheckpointDataNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18907 countingStream->rewind();
18908 uint32_t opcode_vkGetQueueCheckpointDataNV = OP_vkGetQueueCheckpointDataNV;
18909 stream->write(&opcode_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
18910 stream->write(&packetSize_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018911 uint64_t cgen_var_1456;
18912 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1456, 1);
18913 stream->write((uint64_t*)&cgen_var_1456, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018914 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018915 uint64_t cgen_var_1457 = (uint64_t)(uintptr_t)pCheckpointDataCount;
18916 stream->putBe64(cgen_var_1457);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018917 if (pCheckpointDataCount)
18918 {
18919 stream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
18920 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018921 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018922 uint64_t cgen_var_1458 = (uint64_t)(uintptr_t)pCheckpointData;
18923 stream->putBe64(cgen_var_1458);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018924 if (pCheckpointData)
18925 {
18926 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
18927 {
18928 marshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
18929 }
18930 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018931 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018932 uint32_t* check_pCheckpointDataCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018933 check_pCheckpointDataCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018934 if (pCheckpointDataCount)
18935 {
18936 if (!(check_pCheckpointDataCount))
18937 {
18938 fprintf(stderr, "fatal: pCheckpointDataCount inconsistent between guest and host\n");
18939 }
18940 stream->read((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
18941 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018942 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018943 VkCheckpointDataNV* check_pCheckpointData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018944 check_pCheckpointData = (VkCheckpointDataNV*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018945 if (pCheckpointData)
18946 {
18947 if (!(check_pCheckpointData))
18948 {
18949 fprintf(stderr, "fatal: pCheckpointData inconsistent between guest and host\n");
18950 }
18951 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
18952 {
18953 unmarshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
18954 }
18955 }
18956}
18957
18958#endif
18959
Lingfeng Yangb1d90102018-11-29 16:10:36 -080018960} // namespace goldfish_vk