blob: 7b9e989b1af149871f14fb2cc4dafece0f861d83 [file] [log] [blame]
Lingfeng Yang6a283672018-11-01 13:37:56 -07001// Copyright (C) 2018 The Android Open Source Project
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002// Copyright (C) 2018 Google Inc.
Lingfeng Yang6a283672018-11-01 13:37:56 -07003//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015
16// Autogenerated module VkEncoder
17// (impl) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
18// Please do not modify directly;
19// re-run android/scripts/generate-vulkan-sources.sh,
20// or directly from Python by defining:
21// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
22// CEREAL_OUTPUT_DIR: Where to put the generated sources.
23// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
24
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070025#include "VkEncoder.h"
Lingfeng Yang6a283672018-11-01 13:37:56 -070026
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070027
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070028#include "IOStream.h"
Lingfeng Yange30d3382018-11-09 08:24:37 -080029#include "Resources.h"
Lingfeng Yang71b596b2018-11-07 18:03:25 -080030#include "ResourceTracker.h"
Lingfeng Yang60b411d2018-11-29 00:26:45 -080031#include "Validation.h"
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070032#include "VulkanStream.h"
33
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080034#include "android/base/AlignedBuf.h"
Lingfeng Yang71b596b2018-11-07 18:03:25 -080035#include "android/base/Pool.h"
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080036
Lingfeng Yange71c6422018-11-01 19:29:49 -070037#include "goldfish_vk_marshaling_guest.h"
Lingfeng Yang71b596b2018-11-07 18:03:25 -080038#include "goldfish_vk_deepcopy_guest.h"
39#include "goldfish_vk_handlemap_guest.h"
Lingfeng Yang808a6312018-11-13 21:06:15 -080040#include "goldfish_vk_private_defs.h"
Lingfeng Yang62b23322018-12-24 12:45:47 -080041#include "goldfish_vk_transform.h"
Lingfeng Yange71c6422018-11-01 19:29:49 -070042
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070043
Lingfeng Yangb1d90102018-11-29 16:10:36 -080044namespace goldfish_vk {
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070045
46
47
Lingfeng Yang71b596b2018-11-07 18:03:25 -080048using namespace goldfish_vk;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070049
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080050using android::aligned_buf_alloc;
51using android::aligned_buf_free;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080052using android::base::Pool;
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080053
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070054class VkEncoder::Impl {
55public:
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070056 Impl(IOStream* stream) : m_stream(stream) { }
57 VulkanCountingStream* countingStream() { return &m_countingStream; }
58 VulkanStream* stream() { return &m_stream; }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080059 Pool* pool() { return &m_pool; }
60 ResourceTracker* resources() { return ResourceTracker::get(); }
Lingfeng Yang29c99d92018-11-30 11:15:29 -080061 Validation* validation() { return &m_validation; }
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070062private:
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070063 VulkanCountingStream m_countingStream;
64 VulkanStream m_stream;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080065 Pool m_pool { 8, 4096, 64 };
Lingfeng Yang29c99d92018-11-30 11:15:29 -080066
67 Validation m_validation;
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070068};
69
70VkEncoder::VkEncoder(IOStream *stream) :
71 mImpl(new VkEncoder::Impl(stream)) { }
Lingfeng Yang60b411d2018-11-29 00:26:45 -080072
73#define VALIDATE_RET(retType, success, validate) \
74 retType goldfish_vk_validateResult = validate; \
75 if (goldfish_vk_validateResult != success) return goldfish_vk_validateResult; \
76
77#define VALIDATE_VOID(validate) \
78 VkResult goldfish_vk_validateResult = validate; \
79 if (goldfish_vk_validateResult != VK_SUCCESS) return; \
80
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070081#ifdef VK_VERSION_1_0
82VkResult VkEncoder::vkCreateInstance(
83 const VkInstanceCreateInfo* pCreateInfo,
84 const VkAllocationCallbacks* pAllocator,
85 VkInstance* pInstance)
86{
87 auto stream = mImpl->stream();
88 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080089 auto resources = mImpl->resources();
90 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080091 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080092 VkInstanceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080093 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080094 local_pCreateInfo = nullptr;
95 if (pCreateInfo)
96 {
97 local_pCreateInfo = (VkInstanceCreateInfo*)pool->alloc(sizeof(const VkInstanceCreateInfo));
98 deepcopy_VkInstanceCreateInfo(pool, pCreateInfo, (VkInstanceCreateInfo*)(local_pCreateInfo));
99 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800100 local_pAllocator = nullptr;
101 if (pAllocator)
102 {
103 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
104 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
105 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800106 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -0800107 if (local_pCreateInfo)
108 {
Lingfeng Yang97a06702018-12-24 17:02:43 -0800109 transform_tohost_VkInstanceCreateInfo(mImpl->resources(), (VkInstanceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -0800110 }
111 if (local_pAllocator)
112 {
Lingfeng Yang97a06702018-12-24 17:02:43 -0800113 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -0800114 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700115 countingStream->rewind();
116 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800117 marshal_VkInstanceCreateInfo(countingStream, (VkInstanceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800118 // WARNING PTR CHECK
119 uint64_t cgen_var_0 = (uint64_t)(uintptr_t)local_pAllocator;
120 countingStream->putBe64(cgen_var_0);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800121 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700122 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800123 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700124 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800125 uint64_t cgen_var_1;
126 countingStream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_1, 1);
127 countingStream->write((uint64_t*)&cgen_var_1, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700128 }
129 uint32_t packetSize_vkCreateInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
130 countingStream->rewind();
131 uint32_t opcode_vkCreateInstance = OP_vkCreateInstance;
132 stream->write(&opcode_vkCreateInstance, sizeof(uint32_t));
133 stream->write(&packetSize_vkCreateInstance, sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800134 marshal_VkInstanceCreateInfo(stream, (VkInstanceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800135 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800136 uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator;
137 stream->putBe64(cgen_var_2);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800138 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700139 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800140 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700141 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800142 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -0800143 uint64_t cgen_var_3;
144 stream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_3, 1);
145 stream->write((uint64_t*)&cgen_var_3, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800146 stream->setHandleMapping(resources->unwrapMapping());
147 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -0800148 uint64_t cgen_var_4;
149 stream->read((uint64_t*)&cgen_var_4, 8);
150 stream->handleMapping()->mapHandles_u64_VkInstance(&cgen_var_4, (VkInstance*)pInstance, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800151 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700152 VkResult vkCreateInstance_VkResult_return = (VkResult)0;
153 stream->read(&vkCreateInstance_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800154 countingStream->clearPool();
155 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800156 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700157 return vkCreateInstance_VkResult_return;
158}
159
160void VkEncoder::vkDestroyInstance(
161 VkInstance instance,
162 const VkAllocationCallbacks* pAllocator)
163{
164 auto stream = mImpl->stream();
165 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800166 auto resources = mImpl->resources();
167 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800168 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800169 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800170 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800171 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800172 local_pAllocator = nullptr;
173 if (pAllocator)
174 {
175 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
176 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
177 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800178 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -0800179 if (local_pAllocator)
180 {
Lingfeng Yang97a06702018-12-24 17:02:43 -0800181 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -0800182 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700183 countingStream->rewind();
184 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800185 uint64_t cgen_var_5;
186 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_5, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800187 countingStream->write((uint64_t*)&cgen_var_5, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800188 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800189 uint64_t cgen_var_6 = (uint64_t)(uintptr_t)local_pAllocator;
190 countingStream->putBe64(cgen_var_6);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800191 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700192 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800193 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700194 }
195 }
196 uint32_t packetSize_vkDestroyInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
197 countingStream->rewind();
198 uint32_t opcode_vkDestroyInstance = OP_vkDestroyInstance;
199 stream->write(&opcode_vkDestroyInstance, sizeof(uint32_t));
200 stream->write(&packetSize_vkDestroyInstance, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800201 uint64_t cgen_var_7;
202 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_7, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800203 stream->write((uint64_t*)&cgen_var_7, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800204 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800205 uint64_t cgen_var_8 = (uint64_t)(uintptr_t)local_pAllocator;
206 stream->putBe64(cgen_var_8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800207 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700208 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800209 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700210 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800211 resources->destroyMapping()->mapHandles_VkInstance((VkInstance*)&instance);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700212}
213
214VkResult VkEncoder::vkEnumeratePhysicalDevices(
215 VkInstance instance,
216 uint32_t* pPhysicalDeviceCount,
217 VkPhysicalDevice* pPhysicalDevices)
218{
219 auto stream = mImpl->stream();
220 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800221 auto resources = mImpl->resources();
222 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800223 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800224 VkInstance local_instance;
225 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700226 countingStream->rewind();
227 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800228 uint64_t cgen_var_9;
229 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_9, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800230 countingStream->write((uint64_t*)&cgen_var_9, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800231 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800232 uint64_t cgen_var_10 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
233 countingStream->putBe64(cgen_var_10);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700234 if (pPhysicalDeviceCount)
235 {
236 countingStream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
237 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800238 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800239 uint64_t cgen_var_11 = (uint64_t)(uintptr_t)pPhysicalDevices;
240 countingStream->putBe64(cgen_var_11);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700241 if (pPhysicalDevices)
242 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800243 if ((*(pPhysicalDeviceCount)))
244 {
245 uint64_t* cgen_var_12;
246 countingStream->alloc((void**)&cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
247 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_12, (*(pPhysicalDeviceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -0800248 countingStream->write((uint64_t*)cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800249 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700250 }
251 }
252 uint32_t packetSize_vkEnumeratePhysicalDevices = 4 + 4 + (uint32_t)countingStream->bytesWritten();
253 countingStream->rewind();
254 uint32_t opcode_vkEnumeratePhysicalDevices = OP_vkEnumeratePhysicalDevices;
255 stream->write(&opcode_vkEnumeratePhysicalDevices, sizeof(uint32_t));
256 stream->write(&packetSize_vkEnumeratePhysicalDevices, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800257 uint64_t cgen_var_13;
258 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_13, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800259 stream->write((uint64_t*)&cgen_var_13, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800260 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800261 uint64_t cgen_var_14 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
262 stream->putBe64(cgen_var_14);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700263 if (pPhysicalDeviceCount)
264 {
265 stream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
266 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800267 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800268 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800269 uint64_t cgen_var_15 = (uint64_t)(uintptr_t)pPhysicalDevices;
270 stream->putBe64(cgen_var_15);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700271 if (pPhysicalDevices)
272 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800273 if ((*(pPhysicalDeviceCount)))
274 {
275 uint64_t* cgen_var_16;
276 stream->alloc((void**)&cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
277 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_16, (*(pPhysicalDeviceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -0800278 stream->write((uint64_t*)cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800279 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700280 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800281 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800282 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700283 uint32_t* check_pPhysicalDeviceCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800284 check_pPhysicalDeviceCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700285 if (pPhysicalDeviceCount)
286 {
287 if (!(check_pPhysicalDeviceCount))
288 {
289 fprintf(stderr, "fatal: pPhysicalDeviceCount inconsistent between guest and host\n");
290 }
291 stream->read((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
292 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800293 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800294 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700295 VkPhysicalDevice* check_pPhysicalDevices;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800296 check_pPhysicalDevices = (VkPhysicalDevice*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700297 if (pPhysicalDevices)
298 {
299 if (!(check_pPhysicalDevices))
300 {
301 fprintf(stderr, "fatal: pPhysicalDevices inconsistent between guest and host\n");
302 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800303 if ((*(pPhysicalDeviceCount)))
304 {
305 uint64_t* cgen_var_19;
306 stream->alloc((void**)&cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800307 stream->read((uint64_t*)cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800308 stream->handleMapping()->mapHandles_u64_VkPhysicalDevice(cgen_var_19, (VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount)));
309 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700310 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800311 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700312 VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
313 stream->read(&vkEnumeratePhysicalDevices_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800314 countingStream->clearPool();
315 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800316 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700317 return vkEnumeratePhysicalDevices_VkResult_return;
318}
319
320void VkEncoder::vkGetPhysicalDeviceFeatures(
321 VkPhysicalDevice physicalDevice,
322 VkPhysicalDeviceFeatures* pFeatures)
323{
324 auto stream = mImpl->stream();
325 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800326 auto resources = mImpl->resources();
327 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800328 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800329 VkPhysicalDevice local_physicalDevice;
330 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700331 countingStream->rewind();
332 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800333 uint64_t cgen_var_20;
334 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_20, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800335 countingStream->write((uint64_t*)&cgen_var_20, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700336 marshal_VkPhysicalDeviceFeatures(countingStream, (VkPhysicalDeviceFeatures*)(pFeatures));
337 }
338 uint32_t packetSize_vkGetPhysicalDeviceFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
339 countingStream->rewind();
340 uint32_t opcode_vkGetPhysicalDeviceFeatures = OP_vkGetPhysicalDeviceFeatures;
341 stream->write(&opcode_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
342 stream->write(&packetSize_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800343 uint64_t cgen_var_21;
344 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_21, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800345 stream->write((uint64_t*)&cgen_var_21, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700346 marshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
347 unmarshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -0800348 if (pFeatures)
349 {
350 transform_fromhost_VkPhysicalDeviceFeatures(mImpl->resources(), (VkPhysicalDeviceFeatures*)(pFeatures));
351 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700352}
353
354void VkEncoder::vkGetPhysicalDeviceFormatProperties(
355 VkPhysicalDevice physicalDevice,
356 VkFormat format,
357 VkFormatProperties* pFormatProperties)
358{
359 auto stream = mImpl->stream();
360 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800361 auto resources = mImpl->resources();
362 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800363 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800364 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800365 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800366 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800367 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700368 countingStream->rewind();
369 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800370 uint64_t cgen_var_22;
371 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_22, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800372 countingStream->write((uint64_t*)&cgen_var_22, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800373 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700374 marshal_VkFormatProperties(countingStream, (VkFormatProperties*)(pFormatProperties));
375 }
376 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
377 countingStream->rewind();
378 uint32_t opcode_vkGetPhysicalDeviceFormatProperties = OP_vkGetPhysicalDeviceFormatProperties;
379 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
380 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800381 uint64_t cgen_var_23;
382 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_23, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800383 stream->write((uint64_t*)&cgen_var_23, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800384 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700385 marshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
386 unmarshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -0800387 if (pFormatProperties)
388 {
389 transform_fromhost_VkFormatProperties(mImpl->resources(), (VkFormatProperties*)(pFormatProperties));
390 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700391}
392
393VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties(
394 VkPhysicalDevice physicalDevice,
395 VkFormat format,
396 VkImageType type,
397 VkImageTiling tiling,
398 VkImageUsageFlags usage,
399 VkImageCreateFlags flags,
400 VkImageFormatProperties* pImageFormatProperties)
401{
402 auto stream = mImpl->stream();
403 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800404 auto resources = mImpl->resources();
405 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800406 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800407 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800408 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800409 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800410 VkImageTiling local_tiling;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800411 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800412 VkImageCreateFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800413 local_physicalDevice = physicalDevice;
414 local_format = format;
415 local_type = type;
416 local_tiling = tiling;
417 local_usage = usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800418 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700419 countingStream->rewind();
420 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800421 uint64_t cgen_var_24;
422 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_24, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800423 countingStream->write((uint64_t*)&cgen_var_24, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800424 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
425 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
426 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
427 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
428 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700429 marshal_VkImageFormatProperties(countingStream, (VkImageFormatProperties*)(pImageFormatProperties));
430 }
431 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
432 countingStream->rewind();
433 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties = OP_vkGetPhysicalDeviceImageFormatProperties;
434 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
435 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800436 uint64_t cgen_var_25;
437 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_25, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800438 stream->write((uint64_t*)&cgen_var_25, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800439 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
440 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
441 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
442 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
443 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700444 marshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
445 unmarshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -0800446 if (pImageFormatProperties)
447 {
448 transform_fromhost_VkImageFormatProperties(mImpl->resources(), (VkImageFormatProperties*)(pImageFormatProperties));
449 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700450 VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
451 stream->read(&vkGetPhysicalDeviceImageFormatProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800452 countingStream->clearPool();
453 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800454 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700455 return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
456}
457
458void VkEncoder::vkGetPhysicalDeviceProperties(
459 VkPhysicalDevice physicalDevice,
460 VkPhysicalDeviceProperties* pProperties)
461{
462 auto stream = mImpl->stream();
463 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800464 auto resources = mImpl->resources();
465 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800466 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800467 VkPhysicalDevice local_physicalDevice;
468 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700469 countingStream->rewind();
470 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800471 uint64_t cgen_var_26;
472 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_26, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800473 countingStream->write((uint64_t*)&cgen_var_26, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700474 marshal_VkPhysicalDeviceProperties(countingStream, (VkPhysicalDeviceProperties*)(pProperties));
475 }
476 uint32_t packetSize_vkGetPhysicalDeviceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
477 countingStream->rewind();
478 uint32_t opcode_vkGetPhysicalDeviceProperties = OP_vkGetPhysicalDeviceProperties;
479 stream->write(&opcode_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
480 stream->write(&packetSize_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800481 uint64_t cgen_var_27;
482 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_27, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800483 stream->write((uint64_t*)&cgen_var_27, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700484 marshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
485 unmarshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -0800486 if (pProperties)
487 {
488 transform_fromhost_VkPhysicalDeviceProperties(mImpl->resources(), (VkPhysicalDeviceProperties*)(pProperties));
489 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700490}
491
492void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties(
493 VkPhysicalDevice physicalDevice,
494 uint32_t* pQueueFamilyPropertyCount,
495 VkQueueFamilyProperties* pQueueFamilyProperties)
496{
497 auto stream = mImpl->stream();
498 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800499 auto resources = mImpl->resources();
500 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800501 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800502 VkPhysicalDevice local_physicalDevice;
503 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700504 countingStream->rewind();
505 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800506 uint64_t cgen_var_28;
507 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_28, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800508 countingStream->write((uint64_t*)&cgen_var_28, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800509 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800510 uint64_t cgen_var_29 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
511 countingStream->putBe64(cgen_var_29);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700512 if (pQueueFamilyPropertyCount)
513 {
514 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
515 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800516 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800517 uint64_t cgen_var_30 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
518 countingStream->putBe64(cgen_var_30);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700519 if (pQueueFamilyProperties)
520 {
521 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
522 {
523 marshal_VkQueueFamilyProperties(countingStream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
524 }
525 }
526 }
527 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
528 countingStream->rewind();
529 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties = OP_vkGetPhysicalDeviceQueueFamilyProperties;
530 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
531 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800532 uint64_t cgen_var_31;
533 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_31, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800534 stream->write((uint64_t*)&cgen_var_31, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800535 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800536 uint64_t cgen_var_32 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
537 stream->putBe64(cgen_var_32);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700538 if (pQueueFamilyPropertyCount)
539 {
540 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
541 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800542 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800543 uint64_t cgen_var_33 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
544 stream->putBe64(cgen_var_33);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700545 if (pQueueFamilyProperties)
546 {
547 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
548 {
549 marshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
550 }
551 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800552 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700553 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800554 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700555 if (pQueueFamilyPropertyCount)
556 {
557 if (!(check_pQueueFamilyPropertyCount))
558 {
559 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
560 }
561 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
562 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800563 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700564 VkQueueFamilyProperties* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800565 check_pQueueFamilyProperties = (VkQueueFamilyProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700566 if (pQueueFamilyProperties)
567 {
568 if (!(check_pQueueFamilyProperties))
569 {
570 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
571 }
572 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
573 {
574 unmarshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
575 }
576 }
Lingfeng Yang97a06702018-12-24 17:02:43 -0800577 if (pQueueFamilyProperties)
578 {
579 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
580 {
581 transform_fromhost_VkQueueFamilyProperties(mImpl->resources(), (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
582 }
583 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700584}
585
586void VkEncoder::vkGetPhysicalDeviceMemoryProperties(
587 VkPhysicalDevice physicalDevice,
588 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
589{
590 auto stream = mImpl->stream();
591 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800592 auto resources = mImpl->resources();
593 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800594 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800595 VkPhysicalDevice local_physicalDevice;
596 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700597 countingStream->rewind();
598 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800599 uint64_t cgen_var_36;
600 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_36, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800601 countingStream->write((uint64_t*)&cgen_var_36, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700602 marshal_VkPhysicalDeviceMemoryProperties(countingStream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
603 }
604 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
605 countingStream->rewind();
606 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties = OP_vkGetPhysicalDeviceMemoryProperties;
607 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
608 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800609 uint64_t cgen_var_37;
610 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_37, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800611 stream->write((uint64_t*)&cgen_var_37, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700612 marshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
613 unmarshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -0800614 if (pMemoryProperties)
615 {
616 transform_fromhost_VkPhysicalDeviceMemoryProperties(mImpl->resources(), (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
617 }
618 mImpl->resources()->on_vkGetPhysicalDeviceMemoryProperties(this, physicalDevice, pMemoryProperties);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700619}
620
621PFN_vkVoidFunction VkEncoder::vkGetInstanceProcAddr(
622 VkInstance instance,
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 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800631 char* local_pName;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800632 local_instance = instance;
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_38;
641 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_38, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800642 countingStream->write((uint64_t*)&cgen_var_38, 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_vkGetInstanceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
646 countingStream->rewind();
647 uint32_t opcode_vkGetInstanceProcAddr = OP_vkGetInstanceProcAddr;
648 stream->write(&opcode_vkGetInstanceProcAddr, sizeof(uint32_t));
649 stream->write(&packetSize_vkGetInstanceProcAddr, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800650 uint64_t cgen_var_39;
651 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_39, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800652 stream->write((uint64_t*)&cgen_var_39, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800653 stream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700654 PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
655 stream->read(&vkGetInstanceProcAddr_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 vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
660}
661
662PFN_vkVoidFunction VkEncoder::vkGetDeviceProcAddr(
663 VkDevice device,
664 const char* pName)
665{
666 auto stream = mImpl->stream();
667 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800668 auto resources = mImpl->resources();
669 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800670 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800671 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800672 char* local_pName;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800673 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800674 local_pName = nullptr;
675 if (pName)
676 {
677 local_pName = pool->strDup(pName);
678 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700679 countingStream->rewind();
680 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800681 uint64_t cgen_var_40;
682 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_40, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800683 countingStream->write((uint64_t*)&cgen_var_40, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800684 countingStream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700685 }
686 uint32_t packetSize_vkGetDeviceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
687 countingStream->rewind();
688 uint32_t opcode_vkGetDeviceProcAddr = OP_vkGetDeviceProcAddr;
689 stream->write(&opcode_vkGetDeviceProcAddr, sizeof(uint32_t));
690 stream->write(&packetSize_vkGetDeviceProcAddr, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800691 uint64_t cgen_var_41;
692 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_41, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800693 stream->write((uint64_t*)&cgen_var_41, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800694 stream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700695 PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
696 stream->read(&vkGetDeviceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800697 countingStream->clearPool();
698 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800699 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700700 return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
701}
702
703VkResult VkEncoder::vkCreateDevice(
704 VkPhysicalDevice physicalDevice,
705 const VkDeviceCreateInfo* pCreateInfo,
706 const VkAllocationCallbacks* pAllocator,
707 VkDevice* pDevice)
708{
709 auto stream = mImpl->stream();
710 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800711 auto resources = mImpl->resources();
712 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800713 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800714 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800715 VkDeviceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800716 VkAllocationCallbacks* local_pAllocator;
717 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800718 local_pCreateInfo = nullptr;
719 if (pCreateInfo)
720 {
721 local_pCreateInfo = (VkDeviceCreateInfo*)pool->alloc(sizeof(const VkDeviceCreateInfo));
722 deepcopy_VkDeviceCreateInfo(pool, pCreateInfo, (VkDeviceCreateInfo*)(local_pCreateInfo));
723 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800724 local_pAllocator = nullptr;
725 if (pAllocator)
726 {
727 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
728 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
729 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800730 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -0800731 if (local_pCreateInfo)
732 {
Lingfeng Yang97a06702018-12-24 17:02:43 -0800733 transform_tohost_VkDeviceCreateInfo(mImpl->resources(), (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -0800734 }
735 if (local_pAllocator)
736 {
Lingfeng Yang97a06702018-12-24 17:02:43 -0800737 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -0800738 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700739 countingStream->rewind();
740 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800741 uint64_t cgen_var_42;
742 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_42, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800743 countingStream->write((uint64_t*)&cgen_var_42, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800744 marshal_VkDeviceCreateInfo(countingStream, (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800745 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800746 uint64_t cgen_var_43 = (uint64_t)(uintptr_t)local_pAllocator;
747 countingStream->putBe64(cgen_var_43);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800748 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700749 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800750 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700751 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800752 uint64_t cgen_var_44;
753 countingStream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_44, 1);
754 countingStream->write((uint64_t*)&cgen_var_44, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700755 }
756 uint32_t packetSize_vkCreateDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
757 countingStream->rewind();
758 uint32_t opcode_vkCreateDevice = OP_vkCreateDevice;
759 stream->write(&opcode_vkCreateDevice, sizeof(uint32_t));
760 stream->write(&packetSize_vkCreateDevice, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800761 uint64_t cgen_var_45;
762 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_45, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800763 stream->write((uint64_t*)&cgen_var_45, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800764 marshal_VkDeviceCreateInfo(stream, (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800765 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800766 uint64_t cgen_var_46 = (uint64_t)(uintptr_t)local_pAllocator;
767 stream->putBe64(cgen_var_46);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800768 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700769 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800770 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700771 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800772 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -0800773 uint64_t cgen_var_47;
774 stream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_47, 1);
775 stream->write((uint64_t*)&cgen_var_47, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800776 stream->setHandleMapping(resources->unwrapMapping());
777 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -0800778 uint64_t cgen_var_48;
779 stream->read((uint64_t*)&cgen_var_48, 8);
780 stream->handleMapping()->mapHandles_u64_VkDevice(&cgen_var_48, (VkDevice*)pDevice, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800781 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700782 VkResult vkCreateDevice_VkResult_return = (VkResult)0;
783 stream->read(&vkCreateDevice_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800784 countingStream->clearPool();
785 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800786 pool->freeAll();
Lingfeng Yang131d5a42018-11-30 12:00:33 -0800787 mImpl->resources()->on_vkCreateDevice(this, vkCreateDevice_VkResult_return, physicalDevice, pCreateInfo, pAllocator, pDevice);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700788 return vkCreateDevice_VkResult_return;
789}
790
791void VkEncoder::vkDestroyDevice(
792 VkDevice device,
793 const VkAllocationCallbacks* pAllocator)
794{
Lingfeng Yang35e9c6a2018-12-25 17:13:36 -0800795 mImpl->resources()->on_vkDestroyDevice_pre(this, device, pAllocator);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700796 auto stream = mImpl->stream();
797 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800798 auto resources = mImpl->resources();
799 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800800 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800801 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800802 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800803 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800804 local_pAllocator = nullptr;
805 if (pAllocator)
806 {
807 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
808 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
809 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800810 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -0800811 if (local_pAllocator)
812 {
Lingfeng Yang97a06702018-12-24 17:02:43 -0800813 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -0800814 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700815 countingStream->rewind();
816 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800817 uint64_t cgen_var_49;
818 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_49, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800819 countingStream->write((uint64_t*)&cgen_var_49, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800820 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800821 uint64_t cgen_var_50 = (uint64_t)(uintptr_t)local_pAllocator;
822 countingStream->putBe64(cgen_var_50);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800823 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700824 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800825 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700826 }
827 }
828 uint32_t packetSize_vkDestroyDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
829 countingStream->rewind();
830 uint32_t opcode_vkDestroyDevice = OP_vkDestroyDevice;
831 stream->write(&opcode_vkDestroyDevice, sizeof(uint32_t));
832 stream->write(&packetSize_vkDestroyDevice, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800833 uint64_t cgen_var_51;
834 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_51, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800835 stream->write((uint64_t*)&cgen_var_51, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800836 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800837 uint64_t cgen_var_52 = (uint64_t)(uintptr_t)local_pAllocator;
838 stream->putBe64(cgen_var_52);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800839 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700840 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800841 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700842 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800843 resources->destroyMapping()->mapHandles_VkDevice((VkDevice*)&device);
Lingfeng Yang35e9c6a2018-12-25 17:13:36 -0800844 stream->flush();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700845}
846
847VkResult VkEncoder::vkEnumerateInstanceExtensionProperties(
848 const char* pLayerName,
849 uint32_t* pPropertyCount,
850 VkExtensionProperties* pProperties)
851{
852 auto stream = mImpl->stream();
853 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800854 auto resources = mImpl->resources();
855 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800856 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800857 char* local_pLayerName;
858 local_pLayerName = nullptr;
859 if (pLayerName)
860 {
861 local_pLayerName = pool->strDup(pLayerName);
862 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700863 countingStream->rewind();
864 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800865 countingStream->putString(local_pLayerName);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800866 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800867 uint64_t cgen_var_53 = (uint64_t)(uintptr_t)pPropertyCount;
868 countingStream->putBe64(cgen_var_53);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700869 if (pPropertyCount)
870 {
871 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
872 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800873 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800874 uint64_t cgen_var_54 = (uint64_t)(uintptr_t)pProperties;
875 countingStream->putBe64(cgen_var_54);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700876 if (pProperties)
877 {
878 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
879 {
880 marshal_VkExtensionProperties(countingStream, (VkExtensionProperties*)(pProperties + i));
881 }
882 }
883 }
884 uint32_t packetSize_vkEnumerateInstanceExtensionProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
885 countingStream->rewind();
886 uint32_t opcode_vkEnumerateInstanceExtensionProperties = OP_vkEnumerateInstanceExtensionProperties;
887 stream->write(&opcode_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
888 stream->write(&packetSize_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800889 stream->putString(local_pLayerName);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800890 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800891 uint64_t cgen_var_55 = (uint64_t)(uintptr_t)pPropertyCount;
892 stream->putBe64(cgen_var_55);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700893 if (pPropertyCount)
894 {
895 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
896 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800897 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800898 uint64_t cgen_var_56 = (uint64_t)(uintptr_t)pProperties;
899 stream->putBe64(cgen_var_56);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700900 if (pProperties)
901 {
902 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
903 {
904 marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
905 }
906 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800907 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700908 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800909 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700910 if (pPropertyCount)
911 {
912 if (!(check_pPropertyCount))
913 {
914 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
915 }
916 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
917 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800918 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700919 VkExtensionProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800920 check_pProperties = (VkExtensionProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700921 if (pProperties)
922 {
923 if (!(check_pProperties))
924 {
925 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
926 }
927 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
928 {
929 unmarshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
930 }
931 }
Lingfeng Yang97a06702018-12-24 17:02:43 -0800932 if (pProperties)
933 {
934 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
935 {
936 transform_fromhost_VkExtensionProperties(mImpl->resources(), (VkExtensionProperties*)(pProperties + i));
937 }
938 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700939 VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
940 stream->read(&vkEnumerateInstanceExtensionProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800941 countingStream->clearPool();
942 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800943 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700944 return vkEnumerateInstanceExtensionProperties_VkResult_return;
945}
946
947VkResult VkEncoder::vkEnumerateDeviceExtensionProperties(
948 VkPhysicalDevice physicalDevice,
949 const char* pLayerName,
950 uint32_t* pPropertyCount,
951 VkExtensionProperties* pProperties)
952{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700953 VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -0800954 vkEnumerateDeviceExtensionProperties_VkResult_return = mImpl->resources()->on_vkEnumerateDeviceExtensionProperties(this, VK_SUCCESS, physicalDevice, pLayerName, pPropertyCount, pProperties);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700955 return vkEnumerateDeviceExtensionProperties_VkResult_return;
956}
957
958VkResult VkEncoder::vkEnumerateInstanceLayerProperties(
959 uint32_t* pPropertyCount,
960 VkLayerProperties* pProperties)
961{
962 auto stream = mImpl->stream();
963 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800964 auto resources = mImpl->resources();
965 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800966 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700967 countingStream->rewind();
968 {
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800969 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800970 uint64_t cgen_var_59 = (uint64_t)(uintptr_t)pPropertyCount;
971 countingStream->putBe64(cgen_var_59);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700972 if (pPropertyCount)
973 {
974 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
975 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800976 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800977 uint64_t cgen_var_60 = (uint64_t)(uintptr_t)pProperties;
978 countingStream->putBe64(cgen_var_60);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700979 if (pProperties)
980 {
981 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
982 {
983 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
984 }
985 }
986 }
987 uint32_t packetSize_vkEnumerateInstanceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
988 countingStream->rewind();
989 uint32_t opcode_vkEnumerateInstanceLayerProperties = OP_vkEnumerateInstanceLayerProperties;
990 stream->write(&opcode_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
991 stream->write(&packetSize_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800992 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800993 uint64_t cgen_var_61 = (uint64_t)(uintptr_t)pPropertyCount;
994 stream->putBe64(cgen_var_61);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700995 if (pPropertyCount)
996 {
997 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
998 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800999 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001000 uint64_t cgen_var_62 = (uint64_t)(uintptr_t)pProperties;
1001 stream->putBe64(cgen_var_62);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001002 if (pProperties)
1003 {
1004 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1005 {
1006 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1007 }
1008 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001009 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001010 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001011 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001012 if (pPropertyCount)
1013 {
1014 if (!(check_pPropertyCount))
1015 {
1016 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1017 }
1018 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1019 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001020 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001021 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001022 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001023 if (pProperties)
1024 {
1025 if (!(check_pProperties))
1026 {
1027 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1028 }
1029 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1030 {
1031 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1032 }
1033 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08001034 if (pProperties)
1035 {
1036 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1037 {
1038 transform_fromhost_VkLayerProperties(mImpl->resources(), (VkLayerProperties*)(pProperties + i));
1039 }
1040 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001041 VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
1042 stream->read(&vkEnumerateInstanceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001043 countingStream->clearPool();
1044 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001045 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001046 return vkEnumerateInstanceLayerProperties_VkResult_return;
1047}
1048
1049VkResult VkEncoder::vkEnumerateDeviceLayerProperties(
1050 VkPhysicalDevice physicalDevice,
1051 uint32_t* pPropertyCount,
1052 VkLayerProperties* pProperties)
1053{
1054 auto stream = mImpl->stream();
1055 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001056 auto resources = mImpl->resources();
1057 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001058 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001059 VkPhysicalDevice local_physicalDevice;
1060 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001061 countingStream->rewind();
1062 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001063 uint64_t cgen_var_65;
1064 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_65, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001065 countingStream->write((uint64_t*)&cgen_var_65, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001066 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001067 uint64_t cgen_var_66 = (uint64_t)(uintptr_t)pPropertyCount;
1068 countingStream->putBe64(cgen_var_66);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001069 if (pPropertyCount)
1070 {
1071 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1072 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001073 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001074 uint64_t cgen_var_67 = (uint64_t)(uintptr_t)pProperties;
1075 countingStream->putBe64(cgen_var_67);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001076 if (pProperties)
1077 {
1078 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1079 {
1080 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
1081 }
1082 }
1083 }
1084 uint32_t packetSize_vkEnumerateDeviceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1085 countingStream->rewind();
1086 uint32_t opcode_vkEnumerateDeviceLayerProperties = OP_vkEnumerateDeviceLayerProperties;
1087 stream->write(&opcode_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
1088 stream->write(&packetSize_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001089 uint64_t cgen_var_68;
1090 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_68, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001091 stream->write((uint64_t*)&cgen_var_68, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001092 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001093 uint64_t cgen_var_69 = (uint64_t)(uintptr_t)pPropertyCount;
1094 stream->putBe64(cgen_var_69);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001095 if (pPropertyCount)
1096 {
1097 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1098 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001099 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001100 uint64_t cgen_var_70 = (uint64_t)(uintptr_t)pProperties;
1101 stream->putBe64(cgen_var_70);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001102 if (pProperties)
1103 {
1104 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1105 {
1106 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1107 }
1108 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001109 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001110 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001111 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001112 if (pPropertyCount)
1113 {
1114 if (!(check_pPropertyCount))
1115 {
1116 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1117 }
1118 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1119 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001120 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001121 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001122 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001123 if (pProperties)
1124 {
1125 if (!(check_pProperties))
1126 {
1127 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1128 }
1129 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1130 {
1131 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1132 }
1133 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08001134 if (pProperties)
1135 {
1136 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1137 {
1138 transform_fromhost_VkLayerProperties(mImpl->resources(), (VkLayerProperties*)(pProperties + i));
1139 }
1140 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001141 VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
1142 stream->read(&vkEnumerateDeviceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001143 countingStream->clearPool();
1144 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001145 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001146 return vkEnumerateDeviceLayerProperties_VkResult_return;
1147}
1148
1149void VkEncoder::vkGetDeviceQueue(
1150 VkDevice device,
1151 uint32_t queueFamilyIndex,
1152 uint32_t queueIndex,
1153 VkQueue* pQueue)
1154{
1155 auto stream = mImpl->stream();
1156 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001157 auto resources = mImpl->resources();
1158 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001159 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001160 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001161 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001162 uint32_t local_queueIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001163 local_device = device;
1164 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001165 local_queueIndex = queueIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001166 countingStream->rewind();
1167 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001168 uint64_t cgen_var_73;
1169 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_73, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001170 countingStream->write((uint64_t*)&cgen_var_73, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001171 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1172 countingStream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001173 uint64_t cgen_var_74;
1174 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_74, 1);
1175 countingStream->write((uint64_t*)&cgen_var_74, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001176 }
1177 uint32_t packetSize_vkGetDeviceQueue = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1178 countingStream->rewind();
1179 uint32_t opcode_vkGetDeviceQueue = OP_vkGetDeviceQueue;
1180 stream->write(&opcode_vkGetDeviceQueue, sizeof(uint32_t));
1181 stream->write(&packetSize_vkGetDeviceQueue, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001182 uint64_t cgen_var_75;
1183 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_75, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001184 stream->write((uint64_t*)&cgen_var_75, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001185 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1186 stream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yange4008a02018-11-18 12:22:48 -08001187 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08001188 uint64_t cgen_var_76;
1189 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_76, 1);
1190 stream->write((uint64_t*)&cgen_var_76, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001191 stream->setHandleMapping(resources->unwrapMapping());
1192 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08001193 uint64_t cgen_var_77;
1194 stream->read((uint64_t*)&cgen_var_77, 8);
1195 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_77, (VkQueue*)pQueue, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001196 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001197}
1198
1199VkResult VkEncoder::vkQueueSubmit(
1200 VkQueue queue,
1201 uint32_t submitCount,
1202 const VkSubmitInfo* pSubmits,
1203 VkFence fence)
1204{
1205 auto stream = mImpl->stream();
1206 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001207 auto resources = mImpl->resources();
1208 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001209 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001210 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001211 uint32_t local_submitCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001212 VkSubmitInfo* local_pSubmits;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001213 VkFence local_fence;
1214 local_queue = queue;
1215 local_submitCount = submitCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001216 local_pSubmits = nullptr;
1217 if (pSubmits)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001218 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001219 local_pSubmits = (VkSubmitInfo*)pool->alloc(((submitCount)) * sizeof(const VkSubmitInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001220 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1221 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001222 deepcopy_VkSubmitInfo(pool, pSubmits + i, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001223 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001224 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001225 local_fence = fence;
Lingfeng Yang62b23322018-12-24 12:45:47 -08001226 if (local_pSubmits)
1227 {
1228 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1229 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001230 transform_tohost_VkSubmitInfo(mImpl->resources(), (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001231 }
1232 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001233 countingStream->rewind();
1234 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001235 uint64_t cgen_var_78;
1236 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_78, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001237 countingStream->write((uint64_t*)&cgen_var_78, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001238 countingStream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
1239 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1240 {
1241 marshal_VkSubmitInfo(countingStream, (VkSubmitInfo*)(local_pSubmits + i));
1242 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001243 uint64_t cgen_var_79;
1244 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_79, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001245 countingStream->write((uint64_t*)&cgen_var_79, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001246 }
1247 uint32_t packetSize_vkQueueSubmit = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1248 countingStream->rewind();
1249 uint32_t opcode_vkQueueSubmit = OP_vkQueueSubmit;
1250 stream->write(&opcode_vkQueueSubmit, sizeof(uint32_t));
1251 stream->write(&packetSize_vkQueueSubmit, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001252 uint64_t cgen_var_80;
1253 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_80, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001254 stream->write((uint64_t*)&cgen_var_80, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001255 stream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001256 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1257 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001258 marshal_VkSubmitInfo(stream, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001259 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001260 uint64_t cgen_var_81;
1261 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_81, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001262 stream->write((uint64_t*)&cgen_var_81, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001263 VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
1264 stream->read(&vkQueueSubmit_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001265 countingStream->clearPool();
1266 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001267 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001268 return vkQueueSubmit_VkResult_return;
1269}
1270
1271VkResult VkEncoder::vkQueueWaitIdle(
1272 VkQueue queue)
1273{
1274 auto stream = mImpl->stream();
1275 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001276 auto resources = mImpl->resources();
1277 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001278 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001279 VkQueue local_queue;
1280 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001281 countingStream->rewind();
1282 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001283 uint64_t cgen_var_82;
1284 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_82, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001285 countingStream->write((uint64_t*)&cgen_var_82, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001286 }
1287 uint32_t packetSize_vkQueueWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1288 countingStream->rewind();
1289 uint32_t opcode_vkQueueWaitIdle = OP_vkQueueWaitIdle;
1290 stream->write(&opcode_vkQueueWaitIdle, sizeof(uint32_t));
1291 stream->write(&packetSize_vkQueueWaitIdle, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001292 uint64_t cgen_var_83;
1293 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_83, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001294 stream->write((uint64_t*)&cgen_var_83, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001295 VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
1296 stream->read(&vkQueueWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001297 countingStream->clearPool();
1298 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001299 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001300 return vkQueueWaitIdle_VkResult_return;
1301}
1302
1303VkResult VkEncoder::vkDeviceWaitIdle(
1304 VkDevice device)
1305{
1306 auto stream = mImpl->stream();
1307 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001308 auto resources = mImpl->resources();
1309 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001310 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001311 VkDevice local_device;
1312 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001313 countingStream->rewind();
1314 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001315 uint64_t cgen_var_84;
1316 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_84, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001317 countingStream->write((uint64_t*)&cgen_var_84, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001318 }
1319 uint32_t packetSize_vkDeviceWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1320 countingStream->rewind();
1321 uint32_t opcode_vkDeviceWaitIdle = OP_vkDeviceWaitIdle;
1322 stream->write(&opcode_vkDeviceWaitIdle, sizeof(uint32_t));
1323 stream->write(&packetSize_vkDeviceWaitIdle, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001324 uint64_t cgen_var_85;
1325 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_85, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001326 stream->write((uint64_t*)&cgen_var_85, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001327 VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
1328 stream->read(&vkDeviceWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001329 countingStream->clearPool();
1330 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001331 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001332 return vkDeviceWaitIdle_VkResult_return;
1333}
1334
1335VkResult VkEncoder::vkAllocateMemory(
1336 VkDevice device,
1337 const VkMemoryAllocateInfo* pAllocateInfo,
1338 const VkAllocationCallbacks* pAllocator,
1339 VkDeviceMemory* pMemory)
1340{
1341 auto stream = mImpl->stream();
1342 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001343 auto resources = mImpl->resources();
1344 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001345 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001346 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001347 VkMemoryAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001348 VkAllocationCallbacks* local_pAllocator;
1349 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001350 local_pAllocateInfo = nullptr;
1351 if (pAllocateInfo)
1352 {
1353 local_pAllocateInfo = (VkMemoryAllocateInfo*)pool->alloc(sizeof(const VkMemoryAllocateInfo));
1354 deepcopy_VkMemoryAllocateInfo(pool, pAllocateInfo, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
1355 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001356 local_pAllocator = nullptr;
1357 if (pAllocator)
1358 {
1359 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1360 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1361 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001362 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08001363 if (local_pAllocateInfo)
1364 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001365 transform_tohost_VkMemoryAllocateInfo(mImpl->resources(), (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001366 }
1367 if (local_pAllocator)
1368 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001369 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001370 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001371 countingStream->rewind();
1372 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001373 uint64_t cgen_var_86;
1374 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_86, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001375 countingStream->write((uint64_t*)&cgen_var_86, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001376 marshal_VkMemoryAllocateInfo(countingStream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001377 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001378 uint64_t cgen_var_87 = (uint64_t)(uintptr_t)local_pAllocator;
1379 countingStream->putBe64(cgen_var_87);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001380 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001381 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001382 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001383 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001384 uint64_t cgen_var_88;
1385 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_88, 1);
1386 countingStream->write((uint64_t*)&cgen_var_88, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001387 }
1388 uint32_t packetSize_vkAllocateMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1389 countingStream->rewind();
1390 uint32_t opcode_vkAllocateMemory = OP_vkAllocateMemory;
1391 stream->write(&opcode_vkAllocateMemory, sizeof(uint32_t));
1392 stream->write(&packetSize_vkAllocateMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001393 uint64_t cgen_var_89;
1394 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_89, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001395 stream->write((uint64_t*)&cgen_var_89, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001396 marshal_VkMemoryAllocateInfo(stream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001397 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001398 uint64_t cgen_var_90 = (uint64_t)(uintptr_t)local_pAllocator;
1399 stream->putBe64(cgen_var_90);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001400 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001401 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001402 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001403 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08001404 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08001405 uint64_t cgen_var_91;
1406 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_91, 1);
1407 stream->write((uint64_t*)&cgen_var_91, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001408 stream->setHandleMapping(resources->unwrapMapping());
1409 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08001410 uint64_t cgen_var_92;
1411 stream->read((uint64_t*)&cgen_var_92, 8);
1412 stream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_92, (VkDeviceMemory*)pMemory, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001413 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001414 VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
1415 stream->read(&vkAllocateMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001416 countingStream->clearPool();
1417 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001418 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001419 return vkAllocateMemory_VkResult_return;
1420}
1421
1422void VkEncoder::vkFreeMemory(
1423 VkDevice device,
1424 VkDeviceMemory memory,
1425 const VkAllocationCallbacks* pAllocator)
1426{
1427 auto stream = mImpl->stream();
1428 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001429 auto resources = mImpl->resources();
1430 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001431 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001432 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001433 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001434 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001435 local_device = device;
1436 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001437 local_pAllocator = nullptr;
1438 if (pAllocator)
1439 {
1440 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1441 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1442 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001443 local_pAllocator = nullptr;
Lingfeng Yangafe29d32018-12-25 13:01:52 -08001444 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001445 countingStream->rewind();
1446 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001447 uint64_t cgen_var_93;
1448 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_93, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001449 countingStream->write((uint64_t*)&cgen_var_93, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001450 uint64_t cgen_var_94;
1451 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_94, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001452 countingStream->write((uint64_t*)&cgen_var_94, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001453 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001454 uint64_t cgen_var_95 = (uint64_t)(uintptr_t)local_pAllocator;
1455 countingStream->putBe64(cgen_var_95);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001456 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001457 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001458 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001459 }
1460 }
1461 uint32_t packetSize_vkFreeMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1462 countingStream->rewind();
1463 uint32_t opcode_vkFreeMemory = OP_vkFreeMemory;
1464 stream->write(&opcode_vkFreeMemory, sizeof(uint32_t));
1465 stream->write(&packetSize_vkFreeMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001466 uint64_t cgen_var_96;
1467 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_96, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001468 stream->write((uint64_t*)&cgen_var_96, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001469 uint64_t cgen_var_97;
1470 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_97, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001471 stream->write((uint64_t*)&cgen_var_97, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001472 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001473 uint64_t cgen_var_98 = (uint64_t)(uintptr_t)local_pAllocator;
1474 stream->putBe64(cgen_var_98);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001475 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001476 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001477 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001478 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001479 resources->destroyMapping()->mapHandles_VkDeviceMemory((VkDeviceMemory*)&memory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001480}
1481
1482VkResult VkEncoder::vkMapMemory(
1483 VkDevice device,
1484 VkDeviceMemory memory,
1485 VkDeviceSize offset,
1486 VkDeviceSize size,
1487 VkMemoryMapFlags flags,
1488 void** ppData)
1489{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001490 VkResult vkMapMemory_VkResult_return = (VkResult)0;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08001491 vkMapMemory_VkResult_return = mImpl->resources()->on_vkMapMemory(this, VK_SUCCESS, device, memory, offset, size, flags, ppData);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001492 return vkMapMemory_VkResult_return;
1493}
1494
1495void VkEncoder::vkUnmapMemory(
1496 VkDevice device,
1497 VkDeviceMemory memory)
1498{
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08001499 mImpl->resources()->on_vkUnmapMemory(this, device, memory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001500}
1501
1502VkResult VkEncoder::vkFlushMappedMemoryRanges(
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_vkFlushMappedMemoryRanges(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 Yang62b23322018-12-24 12:45:47 -08001527 if (local_pMemoryRanges)
1528 {
1529 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1530 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001531 transform_tohost_VkMappedMemoryRange(mImpl->resources(), (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001532 }
1533 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001534 countingStream->rewind();
1535 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001536 uint64_t cgen_var_99;
1537 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_99, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001538 countingStream->write((uint64_t*)&cgen_var_99, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001539 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1540 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1541 {
1542 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001543 }
1544 }
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001545 if (!resources->usingDirectMapping())
Lingfeng Yange30d3382018-11-09 08:24:37 -08001546 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001547 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1548 {
1549 auto range = pMemoryRanges[i];
1550 auto memory = pMemoryRanges[i].memory;
1551 auto size = pMemoryRanges[i].size;
1552 auto offset = pMemoryRanges[i].offset;
1553 uint64_t streamSize = 0;
1554 if (!memory) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
1555 auto hostPtr = resources->getMappedPointer(memory);
1556 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1557 if (!hostPtr) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
1558 streamSize = actualSize;
1559 countingStream->write(&streamSize, sizeof(uint64_t));
1560 uint8_t* targetRange = hostPtr + offset;
1561 countingStream->write(targetRange, actualSize);
1562 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001563 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001564 uint32_t packetSize_vkFlushMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1565 countingStream->rewind();
1566 uint32_t opcode_vkFlushMappedMemoryRanges = OP_vkFlushMappedMemoryRanges;
1567 stream->write(&opcode_vkFlushMappedMemoryRanges, sizeof(uint32_t));
1568 stream->write(&packetSize_vkFlushMappedMemoryRanges, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001569 uint64_t cgen_var_100;
1570 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_100, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001571 stream->write((uint64_t*)&cgen_var_100, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001572 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001573 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1574 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001575 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001576 }
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001577 if (!resources->usingDirectMapping())
Lingfeng Yange30d3382018-11-09 08:24:37 -08001578 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001579 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1580 {
1581 auto range = pMemoryRanges[i];
1582 auto memory = pMemoryRanges[i].memory;
1583 auto size = pMemoryRanges[i].size;
1584 auto offset = pMemoryRanges[i].offset;
1585 uint64_t streamSize = 0;
1586 if (!memory) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
1587 auto hostPtr = resources->getMappedPointer(memory);
1588 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1589 if (!hostPtr) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
1590 streamSize = actualSize;
1591 stream->write(&streamSize, sizeof(uint64_t));
1592 uint8_t* targetRange = hostPtr + offset;
1593 stream->write(targetRange, actualSize);
1594 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001595 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001596 VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
1597 stream->read(&vkFlushMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001598 countingStream->clearPool();
1599 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001600 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001601 return vkFlushMappedMemoryRanges_VkResult_return;
1602}
1603
1604VkResult VkEncoder::vkInvalidateMappedMemoryRanges(
1605 VkDevice device,
1606 uint32_t memoryRangeCount,
1607 const VkMappedMemoryRange* pMemoryRanges)
1608{
Lingfeng Yang29c99d92018-11-30 11:15:29 -08001609 VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkInvalidateMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001610 auto stream = mImpl->stream();
1611 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001612 auto resources = mImpl->resources();
1613 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001614 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001615 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001616 uint32_t local_memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001617 VkMappedMemoryRange* local_pMemoryRanges;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001618 local_device = device;
1619 local_memoryRangeCount = memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001620 local_pMemoryRanges = nullptr;
1621 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001622 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001623 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001624 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1625 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001626 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1627 }
1628 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08001629 if (local_pMemoryRanges)
1630 {
1631 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1632 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001633 transform_tohost_VkMappedMemoryRange(mImpl->resources(), (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001634 }
1635 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001636 countingStream->rewind();
1637 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001638 uint64_t cgen_var_101;
1639 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_101, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001640 countingStream->write((uint64_t*)&cgen_var_101, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001641 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1642 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1643 {
1644 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001645 }
1646 }
1647 uint32_t packetSize_vkInvalidateMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1648 countingStream->rewind();
1649 uint32_t opcode_vkInvalidateMappedMemoryRanges = OP_vkInvalidateMappedMemoryRanges;
1650 stream->write(&opcode_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
1651 stream->write(&packetSize_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001652 uint64_t cgen_var_102;
1653 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_102, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001654 stream->write((uint64_t*)&cgen_var_102, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001655 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001656 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1657 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001658 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001659 }
1660 VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
1661 stream->read(&vkInvalidateMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001662 countingStream->clearPool();
1663 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001664 pool->freeAll();
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001665 if (!resources->usingDirectMapping())
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001666 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001667 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1668 {
1669 auto range = pMemoryRanges[i];
1670 auto memory = pMemoryRanges[i].memory;
1671 auto size = pMemoryRanges[i].size;
1672 auto offset = pMemoryRanges[i].offset;
1673 uint64_t streamSize = 0;
1674 if (!memory) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
1675 auto hostPtr = resources->getMappedPointer(memory);
1676 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1677 if (!hostPtr) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
1678 streamSize = actualSize;
1679 stream->read(&streamSize, sizeof(uint64_t));
1680 uint8_t* targetRange = hostPtr + offset;
1681 stream->read(targetRange, actualSize);
1682 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001683 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001684 return vkInvalidateMappedMemoryRanges_VkResult_return;
1685}
1686
1687void VkEncoder::vkGetDeviceMemoryCommitment(
1688 VkDevice device,
1689 VkDeviceMemory memory,
1690 VkDeviceSize* pCommittedMemoryInBytes)
1691{
1692 auto stream = mImpl->stream();
1693 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001694 auto resources = mImpl->resources();
1695 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001696 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001697 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001698 VkDeviceMemory local_memory;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001699 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001700 local_memory = memory;
Lingfeng Yangafe29d32018-12-25 13:01:52 -08001701 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001702 countingStream->rewind();
1703 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001704 uint64_t cgen_var_103;
1705 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_103, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001706 countingStream->write((uint64_t*)&cgen_var_103, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001707 uint64_t cgen_var_104;
1708 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_104, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001709 countingStream->write((uint64_t*)&cgen_var_104, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001710 countingStream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1711 }
1712 uint32_t packetSize_vkGetDeviceMemoryCommitment = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1713 countingStream->rewind();
1714 uint32_t opcode_vkGetDeviceMemoryCommitment = OP_vkGetDeviceMemoryCommitment;
1715 stream->write(&opcode_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
1716 stream->write(&packetSize_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001717 uint64_t cgen_var_105;
1718 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_105, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001719 stream->write((uint64_t*)&cgen_var_105, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001720 uint64_t cgen_var_106;
1721 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_106, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001722 stream->write((uint64_t*)&cgen_var_106, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001723 stream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1724 stream->read((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1725}
1726
1727VkResult VkEncoder::vkBindBufferMemory(
1728 VkDevice device,
1729 VkBuffer buffer,
1730 VkDeviceMemory memory,
1731 VkDeviceSize memoryOffset)
1732{
1733 auto stream = mImpl->stream();
1734 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001735 auto resources = mImpl->resources();
1736 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001737 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001738 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001739 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001740 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001741 VkDeviceSize local_memoryOffset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001742 local_device = device;
1743 local_buffer = buffer;
1744 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001745 local_memoryOffset = memoryOffset;
Lingfeng Yangafe29d32018-12-25 13:01:52 -08001746 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, &local_memoryOffset, 1, nullptr, 0, nullptr, 0, nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001747 countingStream->rewind();
1748 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001749 uint64_t cgen_var_107;
1750 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_107, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001751 countingStream->write((uint64_t*)&cgen_var_107, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001752 uint64_t cgen_var_108;
1753 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_108, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001754 countingStream->write((uint64_t*)&cgen_var_108, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001755 uint64_t cgen_var_109;
1756 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_109, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001757 countingStream->write((uint64_t*)&cgen_var_109, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001758 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001759 }
1760 uint32_t packetSize_vkBindBufferMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1761 countingStream->rewind();
1762 uint32_t opcode_vkBindBufferMemory = OP_vkBindBufferMemory;
1763 stream->write(&opcode_vkBindBufferMemory, sizeof(uint32_t));
1764 stream->write(&packetSize_vkBindBufferMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001765 uint64_t cgen_var_110;
1766 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_110, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001767 stream->write((uint64_t*)&cgen_var_110, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001768 uint64_t cgen_var_111;
1769 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_111, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001770 stream->write((uint64_t*)&cgen_var_111, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001771 uint64_t cgen_var_112;
1772 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_112, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001773 stream->write((uint64_t*)&cgen_var_112, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001774 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001775 VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
1776 stream->read(&vkBindBufferMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001777 countingStream->clearPool();
1778 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001779 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001780 return vkBindBufferMemory_VkResult_return;
1781}
1782
1783VkResult VkEncoder::vkBindImageMemory(
1784 VkDevice device,
1785 VkImage image,
1786 VkDeviceMemory memory,
1787 VkDeviceSize memoryOffset)
1788{
1789 auto stream = mImpl->stream();
1790 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001791 auto resources = mImpl->resources();
1792 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001793 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001794 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001795 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001796 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001797 VkDeviceSize local_memoryOffset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001798 local_device = device;
1799 local_image = image;
1800 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001801 local_memoryOffset = memoryOffset;
Lingfeng Yangafe29d32018-12-25 13:01:52 -08001802 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, &local_memoryOffset, 1, nullptr, 0, nullptr, 0, nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001803 countingStream->rewind();
1804 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001805 uint64_t cgen_var_113;
1806 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_113, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001807 countingStream->write((uint64_t*)&cgen_var_113, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001808 uint64_t cgen_var_114;
1809 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_114, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001810 countingStream->write((uint64_t*)&cgen_var_114, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001811 uint64_t cgen_var_115;
1812 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_115, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001813 countingStream->write((uint64_t*)&cgen_var_115, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001814 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001815 }
1816 uint32_t packetSize_vkBindImageMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1817 countingStream->rewind();
1818 uint32_t opcode_vkBindImageMemory = OP_vkBindImageMemory;
1819 stream->write(&opcode_vkBindImageMemory, sizeof(uint32_t));
1820 stream->write(&packetSize_vkBindImageMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001821 uint64_t cgen_var_116;
1822 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_116, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001823 stream->write((uint64_t*)&cgen_var_116, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001824 uint64_t cgen_var_117;
1825 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_117, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001826 stream->write((uint64_t*)&cgen_var_117, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001827 uint64_t cgen_var_118;
1828 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_118, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001829 stream->write((uint64_t*)&cgen_var_118, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001830 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001831 VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
1832 stream->read(&vkBindImageMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001833 countingStream->clearPool();
1834 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001835 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001836 return vkBindImageMemory_VkResult_return;
1837}
1838
1839void VkEncoder::vkGetBufferMemoryRequirements(
1840 VkDevice device,
1841 VkBuffer buffer,
1842 VkMemoryRequirements* pMemoryRequirements)
1843{
1844 auto stream = mImpl->stream();
1845 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001846 auto resources = mImpl->resources();
1847 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001848 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001849 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001850 VkBuffer local_buffer;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001851 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001852 local_buffer = buffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001853 countingStream->rewind();
1854 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001855 uint64_t cgen_var_119;
1856 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_119, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001857 countingStream->write((uint64_t*)&cgen_var_119, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001858 uint64_t cgen_var_120;
1859 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_120, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001860 countingStream->write((uint64_t*)&cgen_var_120, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001861 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
1862 }
1863 uint32_t packetSize_vkGetBufferMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1864 countingStream->rewind();
1865 uint32_t opcode_vkGetBufferMemoryRequirements = OP_vkGetBufferMemoryRequirements;
1866 stream->write(&opcode_vkGetBufferMemoryRequirements, sizeof(uint32_t));
1867 stream->write(&packetSize_vkGetBufferMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001868 uint64_t cgen_var_121;
1869 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_121, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001870 stream->write((uint64_t*)&cgen_var_121, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001871 uint64_t cgen_var_122;
1872 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_122, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001873 stream->write((uint64_t*)&cgen_var_122, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001874 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1875 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -08001876 if (pMemoryRequirements)
1877 {
1878 transform_fromhost_VkMemoryRequirements(mImpl->resources(), (VkMemoryRequirements*)(pMemoryRequirements));
1879 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001880}
1881
1882void VkEncoder::vkGetImageMemoryRequirements(
1883 VkDevice device,
1884 VkImage image,
1885 VkMemoryRequirements* pMemoryRequirements)
1886{
1887 auto stream = mImpl->stream();
1888 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001889 auto resources = mImpl->resources();
1890 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001891 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001892 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001893 VkImage local_image;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001894 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001895 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001896 countingStream->rewind();
1897 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001898 uint64_t cgen_var_123;
1899 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_123, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001900 countingStream->write((uint64_t*)&cgen_var_123, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001901 uint64_t cgen_var_124;
1902 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_124, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001903 countingStream->write((uint64_t*)&cgen_var_124, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001904 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
1905 }
1906 uint32_t packetSize_vkGetImageMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1907 countingStream->rewind();
1908 uint32_t opcode_vkGetImageMemoryRequirements = OP_vkGetImageMemoryRequirements;
1909 stream->write(&opcode_vkGetImageMemoryRequirements, sizeof(uint32_t));
1910 stream->write(&packetSize_vkGetImageMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001911 uint64_t cgen_var_125;
1912 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_125, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001913 stream->write((uint64_t*)&cgen_var_125, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001914 uint64_t cgen_var_126;
1915 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_126, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001916 stream->write((uint64_t*)&cgen_var_126, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001917 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1918 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -08001919 if (pMemoryRequirements)
1920 {
1921 transform_fromhost_VkMemoryRequirements(mImpl->resources(), (VkMemoryRequirements*)(pMemoryRequirements));
1922 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001923}
1924
1925void VkEncoder::vkGetImageSparseMemoryRequirements(
1926 VkDevice device,
1927 VkImage image,
1928 uint32_t* pSparseMemoryRequirementCount,
1929 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
1930{
1931 auto stream = mImpl->stream();
1932 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001933 auto resources = mImpl->resources();
1934 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001935 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001936 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001937 VkImage local_image;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001938 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001939 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001940 countingStream->rewind();
1941 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001942 uint64_t cgen_var_127;
1943 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_127, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001944 countingStream->write((uint64_t*)&cgen_var_127, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001945 uint64_t cgen_var_128;
1946 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_128, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001947 countingStream->write((uint64_t*)&cgen_var_128, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001948 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001949 uint64_t cgen_var_129 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
1950 countingStream->putBe64(cgen_var_129);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001951 if (pSparseMemoryRequirementCount)
1952 {
1953 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
1954 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001955 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001956 uint64_t cgen_var_130 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
1957 countingStream->putBe64(cgen_var_130);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001958 if (pSparseMemoryRequirements)
1959 {
1960 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
1961 {
1962 marshal_VkSparseImageMemoryRequirements(countingStream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
1963 }
1964 }
1965 }
1966 uint32_t packetSize_vkGetImageSparseMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1967 countingStream->rewind();
1968 uint32_t opcode_vkGetImageSparseMemoryRequirements = OP_vkGetImageSparseMemoryRequirements;
1969 stream->write(&opcode_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
1970 stream->write(&packetSize_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001971 uint64_t cgen_var_131;
1972 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_131, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001973 stream->write((uint64_t*)&cgen_var_131, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001974 uint64_t cgen_var_132;
1975 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_132, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001976 stream->write((uint64_t*)&cgen_var_132, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001977 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001978 uint64_t cgen_var_133 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
1979 stream->putBe64(cgen_var_133);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001980 if (pSparseMemoryRequirementCount)
1981 {
1982 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
1983 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001984 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001985 uint64_t cgen_var_134 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
1986 stream->putBe64(cgen_var_134);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001987 if (pSparseMemoryRequirements)
1988 {
1989 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
1990 {
1991 marshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
1992 }
1993 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001994 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001995 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001996 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001997 if (pSparseMemoryRequirementCount)
1998 {
1999 if (!(check_pSparseMemoryRequirementCount))
2000 {
2001 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
2002 }
2003 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
2004 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002005 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002006 VkSparseImageMemoryRequirements* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002007 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002008 if (pSparseMemoryRequirements)
2009 {
2010 if (!(check_pSparseMemoryRequirements))
2011 {
2012 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
2013 }
2014 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2015 {
2016 unmarshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2017 }
2018 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08002019 if (pSparseMemoryRequirements)
2020 {
2021 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2022 {
2023 transform_fromhost_VkSparseImageMemoryRequirements(mImpl->resources(), (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2024 }
2025 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002026}
2027
2028void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties(
2029 VkPhysicalDevice physicalDevice,
2030 VkFormat format,
2031 VkImageType type,
2032 VkSampleCountFlagBits samples,
2033 VkImageUsageFlags usage,
2034 VkImageTiling tiling,
2035 uint32_t* pPropertyCount,
2036 VkSparseImageFormatProperties* pProperties)
2037{
2038 auto stream = mImpl->stream();
2039 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002040 auto resources = mImpl->resources();
2041 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002042 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002043 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002044 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002045 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002046 VkSampleCountFlagBits local_samples;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002047 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002048 VkImageTiling local_tiling;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002049 local_physicalDevice = physicalDevice;
2050 local_format = format;
2051 local_type = type;
2052 local_samples = samples;
2053 local_usage = usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002054 local_tiling = tiling;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002055 countingStream->rewind();
2056 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002057 uint64_t cgen_var_137;
2058 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_137, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002059 countingStream->write((uint64_t*)&cgen_var_137, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002060 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
2061 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
2062 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
2063 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
2064 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002065 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002066 uint64_t cgen_var_138 = (uint64_t)(uintptr_t)pPropertyCount;
2067 countingStream->putBe64(cgen_var_138);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002068 if (pPropertyCount)
2069 {
2070 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
2071 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002072 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002073 uint64_t cgen_var_139 = (uint64_t)(uintptr_t)pProperties;
2074 countingStream->putBe64(cgen_var_139);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002075 if (pProperties)
2076 {
2077 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2078 {
2079 marshal_VkSparseImageFormatProperties(countingStream, (VkSparseImageFormatProperties*)(pProperties + i));
2080 }
2081 }
2082 }
2083 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2084 countingStream->rewind();
2085 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties = OP_vkGetPhysicalDeviceSparseImageFormatProperties;
2086 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
2087 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002088 uint64_t cgen_var_140;
2089 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_140, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002090 stream->write((uint64_t*)&cgen_var_140, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002091 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
2092 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
2093 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
2094 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
2095 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002096 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002097 uint64_t cgen_var_141 = (uint64_t)(uintptr_t)pPropertyCount;
2098 stream->putBe64(cgen_var_141);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002099 if (pPropertyCount)
2100 {
2101 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
2102 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002103 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002104 uint64_t cgen_var_142 = (uint64_t)(uintptr_t)pProperties;
2105 stream->putBe64(cgen_var_142);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002106 if (pProperties)
2107 {
2108 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2109 {
2110 marshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
2111 }
2112 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002113 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002114 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002115 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002116 if (pPropertyCount)
2117 {
2118 if (!(check_pPropertyCount))
2119 {
2120 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
2121 }
2122 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
2123 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002124 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002125 VkSparseImageFormatProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002126 check_pProperties = (VkSparseImageFormatProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002127 if (pProperties)
2128 {
2129 if (!(check_pProperties))
2130 {
2131 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
2132 }
2133 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2134 {
2135 unmarshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
2136 }
2137 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08002138 if (pProperties)
2139 {
2140 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2141 {
2142 transform_fromhost_VkSparseImageFormatProperties(mImpl->resources(), (VkSparseImageFormatProperties*)(pProperties + i));
2143 }
2144 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002145}
2146
2147VkResult VkEncoder::vkQueueBindSparse(
2148 VkQueue queue,
2149 uint32_t bindInfoCount,
2150 const VkBindSparseInfo* pBindInfo,
2151 VkFence fence)
2152{
2153 auto stream = mImpl->stream();
2154 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002155 auto resources = mImpl->resources();
2156 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002157 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002158 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002159 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002160 VkBindSparseInfo* local_pBindInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002161 VkFence local_fence;
2162 local_queue = queue;
2163 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002164 local_pBindInfo = nullptr;
2165 if (pBindInfo)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002166 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002167 local_pBindInfo = (VkBindSparseInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindSparseInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002168 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2169 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002170 deepcopy_VkBindSparseInfo(pool, pBindInfo + i, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002171 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002172 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002173 local_fence = fence;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002174 if (local_pBindInfo)
2175 {
2176 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2177 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002178 transform_tohost_VkBindSparseInfo(mImpl->resources(), (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002179 }
2180 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002181 countingStream->rewind();
2182 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002183 uint64_t cgen_var_145;
2184 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_145, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002185 countingStream->write((uint64_t*)&cgen_var_145, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002186 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
2187 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2188 {
2189 marshal_VkBindSparseInfo(countingStream, (VkBindSparseInfo*)(local_pBindInfo + i));
2190 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002191 uint64_t cgen_var_146;
2192 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_146, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002193 countingStream->write((uint64_t*)&cgen_var_146, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002194 }
2195 uint32_t packetSize_vkQueueBindSparse = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2196 countingStream->rewind();
2197 uint32_t opcode_vkQueueBindSparse = OP_vkQueueBindSparse;
2198 stream->write(&opcode_vkQueueBindSparse, sizeof(uint32_t));
2199 stream->write(&packetSize_vkQueueBindSparse, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002200 uint64_t cgen_var_147;
2201 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_147, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002202 stream->write((uint64_t*)&cgen_var_147, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002203 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002204 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2205 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002206 marshal_VkBindSparseInfo(stream, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002207 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002208 uint64_t cgen_var_148;
2209 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_148, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002210 stream->write((uint64_t*)&cgen_var_148, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002211 VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
2212 stream->read(&vkQueueBindSparse_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002213 countingStream->clearPool();
2214 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002215 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002216 return vkQueueBindSparse_VkResult_return;
2217}
2218
2219VkResult VkEncoder::vkCreateFence(
2220 VkDevice device,
2221 const VkFenceCreateInfo* pCreateInfo,
2222 const VkAllocationCallbacks* pAllocator,
2223 VkFence* pFence)
2224{
2225 auto stream = mImpl->stream();
2226 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002227 auto resources = mImpl->resources();
2228 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002229 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002230 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002231 VkFenceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002232 VkAllocationCallbacks* local_pAllocator;
2233 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002234 local_pCreateInfo = nullptr;
2235 if (pCreateInfo)
2236 {
2237 local_pCreateInfo = (VkFenceCreateInfo*)pool->alloc(sizeof(const VkFenceCreateInfo));
2238 deepcopy_VkFenceCreateInfo(pool, pCreateInfo, (VkFenceCreateInfo*)(local_pCreateInfo));
2239 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002240 local_pAllocator = nullptr;
2241 if (pAllocator)
2242 {
2243 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2244 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2245 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002246 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002247 if (local_pCreateInfo)
2248 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002249 transform_tohost_VkFenceCreateInfo(mImpl->resources(), (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002250 }
2251 if (local_pAllocator)
2252 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002253 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002254 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002255 countingStream->rewind();
2256 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002257 uint64_t cgen_var_149;
2258 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_149, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002259 countingStream->write((uint64_t*)&cgen_var_149, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002260 marshal_VkFenceCreateInfo(countingStream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002261 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002262 uint64_t cgen_var_150 = (uint64_t)(uintptr_t)local_pAllocator;
2263 countingStream->putBe64(cgen_var_150);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002264 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002265 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002266 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002267 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002268 uint64_t cgen_var_151;
2269 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_151, 1);
2270 countingStream->write((uint64_t*)&cgen_var_151, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002271 }
2272 uint32_t packetSize_vkCreateFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2273 countingStream->rewind();
2274 uint32_t opcode_vkCreateFence = OP_vkCreateFence;
2275 stream->write(&opcode_vkCreateFence, sizeof(uint32_t));
2276 stream->write(&packetSize_vkCreateFence, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002277 uint64_t cgen_var_152;
2278 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_152, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002279 stream->write((uint64_t*)&cgen_var_152, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002280 marshal_VkFenceCreateInfo(stream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002281 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002282 uint64_t cgen_var_153 = (uint64_t)(uintptr_t)local_pAllocator;
2283 stream->putBe64(cgen_var_153);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002284 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002285 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002286 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002287 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002288 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002289 uint64_t cgen_var_154;
2290 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_154, 1);
2291 stream->write((uint64_t*)&cgen_var_154, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002292 stream->setHandleMapping(resources->unwrapMapping());
2293 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002294 uint64_t cgen_var_155;
2295 stream->read((uint64_t*)&cgen_var_155, 8);
2296 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_155, (VkFence*)pFence, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002297 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002298 VkResult vkCreateFence_VkResult_return = (VkResult)0;
2299 stream->read(&vkCreateFence_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002300 countingStream->clearPool();
2301 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002302 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002303 return vkCreateFence_VkResult_return;
2304}
2305
2306void VkEncoder::vkDestroyFence(
2307 VkDevice device,
2308 VkFence fence,
2309 const VkAllocationCallbacks* pAllocator)
2310{
2311 auto stream = mImpl->stream();
2312 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002313 auto resources = mImpl->resources();
2314 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002315 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002316 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002317 VkFence local_fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002318 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002319 local_device = device;
2320 local_fence = fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002321 local_pAllocator = nullptr;
2322 if (pAllocator)
2323 {
2324 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2325 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2326 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002327 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002328 if (local_pAllocator)
2329 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002330 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002331 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002332 countingStream->rewind();
2333 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002334 uint64_t cgen_var_156;
2335 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_156, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002336 countingStream->write((uint64_t*)&cgen_var_156, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002337 uint64_t cgen_var_157;
2338 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_157, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002339 countingStream->write((uint64_t*)&cgen_var_157, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002340 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002341 uint64_t cgen_var_158 = (uint64_t)(uintptr_t)local_pAllocator;
2342 countingStream->putBe64(cgen_var_158);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002343 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002344 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002345 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002346 }
2347 }
2348 uint32_t packetSize_vkDestroyFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2349 countingStream->rewind();
2350 uint32_t opcode_vkDestroyFence = OP_vkDestroyFence;
2351 stream->write(&opcode_vkDestroyFence, sizeof(uint32_t));
2352 stream->write(&packetSize_vkDestroyFence, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002353 uint64_t cgen_var_159;
2354 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_159, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002355 stream->write((uint64_t*)&cgen_var_159, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002356 uint64_t cgen_var_160;
2357 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_160, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002358 stream->write((uint64_t*)&cgen_var_160, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002359 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002360 uint64_t cgen_var_161 = (uint64_t)(uintptr_t)local_pAllocator;
2361 stream->putBe64(cgen_var_161);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002362 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002363 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002364 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002365 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002366 resources->destroyMapping()->mapHandles_VkFence((VkFence*)&fence);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002367}
2368
2369VkResult VkEncoder::vkResetFences(
2370 VkDevice device,
2371 uint32_t fenceCount,
2372 const VkFence* pFences)
2373{
2374 auto stream = mImpl->stream();
2375 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002376 auto resources = mImpl->resources();
2377 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002378 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002379 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002380 uint32_t local_fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002381 VkFence* local_pFences;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002382 local_device = device;
2383 local_fenceCount = fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002384 local_pFences = nullptr;
2385 if (pFences)
2386 {
2387 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2388 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002389 countingStream->rewind();
2390 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002391 uint64_t cgen_var_162;
2392 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_162, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002393 countingStream->write((uint64_t*)&cgen_var_162, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002394 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002395 if (((fenceCount)))
2396 {
2397 uint64_t* cgen_var_163;
2398 countingStream->alloc((void**)&cgen_var_163, ((fenceCount)) * 8);
2399 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_163, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002400 countingStream->write((uint64_t*)cgen_var_163, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002401 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002402 }
2403 uint32_t packetSize_vkResetFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2404 countingStream->rewind();
2405 uint32_t opcode_vkResetFences = OP_vkResetFences;
2406 stream->write(&opcode_vkResetFences, sizeof(uint32_t));
2407 stream->write(&packetSize_vkResetFences, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002408 uint64_t cgen_var_164;
2409 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_164, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002410 stream->write((uint64_t*)&cgen_var_164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002411 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002412 if (((fenceCount)))
2413 {
2414 uint64_t* cgen_var_165;
2415 stream->alloc((void**)&cgen_var_165, ((fenceCount)) * 8);
2416 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_165, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002417 stream->write((uint64_t*)cgen_var_165, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002418 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002419 VkResult vkResetFences_VkResult_return = (VkResult)0;
2420 stream->read(&vkResetFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002421 countingStream->clearPool();
2422 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002423 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002424 return vkResetFences_VkResult_return;
2425}
2426
2427VkResult VkEncoder::vkGetFenceStatus(
2428 VkDevice device,
2429 VkFence fence)
2430{
2431 auto stream = mImpl->stream();
2432 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002433 auto resources = mImpl->resources();
2434 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002435 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002436 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002437 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002438 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002439 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002440 countingStream->rewind();
2441 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002442 uint64_t cgen_var_166;
2443 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_166, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002444 countingStream->write((uint64_t*)&cgen_var_166, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002445 uint64_t cgen_var_167;
2446 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_167, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002447 countingStream->write((uint64_t*)&cgen_var_167, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002448 }
2449 uint32_t packetSize_vkGetFenceStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2450 countingStream->rewind();
2451 uint32_t opcode_vkGetFenceStatus = OP_vkGetFenceStatus;
2452 stream->write(&opcode_vkGetFenceStatus, sizeof(uint32_t));
2453 stream->write(&packetSize_vkGetFenceStatus, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002454 uint64_t cgen_var_168;
2455 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_168, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002456 stream->write((uint64_t*)&cgen_var_168, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002457 uint64_t cgen_var_169;
2458 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_169, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002459 stream->write((uint64_t*)&cgen_var_169, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002460 VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
2461 stream->read(&vkGetFenceStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002462 countingStream->clearPool();
2463 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002464 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002465 return vkGetFenceStatus_VkResult_return;
2466}
2467
2468VkResult VkEncoder::vkWaitForFences(
2469 VkDevice device,
2470 uint32_t fenceCount,
2471 const VkFence* pFences,
2472 VkBool32 waitAll,
2473 uint64_t timeout)
2474{
2475 auto stream = mImpl->stream();
2476 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002477 auto resources = mImpl->resources();
2478 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002479 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002480 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002481 uint32_t local_fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002482 VkFence* local_pFences;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002483 VkBool32 local_waitAll;
2484 uint64_t local_timeout;
2485 local_device = device;
2486 local_fenceCount = fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002487 local_pFences = nullptr;
2488 if (pFences)
2489 {
2490 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2491 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002492 local_waitAll = waitAll;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002493 local_timeout = timeout;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002494 countingStream->rewind();
2495 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002496 uint64_t cgen_var_170;
2497 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_170, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002498 countingStream->write((uint64_t*)&cgen_var_170, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002499 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002500 if (((fenceCount)))
2501 {
2502 uint64_t* cgen_var_171;
2503 countingStream->alloc((void**)&cgen_var_171, ((fenceCount)) * 8);
2504 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_171, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002505 countingStream->write((uint64_t*)cgen_var_171, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002506 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002507 countingStream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2508 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002509 }
2510 uint32_t packetSize_vkWaitForFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2511 countingStream->rewind();
2512 uint32_t opcode_vkWaitForFences = OP_vkWaitForFences;
2513 stream->write(&opcode_vkWaitForFences, sizeof(uint32_t));
2514 stream->write(&packetSize_vkWaitForFences, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002515 uint64_t cgen_var_172;
2516 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_172, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002517 stream->write((uint64_t*)&cgen_var_172, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002518 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002519 if (((fenceCount)))
2520 {
2521 uint64_t* cgen_var_173;
2522 stream->alloc((void**)&cgen_var_173, ((fenceCount)) * 8);
2523 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_173, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002524 stream->write((uint64_t*)cgen_var_173, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002525 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002526 stream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2527 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002528 VkResult vkWaitForFences_VkResult_return = (VkResult)0;
2529 stream->read(&vkWaitForFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002530 countingStream->clearPool();
2531 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002532 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002533 return vkWaitForFences_VkResult_return;
2534}
2535
2536VkResult VkEncoder::vkCreateSemaphore(
2537 VkDevice device,
2538 const VkSemaphoreCreateInfo* pCreateInfo,
2539 const VkAllocationCallbacks* pAllocator,
2540 VkSemaphore* pSemaphore)
2541{
2542 auto stream = mImpl->stream();
2543 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002544 auto resources = mImpl->resources();
2545 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002546 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002547 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002548 VkSemaphoreCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002549 VkAllocationCallbacks* local_pAllocator;
2550 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002551 local_pCreateInfo = nullptr;
2552 if (pCreateInfo)
2553 {
2554 local_pCreateInfo = (VkSemaphoreCreateInfo*)pool->alloc(sizeof(const VkSemaphoreCreateInfo));
2555 deepcopy_VkSemaphoreCreateInfo(pool, pCreateInfo, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
2556 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002557 local_pAllocator = nullptr;
2558 if (pAllocator)
2559 {
2560 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2561 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2562 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002563 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002564 if (local_pCreateInfo)
2565 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002566 transform_tohost_VkSemaphoreCreateInfo(mImpl->resources(), (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002567 }
2568 if (local_pAllocator)
2569 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002570 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002571 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002572 countingStream->rewind();
2573 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002574 uint64_t cgen_var_174;
2575 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_174, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002576 countingStream->write((uint64_t*)&cgen_var_174, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002577 marshal_VkSemaphoreCreateInfo(countingStream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002578 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002579 uint64_t cgen_var_175 = (uint64_t)(uintptr_t)local_pAllocator;
2580 countingStream->putBe64(cgen_var_175);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002581 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002582 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002583 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002584 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002585 uint64_t cgen_var_176;
2586 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_176, 1);
2587 countingStream->write((uint64_t*)&cgen_var_176, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002588 }
2589 uint32_t packetSize_vkCreateSemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2590 countingStream->rewind();
2591 uint32_t opcode_vkCreateSemaphore = OP_vkCreateSemaphore;
2592 stream->write(&opcode_vkCreateSemaphore, sizeof(uint32_t));
2593 stream->write(&packetSize_vkCreateSemaphore, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002594 uint64_t cgen_var_177;
2595 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_177, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002596 stream->write((uint64_t*)&cgen_var_177, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002597 marshal_VkSemaphoreCreateInfo(stream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002598 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002599 uint64_t cgen_var_178 = (uint64_t)(uintptr_t)local_pAllocator;
2600 stream->putBe64(cgen_var_178);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002601 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002602 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002603 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002604 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002605 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002606 uint64_t cgen_var_179;
2607 stream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_179, 1);
2608 stream->write((uint64_t*)&cgen_var_179, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002609 stream->setHandleMapping(resources->unwrapMapping());
2610 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002611 uint64_t cgen_var_180;
2612 stream->read((uint64_t*)&cgen_var_180, 8);
2613 stream->handleMapping()->mapHandles_u64_VkSemaphore(&cgen_var_180, (VkSemaphore*)pSemaphore, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002614 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002615 VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
2616 stream->read(&vkCreateSemaphore_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002617 countingStream->clearPool();
2618 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002619 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002620 return vkCreateSemaphore_VkResult_return;
2621}
2622
2623void VkEncoder::vkDestroySemaphore(
2624 VkDevice device,
2625 VkSemaphore semaphore,
2626 const VkAllocationCallbacks* pAllocator)
2627{
2628 auto stream = mImpl->stream();
2629 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002630 auto resources = mImpl->resources();
2631 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002632 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002633 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002634 VkSemaphore local_semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002635 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002636 local_device = device;
2637 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002638 local_pAllocator = nullptr;
2639 if (pAllocator)
2640 {
2641 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2642 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2643 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002644 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002645 if (local_pAllocator)
2646 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002647 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002648 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002649 countingStream->rewind();
2650 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002651 uint64_t cgen_var_181;
2652 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_181, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002653 countingStream->write((uint64_t*)&cgen_var_181, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002654 uint64_t cgen_var_182;
2655 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_182, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002656 countingStream->write((uint64_t*)&cgen_var_182, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002657 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002658 uint64_t cgen_var_183 = (uint64_t)(uintptr_t)local_pAllocator;
2659 countingStream->putBe64(cgen_var_183);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002660 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002661 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002662 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002663 }
2664 }
2665 uint32_t packetSize_vkDestroySemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2666 countingStream->rewind();
2667 uint32_t opcode_vkDestroySemaphore = OP_vkDestroySemaphore;
2668 stream->write(&opcode_vkDestroySemaphore, sizeof(uint32_t));
2669 stream->write(&packetSize_vkDestroySemaphore, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002670 uint64_t cgen_var_184;
2671 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_184, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002672 stream->write((uint64_t*)&cgen_var_184, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002673 uint64_t cgen_var_185;
2674 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_185, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002675 stream->write((uint64_t*)&cgen_var_185, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002676 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002677 uint64_t cgen_var_186 = (uint64_t)(uintptr_t)local_pAllocator;
2678 stream->putBe64(cgen_var_186);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002679 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002680 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002681 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002682 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002683 resources->destroyMapping()->mapHandles_VkSemaphore((VkSemaphore*)&semaphore);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002684}
2685
2686VkResult VkEncoder::vkCreateEvent(
2687 VkDevice device,
2688 const VkEventCreateInfo* pCreateInfo,
2689 const VkAllocationCallbacks* pAllocator,
2690 VkEvent* pEvent)
2691{
2692 auto stream = mImpl->stream();
2693 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002694 auto resources = mImpl->resources();
2695 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002696 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002697 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002698 VkEventCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002699 VkAllocationCallbacks* local_pAllocator;
2700 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002701 local_pCreateInfo = nullptr;
2702 if (pCreateInfo)
2703 {
2704 local_pCreateInfo = (VkEventCreateInfo*)pool->alloc(sizeof(const VkEventCreateInfo));
2705 deepcopy_VkEventCreateInfo(pool, pCreateInfo, (VkEventCreateInfo*)(local_pCreateInfo));
2706 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002707 local_pAllocator = nullptr;
2708 if (pAllocator)
2709 {
2710 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2711 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2712 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002713 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002714 if (local_pCreateInfo)
2715 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002716 transform_tohost_VkEventCreateInfo(mImpl->resources(), (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002717 }
2718 if (local_pAllocator)
2719 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002720 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002721 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002722 countingStream->rewind();
2723 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002724 uint64_t cgen_var_187;
2725 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_187, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002726 countingStream->write((uint64_t*)&cgen_var_187, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002727 marshal_VkEventCreateInfo(countingStream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002728 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002729 uint64_t cgen_var_188 = (uint64_t)(uintptr_t)local_pAllocator;
2730 countingStream->putBe64(cgen_var_188);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002731 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002732 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002733 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002734 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002735 uint64_t cgen_var_189;
2736 countingStream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_189, 1);
2737 countingStream->write((uint64_t*)&cgen_var_189, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002738 }
2739 uint32_t packetSize_vkCreateEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2740 countingStream->rewind();
2741 uint32_t opcode_vkCreateEvent = OP_vkCreateEvent;
2742 stream->write(&opcode_vkCreateEvent, sizeof(uint32_t));
2743 stream->write(&packetSize_vkCreateEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002744 uint64_t cgen_var_190;
2745 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_190, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002746 stream->write((uint64_t*)&cgen_var_190, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002747 marshal_VkEventCreateInfo(stream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002748 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002749 uint64_t cgen_var_191 = (uint64_t)(uintptr_t)local_pAllocator;
2750 stream->putBe64(cgen_var_191);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002751 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002752 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002753 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002754 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002755 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002756 uint64_t cgen_var_192;
2757 stream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_192, 1);
2758 stream->write((uint64_t*)&cgen_var_192, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002759 stream->setHandleMapping(resources->unwrapMapping());
2760 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002761 uint64_t cgen_var_193;
2762 stream->read((uint64_t*)&cgen_var_193, 8);
2763 stream->handleMapping()->mapHandles_u64_VkEvent(&cgen_var_193, (VkEvent*)pEvent, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002764 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002765 VkResult vkCreateEvent_VkResult_return = (VkResult)0;
2766 stream->read(&vkCreateEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002767 countingStream->clearPool();
2768 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002769 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002770 return vkCreateEvent_VkResult_return;
2771}
2772
2773void VkEncoder::vkDestroyEvent(
2774 VkDevice device,
2775 VkEvent event,
2776 const VkAllocationCallbacks* pAllocator)
2777{
2778 auto stream = mImpl->stream();
2779 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002780 auto resources = mImpl->resources();
2781 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002782 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002783 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002784 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002785 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002786 local_device = device;
2787 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002788 local_pAllocator = nullptr;
2789 if (pAllocator)
2790 {
2791 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2792 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2793 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002794 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002795 if (local_pAllocator)
2796 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002797 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002798 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002799 countingStream->rewind();
2800 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002801 uint64_t cgen_var_194;
2802 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_194, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002803 countingStream->write((uint64_t*)&cgen_var_194, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002804 uint64_t cgen_var_195;
2805 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_195, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002806 countingStream->write((uint64_t*)&cgen_var_195, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002807 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002808 uint64_t cgen_var_196 = (uint64_t)(uintptr_t)local_pAllocator;
2809 countingStream->putBe64(cgen_var_196);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002810 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002811 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002812 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002813 }
2814 }
2815 uint32_t packetSize_vkDestroyEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2816 countingStream->rewind();
2817 uint32_t opcode_vkDestroyEvent = OP_vkDestroyEvent;
2818 stream->write(&opcode_vkDestroyEvent, sizeof(uint32_t));
2819 stream->write(&packetSize_vkDestroyEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002820 uint64_t cgen_var_197;
2821 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_197, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002822 stream->write((uint64_t*)&cgen_var_197, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002823 uint64_t cgen_var_198;
2824 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_198, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002825 stream->write((uint64_t*)&cgen_var_198, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002826 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002827 uint64_t cgen_var_199 = (uint64_t)(uintptr_t)local_pAllocator;
2828 stream->putBe64(cgen_var_199);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002829 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002830 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002831 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002832 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002833 resources->destroyMapping()->mapHandles_VkEvent((VkEvent*)&event);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002834}
2835
2836VkResult VkEncoder::vkGetEventStatus(
2837 VkDevice device,
2838 VkEvent event)
2839{
2840 auto stream = mImpl->stream();
2841 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002842 auto resources = mImpl->resources();
2843 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002844 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002845 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002846 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002847 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002848 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002849 countingStream->rewind();
2850 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002851 uint64_t cgen_var_200;
2852 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_200, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002853 countingStream->write((uint64_t*)&cgen_var_200, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002854 uint64_t cgen_var_201;
2855 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_201, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002856 countingStream->write((uint64_t*)&cgen_var_201, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002857 }
2858 uint32_t packetSize_vkGetEventStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2859 countingStream->rewind();
2860 uint32_t opcode_vkGetEventStatus = OP_vkGetEventStatus;
2861 stream->write(&opcode_vkGetEventStatus, sizeof(uint32_t));
2862 stream->write(&packetSize_vkGetEventStatus, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002863 uint64_t cgen_var_202;
2864 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_202, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002865 stream->write((uint64_t*)&cgen_var_202, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002866 uint64_t cgen_var_203;
2867 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_203, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002868 stream->write((uint64_t*)&cgen_var_203, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002869 VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
2870 stream->read(&vkGetEventStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002871 countingStream->clearPool();
2872 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002873 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002874 return vkGetEventStatus_VkResult_return;
2875}
2876
2877VkResult VkEncoder::vkSetEvent(
2878 VkDevice device,
2879 VkEvent event)
2880{
2881 auto stream = mImpl->stream();
2882 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002883 auto resources = mImpl->resources();
2884 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002885 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002886 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002887 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002888 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002889 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002890 countingStream->rewind();
2891 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002892 uint64_t cgen_var_204;
2893 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_204, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002894 countingStream->write((uint64_t*)&cgen_var_204, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002895 uint64_t cgen_var_205;
2896 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_205, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002897 countingStream->write((uint64_t*)&cgen_var_205, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002898 }
2899 uint32_t packetSize_vkSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2900 countingStream->rewind();
2901 uint32_t opcode_vkSetEvent = OP_vkSetEvent;
2902 stream->write(&opcode_vkSetEvent, sizeof(uint32_t));
2903 stream->write(&packetSize_vkSetEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002904 uint64_t cgen_var_206;
2905 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_206, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002906 stream->write((uint64_t*)&cgen_var_206, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002907 uint64_t cgen_var_207;
2908 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_207, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002909 stream->write((uint64_t*)&cgen_var_207, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002910 VkResult vkSetEvent_VkResult_return = (VkResult)0;
2911 stream->read(&vkSetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002912 countingStream->clearPool();
2913 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002914 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002915 return vkSetEvent_VkResult_return;
2916}
2917
2918VkResult VkEncoder::vkResetEvent(
2919 VkDevice device,
2920 VkEvent event)
2921{
2922 auto stream = mImpl->stream();
2923 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002924 auto resources = mImpl->resources();
2925 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002926 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002927 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002928 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002929 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002930 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002931 countingStream->rewind();
2932 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002933 uint64_t cgen_var_208;
2934 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_208, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002935 countingStream->write((uint64_t*)&cgen_var_208, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002936 uint64_t cgen_var_209;
2937 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_209, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002938 countingStream->write((uint64_t*)&cgen_var_209, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002939 }
2940 uint32_t packetSize_vkResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2941 countingStream->rewind();
2942 uint32_t opcode_vkResetEvent = OP_vkResetEvent;
2943 stream->write(&opcode_vkResetEvent, sizeof(uint32_t));
2944 stream->write(&packetSize_vkResetEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002945 uint64_t cgen_var_210;
2946 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_210, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002947 stream->write((uint64_t*)&cgen_var_210, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002948 uint64_t cgen_var_211;
2949 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_211, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002950 stream->write((uint64_t*)&cgen_var_211, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002951 VkResult vkResetEvent_VkResult_return = (VkResult)0;
2952 stream->read(&vkResetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002953 countingStream->clearPool();
2954 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002955 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002956 return vkResetEvent_VkResult_return;
2957}
2958
2959VkResult VkEncoder::vkCreateQueryPool(
2960 VkDevice device,
2961 const VkQueryPoolCreateInfo* pCreateInfo,
2962 const VkAllocationCallbacks* pAllocator,
2963 VkQueryPool* pQueryPool)
2964{
2965 auto stream = mImpl->stream();
2966 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002967 auto resources = mImpl->resources();
2968 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002969 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002970 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002971 VkQueryPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002972 VkAllocationCallbacks* local_pAllocator;
2973 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002974 local_pCreateInfo = nullptr;
2975 if (pCreateInfo)
2976 {
2977 local_pCreateInfo = (VkQueryPoolCreateInfo*)pool->alloc(sizeof(const VkQueryPoolCreateInfo));
2978 deepcopy_VkQueryPoolCreateInfo(pool, pCreateInfo, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
2979 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002980 local_pAllocator = nullptr;
2981 if (pAllocator)
2982 {
2983 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2984 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2985 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002986 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002987 if (local_pCreateInfo)
2988 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002989 transform_tohost_VkQueryPoolCreateInfo(mImpl->resources(), (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002990 }
2991 if (local_pAllocator)
2992 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002993 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002994 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002995 countingStream->rewind();
2996 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002997 uint64_t cgen_var_212;
2998 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_212, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002999 countingStream->write((uint64_t*)&cgen_var_212, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003000 marshal_VkQueryPoolCreateInfo(countingStream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003001 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08003002 uint64_t cgen_var_213 = (uint64_t)(uintptr_t)local_pAllocator;
3003 countingStream->putBe64(cgen_var_213);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003004 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003005 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003006 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003007 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08003008 uint64_t cgen_var_214;
3009 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_214, 1);
3010 countingStream->write((uint64_t*)&cgen_var_214, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003011 }
3012 uint32_t packetSize_vkCreateQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3013 countingStream->rewind();
3014 uint32_t opcode_vkCreateQueryPool = OP_vkCreateQueryPool;
3015 stream->write(&opcode_vkCreateQueryPool, sizeof(uint32_t));
3016 stream->write(&packetSize_vkCreateQueryPool, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003017 uint64_t cgen_var_215;
3018 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_215, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003019 stream->write((uint64_t*)&cgen_var_215, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003020 marshal_VkQueryPoolCreateInfo(stream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003021 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08003022 uint64_t cgen_var_216 = (uint64_t)(uintptr_t)local_pAllocator;
3023 stream->putBe64(cgen_var_216);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003024 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003025 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003026 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003027 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003028 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08003029 uint64_t cgen_var_217;
3030 stream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_217, 1);
3031 stream->write((uint64_t*)&cgen_var_217, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003032 stream->setHandleMapping(resources->unwrapMapping());
3033 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08003034 uint64_t cgen_var_218;
3035 stream->read((uint64_t*)&cgen_var_218, 8);
3036 stream->handleMapping()->mapHandles_u64_VkQueryPool(&cgen_var_218, (VkQueryPool*)pQueryPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003037 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003038 VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
3039 stream->read(&vkCreateQueryPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003040 countingStream->clearPool();
3041 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003042 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003043 return vkCreateQueryPool_VkResult_return;
3044}
3045
3046void VkEncoder::vkDestroyQueryPool(
3047 VkDevice device,
3048 VkQueryPool queryPool,
3049 const VkAllocationCallbacks* pAllocator)
3050{
3051 auto stream = mImpl->stream();
3052 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003053 auto resources = mImpl->resources();
3054 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003055 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003056 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003057 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003058 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003059 local_device = device;
3060 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003061 local_pAllocator = nullptr;
3062 if (pAllocator)
3063 {
3064 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3065 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3066 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003067 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003068 if (local_pAllocator)
3069 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003070 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003071 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003072 countingStream->rewind();
3073 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08003074 uint64_t cgen_var_219;
3075 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_219, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003076 countingStream->write((uint64_t*)&cgen_var_219, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08003077 uint64_t cgen_var_220;
3078 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_220, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003079 countingStream->write((uint64_t*)&cgen_var_220, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003080 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08003081 uint64_t cgen_var_221 = (uint64_t)(uintptr_t)local_pAllocator;
3082 countingStream->putBe64(cgen_var_221);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003083 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003084 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003085 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003086 }
3087 }
3088 uint32_t packetSize_vkDestroyQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3089 countingStream->rewind();
3090 uint32_t opcode_vkDestroyQueryPool = OP_vkDestroyQueryPool;
3091 stream->write(&opcode_vkDestroyQueryPool, sizeof(uint32_t));
3092 stream->write(&packetSize_vkDestroyQueryPool, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003093 uint64_t cgen_var_222;
3094 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_222, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003095 stream->write((uint64_t*)&cgen_var_222, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08003096 uint64_t cgen_var_223;
3097 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_223, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003098 stream->write((uint64_t*)&cgen_var_223, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003099 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08003100 uint64_t cgen_var_224 = (uint64_t)(uintptr_t)local_pAllocator;
3101 stream->putBe64(cgen_var_224);
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(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003105 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003106 resources->destroyMapping()->mapHandles_VkQueryPool((VkQueryPool*)&queryPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003107}
3108
3109VkResult VkEncoder::vkGetQueryPoolResults(
3110 VkDevice device,
3111 VkQueryPool queryPool,
3112 uint32_t firstQuery,
3113 uint32_t queryCount,
3114 size_t dataSize,
3115 void* pData,
3116 VkDeviceSize stride,
3117 VkQueryResultFlags flags)
3118{
3119 auto stream = mImpl->stream();
3120 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003121 auto resources = mImpl->resources();
3122 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003123 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003124 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003125 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003126 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003127 uint32_t local_queryCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003128 size_t local_dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003129 VkDeviceSize local_stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003130 VkQueryResultFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003131 local_device = device;
3132 local_queryPool = queryPool;
3133 local_firstQuery = firstQuery;
3134 local_queryCount = queryCount;
3135 local_dataSize = dataSize;
3136 local_stride = stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003137 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003138 countingStream->rewind();
3139 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08003140 uint64_t cgen_var_225;
3141 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_225, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003142 countingStream->write((uint64_t*)&cgen_var_225, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08003143 uint64_t cgen_var_226;
3144 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_226, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003145 countingStream->write((uint64_t*)&cgen_var_226, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003146 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
3147 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003148 uint64_t cgen_var_227 = (uint64_t)local_dataSize;
3149 countingStream->putBe64(cgen_var_227);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003150 countingStream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003151 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
3152 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003153 }
3154 uint32_t packetSize_vkGetQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3155 countingStream->rewind();
3156 uint32_t opcode_vkGetQueryPoolResults = OP_vkGetQueryPoolResults;
3157 stream->write(&opcode_vkGetQueryPoolResults, sizeof(uint32_t));
3158 stream->write(&packetSize_vkGetQueryPoolResults, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003159 uint64_t cgen_var_228;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003160 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_228, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003161 stream->write((uint64_t*)&cgen_var_228, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003162 uint64_t cgen_var_229;
3163 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_229, 1);
3164 stream->write((uint64_t*)&cgen_var_229, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003165 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
3166 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003167 uint64_t cgen_var_230 = (uint64_t)local_dataSize;
3168 stream->putBe64(cgen_var_230);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003169 stream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003170 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
3171 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003172 stream->read((void*)pData, ((dataSize)) * sizeof(uint8_t));
3173 VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
3174 stream->read(&vkGetQueryPoolResults_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003175 countingStream->clearPool();
3176 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003177 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003178 return vkGetQueryPoolResults_VkResult_return;
3179}
3180
3181VkResult VkEncoder::vkCreateBuffer(
3182 VkDevice device,
3183 const VkBufferCreateInfo* pCreateInfo,
3184 const VkAllocationCallbacks* pAllocator,
3185 VkBuffer* pBuffer)
3186{
3187 auto stream = mImpl->stream();
3188 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003189 auto resources = mImpl->resources();
3190 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003191 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003192 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003193 VkBufferCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003194 VkAllocationCallbacks* local_pAllocator;
3195 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003196 local_pCreateInfo = nullptr;
3197 if (pCreateInfo)
3198 {
3199 local_pCreateInfo = (VkBufferCreateInfo*)pool->alloc(sizeof(const VkBufferCreateInfo));
3200 deepcopy_VkBufferCreateInfo(pool, pCreateInfo, (VkBufferCreateInfo*)(local_pCreateInfo));
3201 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003202 local_pAllocator = nullptr;
3203 if (pAllocator)
3204 {
3205 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3206 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3207 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003208 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003209 if (local_pCreateInfo)
3210 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003211 transform_tohost_VkBufferCreateInfo(mImpl->resources(), (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003212 }
3213 if (local_pAllocator)
3214 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003215 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003216 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003217 countingStream->rewind();
3218 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003219 uint64_t cgen_var_231;
3220 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_231, 1);
3221 countingStream->write((uint64_t*)&cgen_var_231, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003222 marshal_VkBufferCreateInfo(countingStream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003223 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003224 uint64_t cgen_var_232 = (uint64_t)(uintptr_t)local_pAllocator;
3225 countingStream->putBe64(cgen_var_232);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003226 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003227 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003228 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003229 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003230 uint64_t cgen_var_233;
3231 countingStream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_233, 1);
3232 countingStream->write((uint64_t*)&cgen_var_233, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003233 }
3234 uint32_t packetSize_vkCreateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3235 countingStream->rewind();
3236 uint32_t opcode_vkCreateBuffer = OP_vkCreateBuffer;
3237 stream->write(&opcode_vkCreateBuffer, sizeof(uint32_t));
3238 stream->write(&packetSize_vkCreateBuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003239 uint64_t cgen_var_234;
3240 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_234, 1);
3241 stream->write((uint64_t*)&cgen_var_234, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003242 marshal_VkBufferCreateInfo(stream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003243 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003244 uint64_t cgen_var_235 = (uint64_t)(uintptr_t)local_pAllocator;
3245 stream->putBe64(cgen_var_235);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003246 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003247 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003248 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003249 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003250 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003251 uint64_t cgen_var_236;
3252 stream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_236, 1);
3253 stream->write((uint64_t*)&cgen_var_236, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003254 stream->setHandleMapping(resources->unwrapMapping());
3255 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003256 uint64_t cgen_var_237;
3257 stream->read((uint64_t*)&cgen_var_237, 8);
3258 stream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_237, (VkBuffer*)pBuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003259 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003260 VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
3261 stream->read(&vkCreateBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003262 countingStream->clearPool();
3263 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003264 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003265 return vkCreateBuffer_VkResult_return;
3266}
3267
3268void VkEncoder::vkDestroyBuffer(
3269 VkDevice device,
3270 VkBuffer buffer,
3271 const VkAllocationCallbacks* pAllocator)
3272{
3273 auto stream = mImpl->stream();
3274 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003275 auto resources = mImpl->resources();
3276 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003277 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003278 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003279 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003280 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003281 local_device = device;
3282 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003283 local_pAllocator = nullptr;
3284 if (pAllocator)
3285 {
3286 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3287 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3288 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003289 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003290 if (local_pAllocator)
3291 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003292 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003293 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003294 countingStream->rewind();
3295 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003296 uint64_t cgen_var_238;
3297 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_238, 1);
3298 countingStream->write((uint64_t*)&cgen_var_238, 1 * 8);
3299 uint64_t cgen_var_239;
3300 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_239, 1);
3301 countingStream->write((uint64_t*)&cgen_var_239, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003302 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003303 uint64_t cgen_var_240 = (uint64_t)(uintptr_t)local_pAllocator;
3304 countingStream->putBe64(cgen_var_240);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003305 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003306 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003307 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003308 }
3309 }
3310 uint32_t packetSize_vkDestroyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3311 countingStream->rewind();
3312 uint32_t opcode_vkDestroyBuffer = OP_vkDestroyBuffer;
3313 stream->write(&opcode_vkDestroyBuffer, sizeof(uint32_t));
3314 stream->write(&packetSize_vkDestroyBuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003315 uint64_t cgen_var_241;
3316 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_241, 1);
3317 stream->write((uint64_t*)&cgen_var_241, 1 * 8);
3318 uint64_t cgen_var_242;
3319 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_242, 1);
3320 stream->write((uint64_t*)&cgen_var_242, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003321 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003322 uint64_t cgen_var_243 = (uint64_t)(uintptr_t)local_pAllocator;
3323 stream->putBe64(cgen_var_243);
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 Yang71b596b2018-11-07 18:03:25 -08003328 resources->destroyMapping()->mapHandles_VkBuffer((VkBuffer*)&buffer);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003329}
3330
3331VkResult VkEncoder::vkCreateBufferView(
3332 VkDevice device,
3333 const VkBufferViewCreateInfo* pCreateInfo,
3334 const VkAllocationCallbacks* pAllocator,
3335 VkBufferView* pView)
3336{
3337 auto stream = mImpl->stream();
3338 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003339 auto resources = mImpl->resources();
3340 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003341 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003342 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003343 VkBufferViewCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003344 VkAllocationCallbacks* local_pAllocator;
3345 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003346 local_pCreateInfo = nullptr;
3347 if (pCreateInfo)
3348 {
3349 local_pCreateInfo = (VkBufferViewCreateInfo*)pool->alloc(sizeof(const VkBufferViewCreateInfo));
3350 deepcopy_VkBufferViewCreateInfo(pool, pCreateInfo, (VkBufferViewCreateInfo*)(local_pCreateInfo));
3351 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003352 local_pAllocator = nullptr;
3353 if (pAllocator)
3354 {
3355 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3356 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3357 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003358 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003359 if (local_pCreateInfo)
3360 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003361 transform_tohost_VkBufferViewCreateInfo(mImpl->resources(), (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003362 }
3363 if (local_pAllocator)
3364 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003365 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003366 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003367 countingStream->rewind();
3368 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003369 uint64_t cgen_var_244;
3370 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_244, 1);
3371 countingStream->write((uint64_t*)&cgen_var_244, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003372 marshal_VkBufferViewCreateInfo(countingStream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003373 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003374 uint64_t cgen_var_245 = (uint64_t)(uintptr_t)local_pAllocator;
3375 countingStream->putBe64(cgen_var_245);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003376 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003377 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003378 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003379 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003380 uint64_t cgen_var_246;
3381 countingStream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_246, 1);
3382 countingStream->write((uint64_t*)&cgen_var_246, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003383 }
3384 uint32_t packetSize_vkCreateBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3385 countingStream->rewind();
3386 uint32_t opcode_vkCreateBufferView = OP_vkCreateBufferView;
3387 stream->write(&opcode_vkCreateBufferView, sizeof(uint32_t));
3388 stream->write(&packetSize_vkCreateBufferView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003389 uint64_t cgen_var_247;
3390 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_247, 1);
3391 stream->write((uint64_t*)&cgen_var_247, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003392 marshal_VkBufferViewCreateInfo(stream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003393 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003394 uint64_t cgen_var_248 = (uint64_t)(uintptr_t)local_pAllocator;
3395 stream->putBe64(cgen_var_248);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003396 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003397 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003398 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003399 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003400 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003401 uint64_t cgen_var_249;
3402 stream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_249, 1);
3403 stream->write((uint64_t*)&cgen_var_249, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003404 stream->setHandleMapping(resources->unwrapMapping());
3405 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003406 uint64_t cgen_var_250;
3407 stream->read((uint64_t*)&cgen_var_250, 8);
3408 stream->handleMapping()->mapHandles_u64_VkBufferView(&cgen_var_250, (VkBufferView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003409 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003410 VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
3411 stream->read(&vkCreateBufferView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003412 countingStream->clearPool();
3413 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003414 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003415 return vkCreateBufferView_VkResult_return;
3416}
3417
3418void VkEncoder::vkDestroyBufferView(
3419 VkDevice device,
3420 VkBufferView bufferView,
3421 const VkAllocationCallbacks* pAllocator)
3422{
3423 auto stream = mImpl->stream();
3424 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003425 auto resources = mImpl->resources();
3426 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003427 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003428 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003429 VkBufferView local_bufferView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003430 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003431 local_device = device;
3432 local_bufferView = bufferView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003433 local_pAllocator = nullptr;
3434 if (pAllocator)
3435 {
3436 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3437 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3438 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003439 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003440 if (local_pAllocator)
3441 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003442 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003443 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003444 countingStream->rewind();
3445 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003446 uint64_t cgen_var_251;
3447 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_251, 1);
3448 countingStream->write((uint64_t*)&cgen_var_251, 1 * 8);
3449 uint64_t cgen_var_252;
3450 countingStream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_252, 1);
3451 countingStream->write((uint64_t*)&cgen_var_252, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003452 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003453 uint64_t cgen_var_253 = (uint64_t)(uintptr_t)local_pAllocator;
3454 countingStream->putBe64(cgen_var_253);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003455 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003456 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003457 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003458 }
3459 }
3460 uint32_t packetSize_vkDestroyBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3461 countingStream->rewind();
3462 uint32_t opcode_vkDestroyBufferView = OP_vkDestroyBufferView;
3463 stream->write(&opcode_vkDestroyBufferView, sizeof(uint32_t));
3464 stream->write(&packetSize_vkDestroyBufferView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003465 uint64_t cgen_var_254;
3466 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_254, 1);
3467 stream->write((uint64_t*)&cgen_var_254, 1 * 8);
3468 uint64_t cgen_var_255;
3469 stream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_255, 1);
3470 stream->write((uint64_t*)&cgen_var_255, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003471 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003472 uint64_t cgen_var_256 = (uint64_t)(uintptr_t)local_pAllocator;
3473 stream->putBe64(cgen_var_256);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003474 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003475 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003476 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003477 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003478 resources->destroyMapping()->mapHandles_VkBufferView((VkBufferView*)&bufferView);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003479}
3480
3481VkResult VkEncoder::vkCreateImage(
3482 VkDevice device,
3483 const VkImageCreateInfo* pCreateInfo,
3484 const VkAllocationCallbacks* pAllocator,
3485 VkImage* pImage)
3486{
3487 auto stream = mImpl->stream();
3488 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003489 auto resources = mImpl->resources();
3490 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003491 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003492 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003493 VkImageCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003494 VkAllocationCallbacks* local_pAllocator;
3495 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003496 local_pCreateInfo = nullptr;
3497 if (pCreateInfo)
3498 {
3499 local_pCreateInfo = (VkImageCreateInfo*)pool->alloc(sizeof(const VkImageCreateInfo));
3500 deepcopy_VkImageCreateInfo(pool, pCreateInfo, (VkImageCreateInfo*)(local_pCreateInfo));
3501 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003502 local_pAllocator = nullptr;
3503 if (pAllocator)
3504 {
3505 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3506 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3507 }
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08003508 mImpl->resources()->unwrap_VkNativeBufferANDROID(pCreateInfo, local_pCreateInfo);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003509 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003510 if (local_pCreateInfo)
3511 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003512 transform_tohost_VkImageCreateInfo(mImpl->resources(), (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003513 }
3514 if (local_pAllocator)
3515 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003516 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003517 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003518 countingStream->rewind();
3519 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003520 uint64_t cgen_var_257;
3521 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_257, 1);
3522 countingStream->write((uint64_t*)&cgen_var_257, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003523 marshal_VkImageCreateInfo(countingStream, (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003524 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003525 uint64_t cgen_var_258 = (uint64_t)(uintptr_t)local_pAllocator;
3526 countingStream->putBe64(cgen_var_258);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003527 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003528 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003529 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003530 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003531 uint64_t cgen_var_259;
3532 countingStream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_259, 1);
3533 countingStream->write((uint64_t*)&cgen_var_259, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003534 }
3535 uint32_t packetSize_vkCreateImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3536 countingStream->rewind();
3537 uint32_t opcode_vkCreateImage = OP_vkCreateImage;
3538 stream->write(&opcode_vkCreateImage, sizeof(uint32_t));
3539 stream->write(&packetSize_vkCreateImage, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003540 uint64_t cgen_var_260;
3541 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_260, 1);
3542 stream->write((uint64_t*)&cgen_var_260, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003543 marshal_VkImageCreateInfo(stream, (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003544 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003545 uint64_t cgen_var_261 = (uint64_t)(uintptr_t)local_pAllocator;
3546 stream->putBe64(cgen_var_261);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003547 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003548 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003549 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003550 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003551 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003552 uint64_t cgen_var_262;
3553 stream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_262, 1);
3554 stream->write((uint64_t*)&cgen_var_262, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003555 stream->setHandleMapping(resources->unwrapMapping());
3556 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003557 uint64_t cgen_var_263;
3558 stream->read((uint64_t*)&cgen_var_263, 8);
3559 stream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_263, (VkImage*)pImage, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003560 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003561 VkResult vkCreateImage_VkResult_return = (VkResult)0;
3562 stream->read(&vkCreateImage_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003563 countingStream->clearPool();
3564 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003565 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003566 return vkCreateImage_VkResult_return;
3567}
3568
3569void VkEncoder::vkDestroyImage(
3570 VkDevice device,
3571 VkImage image,
3572 const VkAllocationCallbacks* pAllocator)
3573{
3574 auto stream = mImpl->stream();
3575 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003576 auto resources = mImpl->resources();
3577 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003578 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003579 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003580 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003581 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003582 local_device = device;
3583 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003584 local_pAllocator = nullptr;
3585 if (pAllocator)
3586 {
3587 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3588 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3589 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003590 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003591 if (local_pAllocator)
3592 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003593 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003594 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003595 countingStream->rewind();
3596 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003597 uint64_t cgen_var_264;
3598 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_264, 1);
3599 countingStream->write((uint64_t*)&cgen_var_264, 1 * 8);
3600 uint64_t cgen_var_265;
3601 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_265, 1);
3602 countingStream->write((uint64_t*)&cgen_var_265, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003603 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003604 uint64_t cgen_var_266 = (uint64_t)(uintptr_t)local_pAllocator;
3605 countingStream->putBe64(cgen_var_266);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003606 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003607 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003608 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003609 }
3610 }
3611 uint32_t packetSize_vkDestroyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3612 countingStream->rewind();
3613 uint32_t opcode_vkDestroyImage = OP_vkDestroyImage;
3614 stream->write(&opcode_vkDestroyImage, sizeof(uint32_t));
3615 stream->write(&packetSize_vkDestroyImage, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003616 uint64_t cgen_var_267;
3617 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_267, 1);
3618 stream->write((uint64_t*)&cgen_var_267, 1 * 8);
3619 uint64_t cgen_var_268;
3620 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_268, 1);
3621 stream->write((uint64_t*)&cgen_var_268, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003622 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003623 uint64_t cgen_var_269 = (uint64_t)(uintptr_t)local_pAllocator;
3624 stream->putBe64(cgen_var_269);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003625 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003626 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003627 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003628 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003629 resources->destroyMapping()->mapHandles_VkImage((VkImage*)&image);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003630}
3631
3632void VkEncoder::vkGetImageSubresourceLayout(
3633 VkDevice device,
3634 VkImage image,
3635 const VkImageSubresource* pSubresource,
3636 VkSubresourceLayout* pLayout)
3637{
3638 auto stream = mImpl->stream();
3639 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003640 auto resources = mImpl->resources();
3641 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003642 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003643 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003644 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003645 VkImageSubresource* local_pSubresource;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003646 local_device = device;
3647 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003648 local_pSubresource = nullptr;
3649 if (pSubresource)
3650 {
3651 local_pSubresource = (VkImageSubresource*)pool->alloc(sizeof(const VkImageSubresource));
3652 deepcopy_VkImageSubresource(pool, pSubresource, (VkImageSubresource*)(local_pSubresource));
3653 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08003654 if (local_pSubresource)
3655 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003656 transform_tohost_VkImageSubresource(mImpl->resources(), (VkImageSubresource*)(local_pSubresource));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003657 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003658 countingStream->rewind();
3659 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003660 uint64_t cgen_var_270;
3661 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_270, 1);
3662 countingStream->write((uint64_t*)&cgen_var_270, 1 * 8);
3663 uint64_t cgen_var_271;
3664 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_271, 1);
3665 countingStream->write((uint64_t*)&cgen_var_271, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003666 marshal_VkImageSubresource(countingStream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003667 marshal_VkSubresourceLayout(countingStream, (VkSubresourceLayout*)(pLayout));
3668 }
3669 uint32_t packetSize_vkGetImageSubresourceLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3670 countingStream->rewind();
3671 uint32_t opcode_vkGetImageSubresourceLayout = OP_vkGetImageSubresourceLayout;
3672 stream->write(&opcode_vkGetImageSubresourceLayout, sizeof(uint32_t));
3673 stream->write(&packetSize_vkGetImageSubresourceLayout, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003674 uint64_t cgen_var_272;
3675 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_272, 1);
3676 stream->write((uint64_t*)&cgen_var_272, 1 * 8);
3677 uint64_t cgen_var_273;
3678 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_273, 1);
3679 stream->write((uint64_t*)&cgen_var_273, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003680 marshal_VkImageSubresource(stream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003681 marshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
3682 unmarshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
Lingfeng Yang97a06702018-12-24 17:02:43 -08003683 if (pLayout)
3684 {
3685 transform_fromhost_VkSubresourceLayout(mImpl->resources(), (VkSubresourceLayout*)(pLayout));
3686 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003687}
3688
3689VkResult VkEncoder::vkCreateImageView(
3690 VkDevice device,
3691 const VkImageViewCreateInfo* pCreateInfo,
3692 const VkAllocationCallbacks* pAllocator,
3693 VkImageView* pView)
3694{
3695 auto stream = mImpl->stream();
3696 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003697 auto resources = mImpl->resources();
3698 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003699 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003700 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003701 VkImageViewCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003702 VkAllocationCallbacks* local_pAllocator;
3703 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003704 local_pCreateInfo = nullptr;
3705 if (pCreateInfo)
3706 {
3707 local_pCreateInfo = (VkImageViewCreateInfo*)pool->alloc(sizeof(const VkImageViewCreateInfo));
3708 deepcopy_VkImageViewCreateInfo(pool, pCreateInfo, (VkImageViewCreateInfo*)(local_pCreateInfo));
3709 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003710 local_pAllocator = nullptr;
3711 if (pAllocator)
3712 {
3713 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3714 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3715 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003716 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003717 if (local_pCreateInfo)
3718 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003719 transform_tohost_VkImageViewCreateInfo(mImpl->resources(), (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003720 }
3721 if (local_pAllocator)
3722 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003723 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003724 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003725 countingStream->rewind();
3726 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003727 uint64_t cgen_var_274;
3728 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_274, 1);
3729 countingStream->write((uint64_t*)&cgen_var_274, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003730 marshal_VkImageViewCreateInfo(countingStream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003731 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003732 uint64_t cgen_var_275 = (uint64_t)(uintptr_t)local_pAllocator;
3733 countingStream->putBe64(cgen_var_275);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003734 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003735 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003736 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003737 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003738 uint64_t cgen_var_276;
3739 countingStream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_276, 1);
3740 countingStream->write((uint64_t*)&cgen_var_276, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003741 }
3742 uint32_t packetSize_vkCreateImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3743 countingStream->rewind();
3744 uint32_t opcode_vkCreateImageView = OP_vkCreateImageView;
3745 stream->write(&opcode_vkCreateImageView, sizeof(uint32_t));
3746 stream->write(&packetSize_vkCreateImageView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003747 uint64_t cgen_var_277;
3748 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_277, 1);
3749 stream->write((uint64_t*)&cgen_var_277, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003750 marshal_VkImageViewCreateInfo(stream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003751 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003752 uint64_t cgen_var_278 = (uint64_t)(uintptr_t)local_pAllocator;
3753 stream->putBe64(cgen_var_278);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003754 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003755 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003756 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003757 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003758 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003759 uint64_t cgen_var_279;
3760 stream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_279, 1);
3761 stream->write((uint64_t*)&cgen_var_279, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003762 stream->setHandleMapping(resources->unwrapMapping());
3763 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003764 uint64_t cgen_var_280;
3765 stream->read((uint64_t*)&cgen_var_280, 8);
3766 stream->handleMapping()->mapHandles_u64_VkImageView(&cgen_var_280, (VkImageView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003767 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003768 VkResult vkCreateImageView_VkResult_return = (VkResult)0;
3769 stream->read(&vkCreateImageView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003770 countingStream->clearPool();
3771 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003772 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003773 return vkCreateImageView_VkResult_return;
3774}
3775
3776void VkEncoder::vkDestroyImageView(
3777 VkDevice device,
3778 VkImageView imageView,
3779 const VkAllocationCallbacks* pAllocator)
3780{
3781 auto stream = mImpl->stream();
3782 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003783 auto resources = mImpl->resources();
3784 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003785 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003786 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003787 VkImageView local_imageView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003788 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003789 local_device = device;
3790 local_imageView = imageView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003791 local_pAllocator = nullptr;
3792 if (pAllocator)
3793 {
3794 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3795 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3796 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003797 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003798 if (local_pAllocator)
3799 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003800 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003801 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003802 countingStream->rewind();
3803 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003804 uint64_t cgen_var_281;
3805 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_281, 1);
3806 countingStream->write((uint64_t*)&cgen_var_281, 1 * 8);
3807 uint64_t cgen_var_282;
3808 countingStream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_282, 1);
3809 countingStream->write((uint64_t*)&cgen_var_282, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003810 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003811 uint64_t cgen_var_283 = (uint64_t)(uintptr_t)local_pAllocator;
3812 countingStream->putBe64(cgen_var_283);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003813 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003814 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003815 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003816 }
3817 }
3818 uint32_t packetSize_vkDestroyImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3819 countingStream->rewind();
3820 uint32_t opcode_vkDestroyImageView = OP_vkDestroyImageView;
3821 stream->write(&opcode_vkDestroyImageView, sizeof(uint32_t));
3822 stream->write(&packetSize_vkDestroyImageView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003823 uint64_t cgen_var_284;
3824 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_284, 1);
3825 stream->write((uint64_t*)&cgen_var_284, 1 * 8);
3826 uint64_t cgen_var_285;
3827 stream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_285, 1);
3828 stream->write((uint64_t*)&cgen_var_285, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003829 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003830 uint64_t cgen_var_286 = (uint64_t)(uintptr_t)local_pAllocator;
3831 stream->putBe64(cgen_var_286);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003832 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003833 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003834 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003835 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003836 resources->destroyMapping()->mapHandles_VkImageView((VkImageView*)&imageView);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003837}
3838
3839VkResult VkEncoder::vkCreateShaderModule(
3840 VkDevice device,
3841 const VkShaderModuleCreateInfo* pCreateInfo,
3842 const VkAllocationCallbacks* pAllocator,
3843 VkShaderModule* pShaderModule)
3844{
3845 auto stream = mImpl->stream();
3846 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003847 auto resources = mImpl->resources();
3848 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003849 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003850 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003851 VkShaderModuleCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003852 VkAllocationCallbacks* local_pAllocator;
3853 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003854 local_pCreateInfo = nullptr;
3855 if (pCreateInfo)
3856 {
3857 local_pCreateInfo = (VkShaderModuleCreateInfo*)pool->alloc(sizeof(const VkShaderModuleCreateInfo));
3858 deepcopy_VkShaderModuleCreateInfo(pool, pCreateInfo, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
3859 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003860 local_pAllocator = nullptr;
3861 if (pAllocator)
3862 {
3863 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3864 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3865 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003866 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003867 if (local_pCreateInfo)
3868 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003869 transform_tohost_VkShaderModuleCreateInfo(mImpl->resources(), (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003870 }
3871 if (local_pAllocator)
3872 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003873 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003874 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003875 countingStream->rewind();
3876 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003877 uint64_t cgen_var_287;
3878 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_287, 1);
3879 countingStream->write((uint64_t*)&cgen_var_287, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003880 marshal_VkShaderModuleCreateInfo(countingStream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003881 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003882 uint64_t cgen_var_288 = (uint64_t)(uintptr_t)local_pAllocator;
3883 countingStream->putBe64(cgen_var_288);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003884 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003885 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003886 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003887 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003888 uint64_t cgen_var_289;
3889 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_289, 1);
3890 countingStream->write((uint64_t*)&cgen_var_289, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003891 }
3892 uint32_t packetSize_vkCreateShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3893 countingStream->rewind();
3894 uint32_t opcode_vkCreateShaderModule = OP_vkCreateShaderModule;
3895 stream->write(&opcode_vkCreateShaderModule, sizeof(uint32_t));
3896 stream->write(&packetSize_vkCreateShaderModule, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003897 uint64_t cgen_var_290;
3898 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_290, 1);
3899 stream->write((uint64_t*)&cgen_var_290, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003900 marshal_VkShaderModuleCreateInfo(stream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003901 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003902 uint64_t cgen_var_291 = (uint64_t)(uintptr_t)local_pAllocator;
3903 stream->putBe64(cgen_var_291);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003904 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003905 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003906 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003907 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003908 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003909 uint64_t cgen_var_292;
3910 stream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_292, 1);
3911 stream->write((uint64_t*)&cgen_var_292, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003912 stream->setHandleMapping(resources->unwrapMapping());
3913 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003914 uint64_t cgen_var_293;
3915 stream->read((uint64_t*)&cgen_var_293, 8);
3916 stream->handleMapping()->mapHandles_u64_VkShaderModule(&cgen_var_293, (VkShaderModule*)pShaderModule, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003917 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003918 VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
3919 stream->read(&vkCreateShaderModule_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003920 countingStream->clearPool();
3921 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003922 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003923 return vkCreateShaderModule_VkResult_return;
3924}
3925
3926void VkEncoder::vkDestroyShaderModule(
3927 VkDevice device,
3928 VkShaderModule shaderModule,
3929 const VkAllocationCallbacks* pAllocator)
3930{
3931 auto stream = mImpl->stream();
3932 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003933 auto resources = mImpl->resources();
3934 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003935 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003936 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003937 VkShaderModule local_shaderModule;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003938 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003939 local_device = device;
3940 local_shaderModule = shaderModule;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003941 local_pAllocator = nullptr;
3942 if (pAllocator)
3943 {
3944 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3945 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3946 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003947 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003948 if (local_pAllocator)
3949 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003950 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003951 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003952 countingStream->rewind();
3953 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003954 uint64_t cgen_var_294;
3955 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_294, 1);
3956 countingStream->write((uint64_t*)&cgen_var_294, 1 * 8);
3957 uint64_t cgen_var_295;
3958 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_295, 1);
3959 countingStream->write((uint64_t*)&cgen_var_295, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003960 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003961 uint64_t cgen_var_296 = (uint64_t)(uintptr_t)local_pAllocator;
3962 countingStream->putBe64(cgen_var_296);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003963 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003964 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003965 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003966 }
3967 }
3968 uint32_t packetSize_vkDestroyShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3969 countingStream->rewind();
3970 uint32_t opcode_vkDestroyShaderModule = OP_vkDestroyShaderModule;
3971 stream->write(&opcode_vkDestroyShaderModule, sizeof(uint32_t));
3972 stream->write(&packetSize_vkDestroyShaderModule, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003973 uint64_t cgen_var_297;
3974 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_297, 1);
3975 stream->write((uint64_t*)&cgen_var_297, 1 * 8);
3976 uint64_t cgen_var_298;
3977 stream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_298, 1);
3978 stream->write((uint64_t*)&cgen_var_298, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003979 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003980 uint64_t cgen_var_299 = (uint64_t)(uintptr_t)local_pAllocator;
3981 stream->putBe64(cgen_var_299);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003982 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003983 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003984 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003985 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003986 resources->destroyMapping()->mapHandles_VkShaderModule((VkShaderModule*)&shaderModule);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003987}
3988
3989VkResult VkEncoder::vkCreatePipelineCache(
3990 VkDevice device,
3991 const VkPipelineCacheCreateInfo* pCreateInfo,
3992 const VkAllocationCallbacks* pAllocator,
3993 VkPipelineCache* pPipelineCache)
3994{
3995 auto stream = mImpl->stream();
3996 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003997 auto resources = mImpl->resources();
3998 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003999 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004000 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004001 VkPipelineCacheCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004002 VkAllocationCallbacks* local_pAllocator;
4003 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004004 local_pCreateInfo = nullptr;
4005 if (pCreateInfo)
4006 {
4007 local_pCreateInfo = (VkPipelineCacheCreateInfo*)pool->alloc(sizeof(const VkPipelineCacheCreateInfo));
4008 deepcopy_VkPipelineCacheCreateInfo(pool, pCreateInfo, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
4009 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004010 local_pAllocator = nullptr;
4011 if (pAllocator)
4012 {
4013 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4014 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4015 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004016 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004017 if (local_pCreateInfo)
4018 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004019 transform_tohost_VkPipelineCacheCreateInfo(mImpl->resources(), (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004020 }
4021 if (local_pAllocator)
4022 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004023 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004024 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004025 countingStream->rewind();
4026 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004027 uint64_t cgen_var_300;
4028 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_300, 1);
4029 countingStream->write((uint64_t*)&cgen_var_300, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004030 marshal_VkPipelineCacheCreateInfo(countingStream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004031 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004032 uint64_t cgen_var_301 = (uint64_t)(uintptr_t)local_pAllocator;
4033 countingStream->putBe64(cgen_var_301);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004034 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004035 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004036 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004037 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004038 uint64_t cgen_var_302;
4039 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_302, 1);
4040 countingStream->write((uint64_t*)&cgen_var_302, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004041 }
4042 uint32_t packetSize_vkCreatePipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4043 countingStream->rewind();
4044 uint32_t opcode_vkCreatePipelineCache = OP_vkCreatePipelineCache;
4045 stream->write(&opcode_vkCreatePipelineCache, sizeof(uint32_t));
4046 stream->write(&packetSize_vkCreatePipelineCache, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004047 uint64_t cgen_var_303;
4048 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_303, 1);
4049 stream->write((uint64_t*)&cgen_var_303, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004050 marshal_VkPipelineCacheCreateInfo(stream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004051 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004052 uint64_t cgen_var_304 = (uint64_t)(uintptr_t)local_pAllocator;
4053 stream->putBe64(cgen_var_304);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004054 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004055 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004056 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004057 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004058 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004059 uint64_t cgen_var_305;
4060 stream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_305, 1);
4061 stream->write((uint64_t*)&cgen_var_305, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004062 stream->setHandleMapping(resources->unwrapMapping());
4063 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004064 uint64_t cgen_var_306;
4065 stream->read((uint64_t*)&cgen_var_306, 8);
4066 stream->handleMapping()->mapHandles_u64_VkPipelineCache(&cgen_var_306, (VkPipelineCache*)pPipelineCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004067 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004068 VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
4069 stream->read(&vkCreatePipelineCache_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004070 countingStream->clearPool();
4071 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004072 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004073 return vkCreatePipelineCache_VkResult_return;
4074}
4075
4076void VkEncoder::vkDestroyPipelineCache(
4077 VkDevice device,
4078 VkPipelineCache pipelineCache,
4079 const VkAllocationCallbacks* pAllocator)
4080{
4081 auto stream = mImpl->stream();
4082 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004083 auto resources = mImpl->resources();
4084 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004085 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004086 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004087 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004088 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004089 local_device = device;
4090 local_pipelineCache = pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004091 local_pAllocator = nullptr;
4092 if (pAllocator)
4093 {
4094 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4095 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4096 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004097 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004098 if (local_pAllocator)
4099 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004100 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004101 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004102 countingStream->rewind();
4103 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004104 uint64_t cgen_var_307;
4105 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_307, 1);
4106 countingStream->write((uint64_t*)&cgen_var_307, 1 * 8);
4107 uint64_t cgen_var_308;
4108 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_308, 1);
4109 countingStream->write((uint64_t*)&cgen_var_308, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004110 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004111 uint64_t cgen_var_309 = (uint64_t)(uintptr_t)local_pAllocator;
4112 countingStream->putBe64(cgen_var_309);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004113 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004114 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004115 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004116 }
4117 }
4118 uint32_t packetSize_vkDestroyPipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4119 countingStream->rewind();
4120 uint32_t opcode_vkDestroyPipelineCache = OP_vkDestroyPipelineCache;
4121 stream->write(&opcode_vkDestroyPipelineCache, sizeof(uint32_t));
4122 stream->write(&packetSize_vkDestroyPipelineCache, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004123 uint64_t cgen_var_310;
4124 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_310, 1);
4125 stream->write((uint64_t*)&cgen_var_310, 1 * 8);
4126 uint64_t cgen_var_311;
4127 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_311, 1);
4128 stream->write((uint64_t*)&cgen_var_311, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004129 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004130 uint64_t cgen_var_312 = (uint64_t)(uintptr_t)local_pAllocator;
4131 stream->putBe64(cgen_var_312);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004132 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004133 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004134 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004135 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004136 resources->destroyMapping()->mapHandles_VkPipelineCache((VkPipelineCache*)&pipelineCache);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004137}
4138
4139VkResult VkEncoder::vkGetPipelineCacheData(
4140 VkDevice device,
4141 VkPipelineCache pipelineCache,
4142 size_t* pDataSize,
4143 void* pData)
4144{
4145 auto stream = mImpl->stream();
4146 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004147 auto resources = mImpl->resources();
4148 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004149 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004150 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004151 VkPipelineCache local_pipelineCache;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004152 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004153 local_pipelineCache = pipelineCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004154 countingStream->rewind();
4155 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004156 uint64_t cgen_var_313;
4157 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_313, 1);
4158 countingStream->write((uint64_t*)&cgen_var_313, 1 * 8);
4159 uint64_t cgen_var_314;
4160 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_314, 1);
4161 countingStream->write((uint64_t*)&cgen_var_314, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004162 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004163 uint64_t cgen_var_315 = (uint64_t)(uintptr_t)pDataSize;
4164 countingStream->putBe64(cgen_var_315);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004165 if (pDataSize)
4166 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004167 uint64_t cgen_var_316 = (uint64_t)(*pDataSize);
4168 countingStream->putBe64(cgen_var_316);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004169 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004170 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004171 uint64_t cgen_var_317 = (uint64_t)(uintptr_t)pData;
4172 countingStream->putBe64(cgen_var_317);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004173 if (pData)
4174 {
4175 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4176 }
4177 }
4178 uint32_t packetSize_vkGetPipelineCacheData = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4179 countingStream->rewind();
4180 uint32_t opcode_vkGetPipelineCacheData = OP_vkGetPipelineCacheData;
4181 stream->write(&opcode_vkGetPipelineCacheData, sizeof(uint32_t));
4182 stream->write(&packetSize_vkGetPipelineCacheData, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004183 uint64_t cgen_var_318;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004184 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_318, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004185 stream->write((uint64_t*)&cgen_var_318, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004186 uint64_t cgen_var_319;
4187 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_319, 1);
4188 stream->write((uint64_t*)&cgen_var_319, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004189 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004190 uint64_t cgen_var_320 = (uint64_t)(uintptr_t)pDataSize;
4191 stream->putBe64(cgen_var_320);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004192 if (pDataSize)
4193 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004194 uint64_t cgen_var_321 = (uint64_t)(*pDataSize);
4195 stream->putBe64(cgen_var_321);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004196 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004197 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004198 uint64_t cgen_var_322 = (uint64_t)(uintptr_t)pData;
4199 stream->putBe64(cgen_var_322);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004200 if (pData)
4201 {
4202 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4203 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004204 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004205 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004206 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004207 if (pDataSize)
4208 {
4209 if (!(check_pDataSize))
4210 {
4211 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
4212 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004213 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004214 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004215 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004216 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004217 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004218 if (pData)
4219 {
4220 if (!(check_pData))
4221 {
4222 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
4223 }
4224 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4225 }
4226 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
4227 stream->read(&vkGetPipelineCacheData_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004228 countingStream->clearPool();
4229 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004230 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004231 return vkGetPipelineCacheData_VkResult_return;
4232}
4233
4234VkResult VkEncoder::vkMergePipelineCaches(
4235 VkDevice device,
4236 VkPipelineCache dstCache,
4237 uint32_t srcCacheCount,
4238 const VkPipelineCache* pSrcCaches)
4239{
4240 auto stream = mImpl->stream();
4241 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004242 auto resources = mImpl->resources();
4243 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004244 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004245 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004246 VkPipelineCache local_dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004247 uint32_t local_srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004248 VkPipelineCache* local_pSrcCaches;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004249 local_device = device;
4250 local_dstCache = dstCache;
4251 local_srcCacheCount = srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004252 local_pSrcCaches = nullptr;
4253 if (pSrcCaches)
4254 {
4255 local_pSrcCaches = (VkPipelineCache*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache));
4256 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004257 countingStream->rewind();
4258 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004259 uint64_t cgen_var_326;
4260 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_326, 1);
4261 countingStream->write((uint64_t*)&cgen_var_326, 1 * 8);
4262 uint64_t cgen_var_327;
4263 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_327, 1);
4264 countingStream->write((uint64_t*)&cgen_var_327, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004265 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004266 if (((srcCacheCount)))
4267 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004268 uint64_t* cgen_var_328;
4269 countingStream->alloc((void**)&cgen_var_328, ((srcCacheCount)) * 8);
4270 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_328, ((srcCacheCount)));
4271 countingStream->write((uint64_t*)cgen_var_328, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004272 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004273 }
4274 uint32_t packetSize_vkMergePipelineCaches = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4275 countingStream->rewind();
4276 uint32_t opcode_vkMergePipelineCaches = OP_vkMergePipelineCaches;
4277 stream->write(&opcode_vkMergePipelineCaches, sizeof(uint32_t));
4278 stream->write(&packetSize_vkMergePipelineCaches, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004279 uint64_t cgen_var_329;
4280 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_329, 1);
4281 stream->write((uint64_t*)&cgen_var_329, 1 * 8);
4282 uint64_t cgen_var_330;
4283 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_330, 1);
4284 stream->write((uint64_t*)&cgen_var_330, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004285 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004286 if (((srcCacheCount)))
4287 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004288 uint64_t* cgen_var_331;
4289 stream->alloc((void**)&cgen_var_331, ((srcCacheCount)) * 8);
4290 stream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_331, ((srcCacheCount)));
4291 stream->write((uint64_t*)cgen_var_331, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004292 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004293 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
4294 stream->read(&vkMergePipelineCaches_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004295 countingStream->clearPool();
4296 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004297 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004298 return vkMergePipelineCaches_VkResult_return;
4299}
4300
4301VkResult VkEncoder::vkCreateGraphicsPipelines(
4302 VkDevice device,
4303 VkPipelineCache pipelineCache,
4304 uint32_t createInfoCount,
4305 const VkGraphicsPipelineCreateInfo* pCreateInfos,
4306 const VkAllocationCallbacks* pAllocator,
4307 VkPipeline* pPipelines)
4308{
4309 auto stream = mImpl->stream();
4310 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004311 auto resources = mImpl->resources();
4312 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004313 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004314 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004315 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004316 uint32_t local_createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004317 VkGraphicsPipelineCreateInfo* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004318 VkAllocationCallbacks* local_pAllocator;
4319 local_device = device;
4320 local_pipelineCache = pipelineCache;
4321 local_createInfoCount = createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004322 local_pCreateInfos = nullptr;
4323 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004324 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004325 local_pCreateInfos = (VkGraphicsPipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkGraphicsPipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004326 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4327 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004328 deepcopy_VkGraphicsPipelineCreateInfo(pool, pCreateInfos + i, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004329 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004330 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004331 local_pAllocator = nullptr;
4332 if (pAllocator)
4333 {
4334 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4335 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4336 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004337 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004338 if (local_pCreateInfos)
4339 {
4340 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4341 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004342 transform_tohost_VkGraphicsPipelineCreateInfo(mImpl->resources(), (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004343 }
4344 }
4345 if (local_pAllocator)
4346 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004347 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004348 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004349 countingStream->rewind();
4350 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004351 uint64_t cgen_var_332;
4352 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_332, 1);
4353 countingStream->write((uint64_t*)&cgen_var_332, 1 * 8);
4354 uint64_t cgen_var_333;
4355 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_333, 1);
4356 countingStream->write((uint64_t*)&cgen_var_333, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004357 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4358 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4359 {
4360 marshal_VkGraphicsPipelineCreateInfo(countingStream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
4361 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004362 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004363 uint64_t cgen_var_334 = (uint64_t)(uintptr_t)local_pAllocator;
4364 countingStream->putBe64(cgen_var_334);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004365 if (local_pAllocator)
4366 {
4367 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004368 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004369 if (((createInfoCount)))
4370 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004371 uint64_t* cgen_var_335;
4372 countingStream->alloc((void**)&cgen_var_335, ((createInfoCount)) * 8);
4373 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_335, ((createInfoCount)));
4374 countingStream->write((uint64_t*)cgen_var_335, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004375 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004376 }
4377 uint32_t packetSize_vkCreateGraphicsPipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4378 countingStream->rewind();
4379 uint32_t opcode_vkCreateGraphicsPipelines = OP_vkCreateGraphicsPipelines;
4380 stream->write(&opcode_vkCreateGraphicsPipelines, sizeof(uint32_t));
4381 stream->write(&packetSize_vkCreateGraphicsPipelines, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004382 uint64_t cgen_var_336;
4383 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_336, 1);
4384 stream->write((uint64_t*)&cgen_var_336, 1 * 8);
4385 uint64_t cgen_var_337;
4386 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_337, 1);
4387 stream->write((uint64_t*)&cgen_var_337, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004388 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004389 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4390 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004391 marshal_VkGraphicsPipelineCreateInfo(stream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004392 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004393 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004394 uint64_t cgen_var_338 = (uint64_t)(uintptr_t)local_pAllocator;
4395 stream->putBe64(cgen_var_338);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004396 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004397 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004398 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004399 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004400 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004401 if (((createInfoCount)))
4402 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004403 uint64_t* cgen_var_339;
4404 stream->alloc((void**)&cgen_var_339, ((createInfoCount)) * 8);
4405 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_339, ((createInfoCount)));
4406 stream->write((uint64_t*)cgen_var_339, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004407 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004408 stream->setHandleMapping(resources->unwrapMapping());
4409 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004410 if (((createInfoCount)))
4411 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004412 uint64_t* cgen_var_340;
4413 stream->alloc((void**)&cgen_var_340, ((createInfoCount)) * 8);
4414 stream->read((uint64_t*)cgen_var_340, ((createInfoCount)) * 8);
4415 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_340, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004416 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004417 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004418 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
4419 stream->read(&vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004420 countingStream->clearPool();
4421 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004422 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004423 return vkCreateGraphicsPipelines_VkResult_return;
4424}
4425
4426VkResult VkEncoder::vkCreateComputePipelines(
4427 VkDevice device,
4428 VkPipelineCache pipelineCache,
4429 uint32_t createInfoCount,
4430 const VkComputePipelineCreateInfo* pCreateInfos,
4431 const VkAllocationCallbacks* pAllocator,
4432 VkPipeline* pPipelines)
4433{
4434 auto stream = mImpl->stream();
4435 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004436 auto resources = mImpl->resources();
4437 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004438 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004439 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004440 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004441 uint32_t local_createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004442 VkComputePipelineCreateInfo* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004443 VkAllocationCallbacks* local_pAllocator;
4444 local_device = device;
4445 local_pipelineCache = pipelineCache;
4446 local_createInfoCount = createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004447 local_pCreateInfos = nullptr;
4448 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004449 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004450 local_pCreateInfos = (VkComputePipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkComputePipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004451 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4452 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004453 deepcopy_VkComputePipelineCreateInfo(pool, pCreateInfos + i, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004454 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004455 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004456 local_pAllocator = nullptr;
4457 if (pAllocator)
4458 {
4459 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4460 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4461 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004462 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004463 if (local_pCreateInfos)
4464 {
4465 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4466 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004467 transform_tohost_VkComputePipelineCreateInfo(mImpl->resources(), (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004468 }
4469 }
4470 if (local_pAllocator)
4471 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004472 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004473 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004474 countingStream->rewind();
4475 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004476 uint64_t cgen_var_341;
4477 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_341, 1);
4478 countingStream->write((uint64_t*)&cgen_var_341, 1 * 8);
4479 uint64_t cgen_var_342;
4480 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_342, 1);
4481 countingStream->write((uint64_t*)&cgen_var_342, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004482 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4483 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4484 {
4485 marshal_VkComputePipelineCreateInfo(countingStream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
4486 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004487 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004488 uint64_t cgen_var_343 = (uint64_t)(uintptr_t)local_pAllocator;
4489 countingStream->putBe64(cgen_var_343);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004490 if (local_pAllocator)
4491 {
4492 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004493 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004494 if (((createInfoCount)))
4495 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004496 uint64_t* cgen_var_344;
4497 countingStream->alloc((void**)&cgen_var_344, ((createInfoCount)) * 8);
4498 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_344, ((createInfoCount)));
4499 countingStream->write((uint64_t*)cgen_var_344, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004500 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004501 }
4502 uint32_t packetSize_vkCreateComputePipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4503 countingStream->rewind();
4504 uint32_t opcode_vkCreateComputePipelines = OP_vkCreateComputePipelines;
4505 stream->write(&opcode_vkCreateComputePipelines, sizeof(uint32_t));
4506 stream->write(&packetSize_vkCreateComputePipelines, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004507 uint64_t cgen_var_345;
4508 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_345, 1);
4509 stream->write((uint64_t*)&cgen_var_345, 1 * 8);
4510 uint64_t cgen_var_346;
4511 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_346, 1);
4512 stream->write((uint64_t*)&cgen_var_346, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004513 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004514 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4515 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004516 marshal_VkComputePipelineCreateInfo(stream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004517 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004518 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004519 uint64_t cgen_var_347 = (uint64_t)(uintptr_t)local_pAllocator;
4520 stream->putBe64(cgen_var_347);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004521 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004522 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004523 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004524 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004525 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004526 if (((createInfoCount)))
4527 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004528 uint64_t* cgen_var_348;
4529 stream->alloc((void**)&cgen_var_348, ((createInfoCount)) * 8);
4530 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_348, ((createInfoCount)));
4531 stream->write((uint64_t*)cgen_var_348, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004532 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004533 stream->setHandleMapping(resources->unwrapMapping());
4534 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004535 if (((createInfoCount)))
4536 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004537 uint64_t* cgen_var_349;
4538 stream->alloc((void**)&cgen_var_349, ((createInfoCount)) * 8);
4539 stream->read((uint64_t*)cgen_var_349, ((createInfoCount)) * 8);
4540 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_349, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004541 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004542 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004543 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
4544 stream->read(&vkCreateComputePipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004545 countingStream->clearPool();
4546 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004547 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004548 return vkCreateComputePipelines_VkResult_return;
4549}
4550
4551void VkEncoder::vkDestroyPipeline(
4552 VkDevice device,
4553 VkPipeline pipeline,
4554 const VkAllocationCallbacks* pAllocator)
4555{
4556 auto stream = mImpl->stream();
4557 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004558 auto resources = mImpl->resources();
4559 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004560 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004561 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004562 VkPipeline local_pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004563 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004564 local_device = device;
4565 local_pipeline = pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004566 local_pAllocator = nullptr;
4567 if (pAllocator)
4568 {
4569 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4570 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4571 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004572 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004573 if (local_pAllocator)
4574 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004575 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004576 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004577 countingStream->rewind();
4578 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004579 uint64_t cgen_var_350;
4580 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_350, 1);
4581 countingStream->write((uint64_t*)&cgen_var_350, 1 * 8);
4582 uint64_t cgen_var_351;
4583 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_351, 1);
4584 countingStream->write((uint64_t*)&cgen_var_351, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004585 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004586 uint64_t cgen_var_352 = (uint64_t)(uintptr_t)local_pAllocator;
4587 countingStream->putBe64(cgen_var_352);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004588 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004589 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004590 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004591 }
4592 }
4593 uint32_t packetSize_vkDestroyPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4594 countingStream->rewind();
4595 uint32_t opcode_vkDestroyPipeline = OP_vkDestroyPipeline;
4596 stream->write(&opcode_vkDestroyPipeline, sizeof(uint32_t));
4597 stream->write(&packetSize_vkDestroyPipeline, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004598 uint64_t cgen_var_353;
4599 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_353, 1);
4600 stream->write((uint64_t*)&cgen_var_353, 1 * 8);
4601 uint64_t cgen_var_354;
4602 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_354, 1);
4603 stream->write((uint64_t*)&cgen_var_354, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004604 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004605 uint64_t cgen_var_355 = (uint64_t)(uintptr_t)local_pAllocator;
4606 stream->putBe64(cgen_var_355);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004607 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004608 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004609 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004610 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004611 resources->destroyMapping()->mapHandles_VkPipeline((VkPipeline*)&pipeline);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004612}
4613
4614VkResult VkEncoder::vkCreatePipelineLayout(
4615 VkDevice device,
4616 const VkPipelineLayoutCreateInfo* pCreateInfo,
4617 const VkAllocationCallbacks* pAllocator,
4618 VkPipelineLayout* pPipelineLayout)
4619{
4620 auto stream = mImpl->stream();
4621 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004622 auto resources = mImpl->resources();
4623 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004624 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004625 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004626 VkPipelineLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004627 VkAllocationCallbacks* local_pAllocator;
4628 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004629 local_pCreateInfo = nullptr;
4630 if (pCreateInfo)
4631 {
4632 local_pCreateInfo = (VkPipelineLayoutCreateInfo*)pool->alloc(sizeof(const VkPipelineLayoutCreateInfo));
4633 deepcopy_VkPipelineLayoutCreateInfo(pool, pCreateInfo, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
4634 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004635 local_pAllocator = nullptr;
4636 if (pAllocator)
4637 {
4638 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4639 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4640 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004641 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004642 if (local_pCreateInfo)
4643 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004644 transform_tohost_VkPipelineLayoutCreateInfo(mImpl->resources(), (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004645 }
4646 if (local_pAllocator)
4647 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004648 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004649 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004650 countingStream->rewind();
4651 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004652 uint64_t cgen_var_356;
4653 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_356, 1);
4654 countingStream->write((uint64_t*)&cgen_var_356, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004655 marshal_VkPipelineLayoutCreateInfo(countingStream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004656 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004657 uint64_t cgen_var_357 = (uint64_t)(uintptr_t)local_pAllocator;
4658 countingStream->putBe64(cgen_var_357);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004659 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004660 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004661 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004662 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004663 uint64_t cgen_var_358;
4664 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_358, 1);
4665 countingStream->write((uint64_t*)&cgen_var_358, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004666 }
4667 uint32_t packetSize_vkCreatePipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4668 countingStream->rewind();
4669 uint32_t opcode_vkCreatePipelineLayout = OP_vkCreatePipelineLayout;
4670 stream->write(&opcode_vkCreatePipelineLayout, sizeof(uint32_t));
4671 stream->write(&packetSize_vkCreatePipelineLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004672 uint64_t cgen_var_359;
4673 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_359, 1);
4674 stream->write((uint64_t*)&cgen_var_359, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004675 marshal_VkPipelineLayoutCreateInfo(stream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004676 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004677 uint64_t cgen_var_360 = (uint64_t)(uintptr_t)local_pAllocator;
4678 stream->putBe64(cgen_var_360);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004679 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004680 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004681 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004682 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004683 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004684 uint64_t cgen_var_361;
4685 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_361, 1);
4686 stream->write((uint64_t*)&cgen_var_361, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004687 stream->setHandleMapping(resources->unwrapMapping());
4688 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004689 uint64_t cgen_var_362;
4690 stream->read((uint64_t*)&cgen_var_362, 8);
4691 stream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_362, (VkPipelineLayout*)pPipelineLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004692 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004693 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
4694 stream->read(&vkCreatePipelineLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004695 countingStream->clearPool();
4696 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004697 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004698 return vkCreatePipelineLayout_VkResult_return;
4699}
4700
4701void VkEncoder::vkDestroyPipelineLayout(
4702 VkDevice device,
4703 VkPipelineLayout pipelineLayout,
4704 const VkAllocationCallbacks* pAllocator)
4705{
4706 auto stream = mImpl->stream();
4707 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004708 auto resources = mImpl->resources();
4709 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004710 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004711 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004712 VkPipelineLayout local_pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004713 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004714 local_device = device;
4715 local_pipelineLayout = pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004716 local_pAllocator = nullptr;
4717 if (pAllocator)
4718 {
4719 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4720 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4721 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004722 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004723 if (local_pAllocator)
4724 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004725 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004726 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004727 countingStream->rewind();
4728 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004729 uint64_t cgen_var_363;
4730 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_363, 1);
4731 countingStream->write((uint64_t*)&cgen_var_363, 1 * 8);
4732 uint64_t cgen_var_364;
4733 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_364, 1);
4734 countingStream->write((uint64_t*)&cgen_var_364, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004735 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004736 uint64_t cgen_var_365 = (uint64_t)(uintptr_t)local_pAllocator;
4737 countingStream->putBe64(cgen_var_365);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004738 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004739 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004740 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004741 }
4742 }
4743 uint32_t packetSize_vkDestroyPipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4744 countingStream->rewind();
4745 uint32_t opcode_vkDestroyPipelineLayout = OP_vkDestroyPipelineLayout;
4746 stream->write(&opcode_vkDestroyPipelineLayout, sizeof(uint32_t));
4747 stream->write(&packetSize_vkDestroyPipelineLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004748 uint64_t cgen_var_366;
4749 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_366, 1);
4750 stream->write((uint64_t*)&cgen_var_366, 1 * 8);
4751 uint64_t cgen_var_367;
4752 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_367, 1);
4753 stream->write((uint64_t*)&cgen_var_367, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004754 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004755 uint64_t cgen_var_368 = (uint64_t)(uintptr_t)local_pAllocator;
4756 stream->putBe64(cgen_var_368);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004757 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004758 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004759 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004760 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004761 resources->destroyMapping()->mapHandles_VkPipelineLayout((VkPipelineLayout*)&pipelineLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004762}
4763
4764VkResult VkEncoder::vkCreateSampler(
4765 VkDevice device,
4766 const VkSamplerCreateInfo* pCreateInfo,
4767 const VkAllocationCallbacks* pAllocator,
4768 VkSampler* pSampler)
4769{
4770 auto stream = mImpl->stream();
4771 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004772 auto resources = mImpl->resources();
4773 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004774 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004775 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004776 VkSamplerCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004777 VkAllocationCallbacks* local_pAllocator;
4778 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004779 local_pCreateInfo = nullptr;
4780 if (pCreateInfo)
4781 {
4782 local_pCreateInfo = (VkSamplerCreateInfo*)pool->alloc(sizeof(const VkSamplerCreateInfo));
4783 deepcopy_VkSamplerCreateInfo(pool, pCreateInfo, (VkSamplerCreateInfo*)(local_pCreateInfo));
4784 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004785 local_pAllocator = nullptr;
4786 if (pAllocator)
4787 {
4788 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4789 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4790 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004791 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004792 if (local_pCreateInfo)
4793 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004794 transform_tohost_VkSamplerCreateInfo(mImpl->resources(), (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004795 }
4796 if (local_pAllocator)
4797 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004798 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004799 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004800 countingStream->rewind();
4801 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004802 uint64_t cgen_var_369;
4803 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_369, 1);
4804 countingStream->write((uint64_t*)&cgen_var_369, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004805 marshal_VkSamplerCreateInfo(countingStream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004806 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004807 uint64_t cgen_var_370 = (uint64_t)(uintptr_t)local_pAllocator;
4808 countingStream->putBe64(cgen_var_370);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004809 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004810 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004811 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004812 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004813 uint64_t cgen_var_371;
4814 countingStream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_371, 1);
4815 countingStream->write((uint64_t*)&cgen_var_371, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004816 }
4817 uint32_t packetSize_vkCreateSampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4818 countingStream->rewind();
4819 uint32_t opcode_vkCreateSampler = OP_vkCreateSampler;
4820 stream->write(&opcode_vkCreateSampler, sizeof(uint32_t));
4821 stream->write(&packetSize_vkCreateSampler, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004822 uint64_t cgen_var_372;
4823 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_372, 1);
4824 stream->write((uint64_t*)&cgen_var_372, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004825 marshal_VkSamplerCreateInfo(stream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004826 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004827 uint64_t cgen_var_373 = (uint64_t)(uintptr_t)local_pAllocator;
4828 stream->putBe64(cgen_var_373);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004829 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004830 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004831 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004832 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004833 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004834 uint64_t cgen_var_374;
4835 stream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_374, 1);
4836 stream->write((uint64_t*)&cgen_var_374, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004837 stream->setHandleMapping(resources->unwrapMapping());
4838 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004839 uint64_t cgen_var_375;
4840 stream->read((uint64_t*)&cgen_var_375, 8);
4841 stream->handleMapping()->mapHandles_u64_VkSampler(&cgen_var_375, (VkSampler*)pSampler, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004842 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004843 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
4844 stream->read(&vkCreateSampler_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004845 countingStream->clearPool();
4846 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004847 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004848 return vkCreateSampler_VkResult_return;
4849}
4850
4851void VkEncoder::vkDestroySampler(
4852 VkDevice device,
4853 VkSampler sampler,
4854 const VkAllocationCallbacks* pAllocator)
4855{
4856 auto stream = mImpl->stream();
4857 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004858 auto resources = mImpl->resources();
4859 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004860 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004861 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004862 VkSampler local_sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004863 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004864 local_device = device;
4865 local_sampler = sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004866 local_pAllocator = nullptr;
4867 if (pAllocator)
4868 {
4869 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4870 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4871 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004872 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004873 if (local_pAllocator)
4874 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004875 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004876 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004877 countingStream->rewind();
4878 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004879 uint64_t cgen_var_376;
4880 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_376, 1);
4881 countingStream->write((uint64_t*)&cgen_var_376, 1 * 8);
4882 uint64_t cgen_var_377;
4883 countingStream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_377, 1);
4884 countingStream->write((uint64_t*)&cgen_var_377, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004885 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004886 uint64_t cgen_var_378 = (uint64_t)(uintptr_t)local_pAllocator;
4887 countingStream->putBe64(cgen_var_378);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004888 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004889 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004890 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004891 }
4892 }
4893 uint32_t packetSize_vkDestroySampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4894 countingStream->rewind();
4895 uint32_t opcode_vkDestroySampler = OP_vkDestroySampler;
4896 stream->write(&opcode_vkDestroySampler, sizeof(uint32_t));
4897 stream->write(&packetSize_vkDestroySampler, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004898 uint64_t cgen_var_379;
4899 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_379, 1);
4900 stream->write((uint64_t*)&cgen_var_379, 1 * 8);
4901 uint64_t cgen_var_380;
4902 stream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_380, 1);
4903 stream->write((uint64_t*)&cgen_var_380, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004904 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004905 uint64_t cgen_var_381 = (uint64_t)(uintptr_t)local_pAllocator;
4906 stream->putBe64(cgen_var_381);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004907 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004908 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004909 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004910 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004911 resources->destroyMapping()->mapHandles_VkSampler((VkSampler*)&sampler);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004912}
4913
4914VkResult VkEncoder::vkCreateDescriptorSetLayout(
4915 VkDevice device,
4916 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
4917 const VkAllocationCallbacks* pAllocator,
4918 VkDescriptorSetLayout* pSetLayout)
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 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004927 VkAllocationCallbacks* local_pAllocator;
4928 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004929 local_pCreateInfo = nullptr;
4930 if (pCreateInfo)
4931 {
4932 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
4933 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
4934 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004935 local_pAllocator = nullptr;
4936 if (pAllocator)
4937 {
4938 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4939 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4940 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004941 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004942 if (local_pCreateInfo)
4943 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004944 transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004945 }
4946 if (local_pAllocator)
4947 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004948 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004949 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004950 countingStream->rewind();
4951 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004952 uint64_t cgen_var_382;
4953 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_382, 1);
4954 countingStream->write((uint64_t*)&cgen_var_382, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004955 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004956 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004957 uint64_t cgen_var_383 = (uint64_t)(uintptr_t)local_pAllocator;
4958 countingStream->putBe64(cgen_var_383);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004959 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004960 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004961 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004962 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004963 uint64_t cgen_var_384;
4964 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_384, 1);
4965 countingStream->write((uint64_t*)&cgen_var_384, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004966 }
4967 uint32_t packetSize_vkCreateDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4968 countingStream->rewind();
4969 uint32_t opcode_vkCreateDescriptorSetLayout = OP_vkCreateDescriptorSetLayout;
4970 stream->write(&opcode_vkCreateDescriptorSetLayout, sizeof(uint32_t));
4971 stream->write(&packetSize_vkCreateDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004972 uint64_t cgen_var_385;
4973 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_385, 1);
4974 stream->write((uint64_t*)&cgen_var_385, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004975 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004976 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004977 uint64_t cgen_var_386 = (uint64_t)(uintptr_t)local_pAllocator;
4978 stream->putBe64(cgen_var_386);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004979 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004980 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004981 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004982 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004983 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004984 uint64_t cgen_var_387;
4985 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_387, 1);
4986 stream->write((uint64_t*)&cgen_var_387, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004987 stream->setHandleMapping(resources->unwrapMapping());
4988 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004989 uint64_t cgen_var_388;
4990 stream->read((uint64_t*)&cgen_var_388, 8);
4991 stream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(&cgen_var_388, (VkDescriptorSetLayout*)pSetLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004992 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004993 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
4994 stream->read(&vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004995 countingStream->clearPool();
4996 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004997 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004998 return vkCreateDescriptorSetLayout_VkResult_return;
4999}
5000
5001void VkEncoder::vkDestroyDescriptorSetLayout(
5002 VkDevice device,
5003 VkDescriptorSetLayout descriptorSetLayout,
5004 const VkAllocationCallbacks* pAllocator)
5005{
5006 auto stream = mImpl->stream();
5007 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005008 auto resources = mImpl->resources();
5009 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005010 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005011 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005012 VkDescriptorSetLayout local_descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005013 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005014 local_device = device;
5015 local_descriptorSetLayout = descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005016 local_pAllocator = nullptr;
5017 if (pAllocator)
5018 {
5019 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5020 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5021 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005022 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005023 if (local_pAllocator)
5024 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005025 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005026 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005027 countingStream->rewind();
5028 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005029 uint64_t cgen_var_389;
5030 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_389, 1);
5031 countingStream->write((uint64_t*)&cgen_var_389, 1 * 8);
5032 uint64_t cgen_var_390;
5033 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_390, 1);
5034 countingStream->write((uint64_t*)&cgen_var_390, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005035 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005036 uint64_t cgen_var_391 = (uint64_t)(uintptr_t)local_pAllocator;
5037 countingStream->putBe64(cgen_var_391);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005038 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005039 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005040 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005041 }
5042 }
5043 uint32_t packetSize_vkDestroyDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5044 countingStream->rewind();
5045 uint32_t opcode_vkDestroyDescriptorSetLayout = OP_vkDestroyDescriptorSetLayout;
5046 stream->write(&opcode_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
5047 stream->write(&packetSize_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005048 uint64_t cgen_var_392;
5049 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_392, 1);
5050 stream->write((uint64_t*)&cgen_var_392, 1 * 8);
5051 uint64_t cgen_var_393;
5052 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_393, 1);
5053 stream->write((uint64_t*)&cgen_var_393, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005054 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005055 uint64_t cgen_var_394 = (uint64_t)(uintptr_t)local_pAllocator;
5056 stream->putBe64(cgen_var_394);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005057 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005058 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005059 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005060 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005061 resources->destroyMapping()->mapHandles_VkDescriptorSetLayout((VkDescriptorSetLayout*)&descriptorSetLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005062}
5063
5064VkResult VkEncoder::vkCreateDescriptorPool(
5065 VkDevice device,
5066 const VkDescriptorPoolCreateInfo* pCreateInfo,
5067 const VkAllocationCallbacks* pAllocator,
5068 VkDescriptorPool* pDescriptorPool)
5069{
5070 auto stream = mImpl->stream();
5071 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005072 auto resources = mImpl->resources();
5073 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005074 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005075 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005076 VkDescriptorPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005077 VkAllocationCallbacks* local_pAllocator;
5078 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005079 local_pCreateInfo = nullptr;
5080 if (pCreateInfo)
5081 {
5082 local_pCreateInfo = (VkDescriptorPoolCreateInfo*)pool->alloc(sizeof(const VkDescriptorPoolCreateInfo));
5083 deepcopy_VkDescriptorPoolCreateInfo(pool, pCreateInfo, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
5084 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005085 local_pAllocator = nullptr;
5086 if (pAllocator)
5087 {
5088 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5089 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5090 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005091 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005092 if (local_pCreateInfo)
5093 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005094 transform_tohost_VkDescriptorPoolCreateInfo(mImpl->resources(), (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005095 }
5096 if (local_pAllocator)
5097 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005098 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005099 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005100 countingStream->rewind();
5101 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005102 uint64_t cgen_var_395;
5103 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_395, 1);
5104 countingStream->write((uint64_t*)&cgen_var_395, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005105 marshal_VkDescriptorPoolCreateInfo(countingStream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005106 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005107 uint64_t cgen_var_396 = (uint64_t)(uintptr_t)local_pAllocator;
5108 countingStream->putBe64(cgen_var_396);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005109 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005110 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005111 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005112 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005113 uint64_t cgen_var_397;
5114 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_397, 1);
5115 countingStream->write((uint64_t*)&cgen_var_397, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005116 }
5117 uint32_t packetSize_vkCreateDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5118 countingStream->rewind();
5119 uint32_t opcode_vkCreateDescriptorPool = OP_vkCreateDescriptorPool;
5120 stream->write(&opcode_vkCreateDescriptorPool, sizeof(uint32_t));
5121 stream->write(&packetSize_vkCreateDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005122 uint64_t cgen_var_398;
5123 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_398, 1);
5124 stream->write((uint64_t*)&cgen_var_398, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005125 marshal_VkDescriptorPoolCreateInfo(stream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005126 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005127 uint64_t cgen_var_399 = (uint64_t)(uintptr_t)local_pAllocator;
5128 stream->putBe64(cgen_var_399);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005129 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005130 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005131 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005132 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005133 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005134 uint64_t cgen_var_400;
5135 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_400, 1);
5136 stream->write((uint64_t*)&cgen_var_400, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005137 stream->setHandleMapping(resources->unwrapMapping());
5138 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005139 uint64_t cgen_var_401;
5140 stream->read((uint64_t*)&cgen_var_401, 8);
5141 stream->handleMapping()->mapHandles_u64_VkDescriptorPool(&cgen_var_401, (VkDescriptorPool*)pDescriptorPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005142 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005143 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
5144 stream->read(&vkCreateDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005145 countingStream->clearPool();
5146 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005147 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005148 return vkCreateDescriptorPool_VkResult_return;
5149}
5150
5151void VkEncoder::vkDestroyDescriptorPool(
5152 VkDevice device,
5153 VkDescriptorPool descriptorPool,
5154 const VkAllocationCallbacks* pAllocator)
5155{
5156 auto stream = mImpl->stream();
5157 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005158 auto resources = mImpl->resources();
5159 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005160 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005161 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005162 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005163 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005164 local_device = device;
5165 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005166 local_pAllocator = nullptr;
5167 if (pAllocator)
5168 {
5169 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5170 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5171 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005172 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005173 if (local_pAllocator)
5174 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005175 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005176 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005177 countingStream->rewind();
5178 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005179 uint64_t cgen_var_402;
5180 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_402, 1);
5181 countingStream->write((uint64_t*)&cgen_var_402, 1 * 8);
5182 uint64_t cgen_var_403;
5183 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_403, 1);
5184 countingStream->write((uint64_t*)&cgen_var_403, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005185 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005186 uint64_t cgen_var_404 = (uint64_t)(uintptr_t)local_pAllocator;
5187 countingStream->putBe64(cgen_var_404);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005188 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005189 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005190 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005191 }
5192 }
5193 uint32_t packetSize_vkDestroyDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5194 countingStream->rewind();
5195 uint32_t opcode_vkDestroyDescriptorPool = OP_vkDestroyDescriptorPool;
5196 stream->write(&opcode_vkDestroyDescriptorPool, sizeof(uint32_t));
5197 stream->write(&packetSize_vkDestroyDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005198 uint64_t cgen_var_405;
5199 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_405, 1);
5200 stream->write((uint64_t*)&cgen_var_405, 1 * 8);
5201 uint64_t cgen_var_406;
5202 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_406, 1);
5203 stream->write((uint64_t*)&cgen_var_406, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005204 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005205 uint64_t cgen_var_407 = (uint64_t)(uintptr_t)local_pAllocator;
5206 stream->putBe64(cgen_var_407);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005207 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005208 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005209 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005210 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005211 resources->destroyMapping()->mapHandles_VkDescriptorPool((VkDescriptorPool*)&descriptorPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005212}
5213
5214VkResult VkEncoder::vkResetDescriptorPool(
5215 VkDevice device,
5216 VkDescriptorPool descriptorPool,
5217 VkDescriptorPoolResetFlags flags)
5218{
5219 auto stream = mImpl->stream();
5220 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005221 auto resources = mImpl->resources();
5222 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005223 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005224 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005225 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005226 VkDescriptorPoolResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005227 local_device = device;
5228 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005229 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005230 countingStream->rewind();
5231 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005232 uint64_t cgen_var_408;
5233 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_408, 1);
5234 countingStream->write((uint64_t*)&cgen_var_408, 1 * 8);
5235 uint64_t cgen_var_409;
5236 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_409, 1);
5237 countingStream->write((uint64_t*)&cgen_var_409, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005238 countingStream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005239 }
5240 uint32_t packetSize_vkResetDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5241 countingStream->rewind();
5242 uint32_t opcode_vkResetDescriptorPool = OP_vkResetDescriptorPool;
5243 stream->write(&opcode_vkResetDescriptorPool, sizeof(uint32_t));
5244 stream->write(&packetSize_vkResetDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005245 uint64_t cgen_var_410;
5246 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_410, 1);
5247 stream->write((uint64_t*)&cgen_var_410, 1 * 8);
5248 uint64_t cgen_var_411;
5249 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_411, 1);
5250 stream->write((uint64_t*)&cgen_var_411, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005251 stream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005252 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
5253 stream->read(&vkResetDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005254 countingStream->clearPool();
5255 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005256 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005257 return vkResetDescriptorPool_VkResult_return;
5258}
5259
5260VkResult VkEncoder::vkAllocateDescriptorSets(
5261 VkDevice device,
5262 const VkDescriptorSetAllocateInfo* pAllocateInfo,
5263 VkDescriptorSet* pDescriptorSets)
5264{
5265 auto stream = mImpl->stream();
5266 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005267 auto resources = mImpl->resources();
5268 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005269 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005270 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005271 VkDescriptorSetAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005272 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005273 local_pAllocateInfo = nullptr;
5274 if (pAllocateInfo)
5275 {
5276 local_pAllocateInfo = (VkDescriptorSetAllocateInfo*)pool->alloc(sizeof(const VkDescriptorSetAllocateInfo));
5277 deepcopy_VkDescriptorSetAllocateInfo(pool, pAllocateInfo, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
5278 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08005279 if (local_pAllocateInfo)
5280 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005281 transform_tohost_VkDescriptorSetAllocateInfo(mImpl->resources(), (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005282 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005283 countingStream->rewind();
5284 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005285 uint64_t cgen_var_412;
5286 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_412, 1);
5287 countingStream->write((uint64_t*)&cgen_var_412, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005288 marshal_VkDescriptorSetAllocateInfo(countingStream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005289 if (pAllocateInfo->descriptorSetCount)
5290 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005291 uint64_t* cgen_var_413;
5292 countingStream->alloc((void**)&cgen_var_413, pAllocateInfo->descriptorSetCount * 8);
5293 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_413, pAllocateInfo->descriptorSetCount);
5294 countingStream->write((uint64_t*)cgen_var_413, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005295 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005296 }
5297 uint32_t packetSize_vkAllocateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5298 countingStream->rewind();
5299 uint32_t opcode_vkAllocateDescriptorSets = OP_vkAllocateDescriptorSets;
5300 stream->write(&opcode_vkAllocateDescriptorSets, sizeof(uint32_t));
5301 stream->write(&packetSize_vkAllocateDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005302 uint64_t cgen_var_414;
5303 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_414, 1);
5304 stream->write((uint64_t*)&cgen_var_414, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005305 marshal_VkDescriptorSetAllocateInfo(stream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08005306 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08005307 if (pAllocateInfo->descriptorSetCount)
5308 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005309 uint64_t* cgen_var_415;
5310 stream->alloc((void**)&cgen_var_415, pAllocateInfo->descriptorSetCount * 8);
5311 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_415, pAllocateInfo->descriptorSetCount);
5312 stream->write((uint64_t*)cgen_var_415, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005313 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005314 stream->setHandleMapping(resources->unwrapMapping());
5315 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08005316 if (pAllocateInfo->descriptorSetCount)
5317 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005318 uint64_t* cgen_var_416;
5319 stream->alloc((void**)&cgen_var_416, pAllocateInfo->descriptorSetCount * 8);
5320 stream->read((uint64_t*)cgen_var_416, pAllocateInfo->descriptorSetCount * 8);
5321 stream->handleMapping()->mapHandles_u64_VkDescriptorSet(cgen_var_416, (VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005322 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005323 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005324 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
5325 stream->read(&vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005326 countingStream->clearPool();
5327 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005328 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005329 return vkAllocateDescriptorSets_VkResult_return;
5330}
5331
5332VkResult VkEncoder::vkFreeDescriptorSets(
5333 VkDevice device,
5334 VkDescriptorPool descriptorPool,
5335 uint32_t descriptorSetCount,
5336 const VkDescriptorSet* pDescriptorSets)
5337{
5338 auto stream = mImpl->stream();
5339 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005340 auto resources = mImpl->resources();
5341 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005342 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005343 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005344 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005345 uint32_t local_descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005346 VkDescriptorSet* local_pDescriptorSets;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005347 local_device = device;
5348 local_descriptorPool = descriptorPool;
5349 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005350 local_pDescriptorSets = nullptr;
5351 if (pDescriptorSets)
5352 {
5353 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
5354 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005355 countingStream->rewind();
5356 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005357 uint64_t cgen_var_417;
5358 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_417, 1);
5359 countingStream->write((uint64_t*)&cgen_var_417, 1 * 8);
5360 uint64_t cgen_var_418;
5361 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_418, 1);
5362 countingStream->write((uint64_t*)&cgen_var_418, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005363 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005364 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005365 uint64_t cgen_var_419 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5366 countingStream->putBe64(cgen_var_419);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005367 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005368 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005369 if (((descriptorSetCount)))
5370 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005371 uint64_t* cgen_var_420;
5372 countingStream->alloc((void**)&cgen_var_420, ((descriptorSetCount)) * 8);
5373 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_420, ((descriptorSetCount)));
5374 countingStream->write((uint64_t*)cgen_var_420, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005375 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005376 }
5377 }
5378 uint32_t packetSize_vkFreeDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5379 countingStream->rewind();
5380 uint32_t opcode_vkFreeDescriptorSets = OP_vkFreeDescriptorSets;
5381 stream->write(&opcode_vkFreeDescriptorSets, sizeof(uint32_t));
5382 stream->write(&packetSize_vkFreeDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005383 uint64_t cgen_var_421;
5384 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_421, 1);
5385 stream->write((uint64_t*)&cgen_var_421, 1 * 8);
5386 uint64_t cgen_var_422;
5387 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_422, 1);
5388 stream->write((uint64_t*)&cgen_var_422, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005389 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005390 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005391 uint64_t cgen_var_423 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5392 stream->putBe64(cgen_var_423);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005393 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005394 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005395 if (((descriptorSetCount)))
5396 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005397 uint64_t* cgen_var_424;
5398 stream->alloc((void**)&cgen_var_424, ((descriptorSetCount)) * 8);
5399 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_424, ((descriptorSetCount)));
5400 stream->write((uint64_t*)cgen_var_424, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005401 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005402 }
5403 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
5404 stream->read(&vkFreeDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005405 countingStream->clearPool();
5406 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005407 pool->freeAll();
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08005408 if (pDescriptorSets)
5409 {
5410 resources->destroyMapping()->mapHandles_VkDescriptorSet((VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)));
5411 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005412 return vkFreeDescriptorSets_VkResult_return;
5413}
5414
5415void VkEncoder::vkUpdateDescriptorSets(
5416 VkDevice device,
5417 uint32_t descriptorWriteCount,
5418 const VkWriteDescriptorSet* pDescriptorWrites,
5419 uint32_t descriptorCopyCount,
5420 const VkCopyDescriptorSet* pDescriptorCopies)
5421{
5422 auto stream = mImpl->stream();
5423 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005424 auto resources = mImpl->resources();
5425 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005426 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005427 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005428 uint32_t local_descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005429 VkWriteDescriptorSet* local_pDescriptorWrites;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005430 uint32_t local_descriptorCopyCount;
5431 VkCopyDescriptorSet* local_pDescriptorCopies;
5432 local_device = device;
5433 local_descriptorWriteCount = descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005434 local_pDescriptorWrites = nullptr;
5435 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005436 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005437 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005438 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5439 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005440 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005441 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005442 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005443 local_descriptorCopyCount = descriptorCopyCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005444 local_pDescriptorCopies = nullptr;
5445 if (pDescriptorCopies)
5446 {
5447 local_pDescriptorCopies = (VkCopyDescriptorSet*)pool->alloc(((descriptorCopyCount)) * sizeof(const VkCopyDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005448 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5449 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005450 deepcopy_VkCopyDescriptorSet(pool, pDescriptorCopies + i, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
5451 }
5452 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08005453 if (local_pDescriptorWrites)
5454 {
5455 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5456 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005457 transform_tohost_VkWriteDescriptorSet(mImpl->resources(), (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005458 }
5459 }
5460 if (local_pDescriptorCopies)
5461 {
5462 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5463 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005464 transform_tohost_VkCopyDescriptorSet(mImpl->resources(), (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005465 }
5466 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005467 countingStream->rewind();
5468 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005469 uint64_t cgen_var_425;
5470 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_425, 1);
5471 countingStream->write((uint64_t*)&cgen_var_425, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005472 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
5473 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5474 {
5475 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
5476 }
5477 countingStream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
5478 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5479 {
5480 marshal_VkCopyDescriptorSet(countingStream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005481 }
5482 }
5483 uint32_t packetSize_vkUpdateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5484 countingStream->rewind();
5485 uint32_t opcode_vkUpdateDescriptorSets = OP_vkUpdateDescriptorSets;
5486 stream->write(&opcode_vkUpdateDescriptorSets, sizeof(uint32_t));
5487 stream->write(&packetSize_vkUpdateDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005488 uint64_t cgen_var_426;
5489 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_426, 1);
5490 stream->write((uint64_t*)&cgen_var_426, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005491 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005492 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5493 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005494 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005495 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005496 stream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005497 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5498 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005499 marshal_VkCopyDescriptorSet(stream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005500 }
5501}
5502
5503VkResult VkEncoder::vkCreateFramebuffer(
5504 VkDevice device,
5505 const VkFramebufferCreateInfo* pCreateInfo,
5506 const VkAllocationCallbacks* pAllocator,
5507 VkFramebuffer* pFramebuffer)
5508{
5509 auto stream = mImpl->stream();
5510 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005511 auto resources = mImpl->resources();
5512 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005513 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005514 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005515 VkFramebufferCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005516 VkAllocationCallbacks* local_pAllocator;
5517 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005518 local_pCreateInfo = nullptr;
5519 if (pCreateInfo)
5520 {
5521 local_pCreateInfo = (VkFramebufferCreateInfo*)pool->alloc(sizeof(const VkFramebufferCreateInfo));
5522 deepcopy_VkFramebufferCreateInfo(pool, pCreateInfo, (VkFramebufferCreateInfo*)(local_pCreateInfo));
5523 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005524 local_pAllocator = nullptr;
5525 if (pAllocator)
5526 {
5527 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5528 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5529 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005530 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005531 if (local_pCreateInfo)
5532 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005533 transform_tohost_VkFramebufferCreateInfo(mImpl->resources(), (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005534 }
5535 if (local_pAllocator)
5536 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005537 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005538 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005539 countingStream->rewind();
5540 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005541 uint64_t cgen_var_427;
5542 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_427, 1);
5543 countingStream->write((uint64_t*)&cgen_var_427, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005544 marshal_VkFramebufferCreateInfo(countingStream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005545 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005546 uint64_t cgen_var_428 = (uint64_t)(uintptr_t)local_pAllocator;
5547 countingStream->putBe64(cgen_var_428);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005548 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005549 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005550 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005551 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005552 uint64_t cgen_var_429;
5553 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_429, 1);
5554 countingStream->write((uint64_t*)&cgen_var_429, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005555 }
5556 uint32_t packetSize_vkCreateFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5557 countingStream->rewind();
5558 uint32_t opcode_vkCreateFramebuffer = OP_vkCreateFramebuffer;
5559 stream->write(&opcode_vkCreateFramebuffer, sizeof(uint32_t));
5560 stream->write(&packetSize_vkCreateFramebuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005561 uint64_t cgen_var_430;
5562 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_430, 1);
5563 stream->write((uint64_t*)&cgen_var_430, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005564 marshal_VkFramebufferCreateInfo(stream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005565 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005566 uint64_t cgen_var_431 = (uint64_t)(uintptr_t)local_pAllocator;
5567 stream->putBe64(cgen_var_431);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005568 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005569 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005570 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005571 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005572 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005573 uint64_t cgen_var_432;
5574 stream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_432, 1);
5575 stream->write((uint64_t*)&cgen_var_432, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005576 stream->setHandleMapping(resources->unwrapMapping());
5577 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005578 uint64_t cgen_var_433;
5579 stream->read((uint64_t*)&cgen_var_433, 8);
5580 stream->handleMapping()->mapHandles_u64_VkFramebuffer(&cgen_var_433, (VkFramebuffer*)pFramebuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005581 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005582 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
5583 stream->read(&vkCreateFramebuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005584 countingStream->clearPool();
5585 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005586 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005587 return vkCreateFramebuffer_VkResult_return;
5588}
5589
5590void VkEncoder::vkDestroyFramebuffer(
5591 VkDevice device,
5592 VkFramebuffer framebuffer,
5593 const VkAllocationCallbacks* pAllocator)
5594{
5595 auto stream = mImpl->stream();
5596 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005597 auto resources = mImpl->resources();
5598 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005599 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005600 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005601 VkFramebuffer local_framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005602 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005603 local_device = device;
5604 local_framebuffer = framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005605 local_pAllocator = nullptr;
5606 if (pAllocator)
5607 {
5608 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5609 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5610 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005611 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005612 if (local_pAllocator)
5613 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005614 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005615 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005616 countingStream->rewind();
5617 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005618 uint64_t cgen_var_434;
5619 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_434, 1);
5620 countingStream->write((uint64_t*)&cgen_var_434, 1 * 8);
5621 uint64_t cgen_var_435;
5622 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_435, 1);
5623 countingStream->write((uint64_t*)&cgen_var_435, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005624 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005625 uint64_t cgen_var_436 = (uint64_t)(uintptr_t)local_pAllocator;
5626 countingStream->putBe64(cgen_var_436);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005627 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005628 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005629 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005630 }
5631 }
5632 uint32_t packetSize_vkDestroyFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5633 countingStream->rewind();
5634 uint32_t opcode_vkDestroyFramebuffer = OP_vkDestroyFramebuffer;
5635 stream->write(&opcode_vkDestroyFramebuffer, sizeof(uint32_t));
5636 stream->write(&packetSize_vkDestroyFramebuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005637 uint64_t cgen_var_437;
5638 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_437, 1);
5639 stream->write((uint64_t*)&cgen_var_437, 1 * 8);
5640 uint64_t cgen_var_438;
5641 stream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_438, 1);
5642 stream->write((uint64_t*)&cgen_var_438, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005643 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005644 uint64_t cgen_var_439 = (uint64_t)(uintptr_t)local_pAllocator;
5645 stream->putBe64(cgen_var_439);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005646 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005647 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005648 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005649 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005650 resources->destroyMapping()->mapHandles_VkFramebuffer((VkFramebuffer*)&framebuffer);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005651}
5652
5653VkResult VkEncoder::vkCreateRenderPass(
5654 VkDevice device,
5655 const VkRenderPassCreateInfo* pCreateInfo,
5656 const VkAllocationCallbacks* pAllocator,
5657 VkRenderPass* pRenderPass)
5658{
5659 auto stream = mImpl->stream();
5660 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005661 auto resources = mImpl->resources();
5662 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005663 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005664 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005665 VkRenderPassCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005666 VkAllocationCallbacks* local_pAllocator;
5667 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005668 local_pCreateInfo = nullptr;
5669 if (pCreateInfo)
5670 {
5671 local_pCreateInfo = (VkRenderPassCreateInfo*)pool->alloc(sizeof(const VkRenderPassCreateInfo));
5672 deepcopy_VkRenderPassCreateInfo(pool, pCreateInfo, (VkRenderPassCreateInfo*)(local_pCreateInfo));
5673 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005674 local_pAllocator = nullptr;
5675 if (pAllocator)
5676 {
5677 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5678 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5679 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005680 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005681 if (local_pCreateInfo)
5682 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005683 transform_tohost_VkRenderPassCreateInfo(mImpl->resources(), (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005684 }
5685 if (local_pAllocator)
5686 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005687 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005688 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005689 countingStream->rewind();
5690 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005691 uint64_t cgen_var_440;
5692 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_440, 1);
5693 countingStream->write((uint64_t*)&cgen_var_440, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005694 marshal_VkRenderPassCreateInfo(countingStream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005695 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005696 uint64_t cgen_var_441 = (uint64_t)(uintptr_t)local_pAllocator;
5697 countingStream->putBe64(cgen_var_441);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005698 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005699 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005700 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005701 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005702 uint64_t cgen_var_442;
5703 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_442, 1);
5704 countingStream->write((uint64_t*)&cgen_var_442, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005705 }
5706 uint32_t packetSize_vkCreateRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5707 countingStream->rewind();
5708 uint32_t opcode_vkCreateRenderPass = OP_vkCreateRenderPass;
5709 stream->write(&opcode_vkCreateRenderPass, sizeof(uint32_t));
5710 stream->write(&packetSize_vkCreateRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005711 uint64_t cgen_var_443;
5712 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_443, 1);
5713 stream->write((uint64_t*)&cgen_var_443, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005714 marshal_VkRenderPassCreateInfo(stream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005715 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005716 uint64_t cgen_var_444 = (uint64_t)(uintptr_t)local_pAllocator;
5717 stream->putBe64(cgen_var_444);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005718 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005719 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005720 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005721 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005722 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005723 uint64_t cgen_var_445;
5724 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_445, 1);
5725 stream->write((uint64_t*)&cgen_var_445, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005726 stream->setHandleMapping(resources->unwrapMapping());
5727 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005728 uint64_t cgen_var_446;
5729 stream->read((uint64_t*)&cgen_var_446, 8);
5730 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_446, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005731 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005732 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
5733 stream->read(&vkCreateRenderPass_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005734 countingStream->clearPool();
5735 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005736 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005737 return vkCreateRenderPass_VkResult_return;
5738}
5739
5740void VkEncoder::vkDestroyRenderPass(
5741 VkDevice device,
5742 VkRenderPass renderPass,
5743 const VkAllocationCallbacks* pAllocator)
5744{
5745 auto stream = mImpl->stream();
5746 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005747 auto resources = mImpl->resources();
5748 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005749 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005750 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005751 VkRenderPass local_renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005752 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005753 local_device = device;
5754 local_renderPass = renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005755 local_pAllocator = nullptr;
5756 if (pAllocator)
5757 {
5758 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5759 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5760 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005761 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005762 if (local_pAllocator)
5763 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005764 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005765 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005766 countingStream->rewind();
5767 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005768 uint64_t cgen_var_447;
5769 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_447, 1);
5770 countingStream->write((uint64_t*)&cgen_var_447, 1 * 8);
5771 uint64_t cgen_var_448;
5772 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_448, 1);
5773 countingStream->write((uint64_t*)&cgen_var_448, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005774 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005775 uint64_t cgen_var_449 = (uint64_t)(uintptr_t)local_pAllocator;
5776 countingStream->putBe64(cgen_var_449);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005777 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005778 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005779 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005780 }
5781 }
5782 uint32_t packetSize_vkDestroyRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5783 countingStream->rewind();
5784 uint32_t opcode_vkDestroyRenderPass = OP_vkDestroyRenderPass;
5785 stream->write(&opcode_vkDestroyRenderPass, sizeof(uint32_t));
5786 stream->write(&packetSize_vkDestroyRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005787 uint64_t cgen_var_450;
5788 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_450, 1);
5789 stream->write((uint64_t*)&cgen_var_450, 1 * 8);
5790 uint64_t cgen_var_451;
5791 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_451, 1);
5792 stream->write((uint64_t*)&cgen_var_451, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005793 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005794 uint64_t cgen_var_452 = (uint64_t)(uintptr_t)local_pAllocator;
5795 stream->putBe64(cgen_var_452);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005796 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005797 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005798 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005799 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005800 resources->destroyMapping()->mapHandles_VkRenderPass((VkRenderPass*)&renderPass);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005801}
5802
5803void VkEncoder::vkGetRenderAreaGranularity(
5804 VkDevice device,
5805 VkRenderPass renderPass,
5806 VkExtent2D* pGranularity)
5807{
5808 auto stream = mImpl->stream();
5809 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005810 auto resources = mImpl->resources();
5811 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005812 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005813 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005814 VkRenderPass local_renderPass;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005815 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005816 local_renderPass = renderPass;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005817 countingStream->rewind();
5818 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005819 uint64_t cgen_var_453;
5820 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_453, 1);
5821 countingStream->write((uint64_t*)&cgen_var_453, 1 * 8);
5822 uint64_t cgen_var_454;
5823 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_454, 1);
5824 countingStream->write((uint64_t*)&cgen_var_454, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005825 marshal_VkExtent2D(countingStream, (VkExtent2D*)(pGranularity));
5826 }
5827 uint32_t packetSize_vkGetRenderAreaGranularity = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5828 countingStream->rewind();
5829 uint32_t opcode_vkGetRenderAreaGranularity = OP_vkGetRenderAreaGranularity;
5830 stream->write(&opcode_vkGetRenderAreaGranularity, sizeof(uint32_t));
5831 stream->write(&packetSize_vkGetRenderAreaGranularity, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005832 uint64_t cgen_var_455;
5833 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_455, 1);
5834 stream->write((uint64_t*)&cgen_var_455, 1 * 8);
5835 uint64_t cgen_var_456;
5836 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_456, 1);
5837 stream->write((uint64_t*)&cgen_var_456, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005838 marshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
5839 unmarshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
Lingfeng Yang97a06702018-12-24 17:02:43 -08005840 if (pGranularity)
5841 {
5842 transform_fromhost_VkExtent2D(mImpl->resources(), (VkExtent2D*)(pGranularity));
5843 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005844}
5845
5846VkResult VkEncoder::vkCreateCommandPool(
5847 VkDevice device,
5848 const VkCommandPoolCreateInfo* pCreateInfo,
5849 const VkAllocationCallbacks* pAllocator,
5850 VkCommandPool* pCommandPool)
5851{
5852 auto stream = mImpl->stream();
5853 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005854 auto resources = mImpl->resources();
5855 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005856 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005857 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005858 VkCommandPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005859 VkAllocationCallbacks* local_pAllocator;
5860 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005861 local_pCreateInfo = nullptr;
5862 if (pCreateInfo)
5863 {
5864 local_pCreateInfo = (VkCommandPoolCreateInfo*)pool->alloc(sizeof(const VkCommandPoolCreateInfo));
5865 deepcopy_VkCommandPoolCreateInfo(pool, pCreateInfo, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
5866 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005867 local_pAllocator = nullptr;
5868 if (pAllocator)
5869 {
5870 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5871 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5872 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005873 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005874 if (local_pCreateInfo)
5875 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005876 transform_tohost_VkCommandPoolCreateInfo(mImpl->resources(), (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005877 }
5878 if (local_pAllocator)
5879 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005880 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005881 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005882 countingStream->rewind();
5883 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005884 uint64_t cgen_var_457;
5885 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_457, 1);
5886 countingStream->write((uint64_t*)&cgen_var_457, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005887 marshal_VkCommandPoolCreateInfo(countingStream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005888 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005889 uint64_t cgen_var_458 = (uint64_t)(uintptr_t)local_pAllocator;
5890 countingStream->putBe64(cgen_var_458);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005891 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005892 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005893 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005894 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005895 uint64_t cgen_var_459;
5896 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_459, 1);
5897 countingStream->write((uint64_t*)&cgen_var_459, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005898 }
5899 uint32_t packetSize_vkCreateCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5900 countingStream->rewind();
5901 uint32_t opcode_vkCreateCommandPool = OP_vkCreateCommandPool;
5902 stream->write(&opcode_vkCreateCommandPool, sizeof(uint32_t));
5903 stream->write(&packetSize_vkCreateCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005904 uint64_t cgen_var_460;
5905 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_460, 1);
5906 stream->write((uint64_t*)&cgen_var_460, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005907 marshal_VkCommandPoolCreateInfo(stream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005908 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005909 uint64_t cgen_var_461 = (uint64_t)(uintptr_t)local_pAllocator;
5910 stream->putBe64(cgen_var_461);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005911 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005912 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005913 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005914 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005915 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005916 uint64_t cgen_var_462;
5917 stream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_462, 1);
5918 stream->write((uint64_t*)&cgen_var_462, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005919 stream->setHandleMapping(resources->unwrapMapping());
5920 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005921 uint64_t cgen_var_463;
5922 stream->read((uint64_t*)&cgen_var_463, 8);
5923 stream->handleMapping()->mapHandles_u64_VkCommandPool(&cgen_var_463, (VkCommandPool*)pCommandPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005924 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005925 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
5926 stream->read(&vkCreateCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005927 countingStream->clearPool();
5928 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005929 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005930 return vkCreateCommandPool_VkResult_return;
5931}
5932
5933void VkEncoder::vkDestroyCommandPool(
5934 VkDevice device,
5935 VkCommandPool commandPool,
5936 const VkAllocationCallbacks* pAllocator)
5937{
5938 auto stream = mImpl->stream();
5939 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005940 auto resources = mImpl->resources();
5941 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005942 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005943 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005944 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005945 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005946 local_device = device;
5947 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005948 local_pAllocator = nullptr;
5949 if (pAllocator)
5950 {
5951 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5952 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5953 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005954 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005955 if (local_pAllocator)
5956 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005957 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005958 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005959 countingStream->rewind();
5960 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005961 uint64_t cgen_var_464;
5962 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_464, 1);
5963 countingStream->write((uint64_t*)&cgen_var_464, 1 * 8);
5964 uint64_t cgen_var_465;
5965 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_465, 1);
5966 countingStream->write((uint64_t*)&cgen_var_465, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005967 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005968 uint64_t cgen_var_466 = (uint64_t)(uintptr_t)local_pAllocator;
5969 countingStream->putBe64(cgen_var_466);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005970 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005971 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005972 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005973 }
5974 }
5975 uint32_t packetSize_vkDestroyCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5976 countingStream->rewind();
5977 uint32_t opcode_vkDestroyCommandPool = OP_vkDestroyCommandPool;
5978 stream->write(&opcode_vkDestroyCommandPool, sizeof(uint32_t));
5979 stream->write(&packetSize_vkDestroyCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005980 uint64_t cgen_var_467;
5981 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_467, 1);
5982 stream->write((uint64_t*)&cgen_var_467, 1 * 8);
5983 uint64_t cgen_var_468;
5984 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_468, 1);
5985 stream->write((uint64_t*)&cgen_var_468, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005986 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005987 uint64_t cgen_var_469 = (uint64_t)(uintptr_t)local_pAllocator;
5988 stream->putBe64(cgen_var_469);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005989 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005990 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005991 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005992 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005993 resources->destroyMapping()->mapHandles_VkCommandPool((VkCommandPool*)&commandPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005994}
5995
5996VkResult VkEncoder::vkResetCommandPool(
5997 VkDevice device,
5998 VkCommandPool commandPool,
5999 VkCommandPoolResetFlags flags)
6000{
6001 auto stream = mImpl->stream();
6002 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006003 auto resources = mImpl->resources();
6004 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006005 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006006 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006007 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006008 VkCommandPoolResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006009 local_device = device;
6010 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006011 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006012 countingStream->rewind();
6013 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006014 uint64_t cgen_var_470;
6015 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_470, 1);
6016 countingStream->write((uint64_t*)&cgen_var_470, 1 * 8);
6017 uint64_t cgen_var_471;
6018 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_471, 1);
6019 countingStream->write((uint64_t*)&cgen_var_471, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006020 countingStream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006021 }
6022 uint32_t packetSize_vkResetCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6023 countingStream->rewind();
6024 uint32_t opcode_vkResetCommandPool = OP_vkResetCommandPool;
6025 stream->write(&opcode_vkResetCommandPool, sizeof(uint32_t));
6026 stream->write(&packetSize_vkResetCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006027 uint64_t cgen_var_472;
6028 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_472, 1);
6029 stream->write((uint64_t*)&cgen_var_472, 1 * 8);
6030 uint64_t cgen_var_473;
6031 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_473, 1);
6032 stream->write((uint64_t*)&cgen_var_473, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006033 stream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006034 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
6035 stream->read(&vkResetCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006036 countingStream->clearPool();
6037 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006038 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006039 return vkResetCommandPool_VkResult_return;
6040}
6041
6042VkResult VkEncoder::vkAllocateCommandBuffers(
6043 VkDevice device,
6044 const VkCommandBufferAllocateInfo* pAllocateInfo,
6045 VkCommandBuffer* pCommandBuffers)
6046{
6047 auto stream = mImpl->stream();
6048 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006049 auto resources = mImpl->resources();
6050 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006051 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006052 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006053 VkCommandBufferAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006054 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006055 local_pAllocateInfo = nullptr;
6056 if (pAllocateInfo)
6057 {
6058 local_pAllocateInfo = (VkCommandBufferAllocateInfo*)pool->alloc(sizeof(const VkCommandBufferAllocateInfo));
6059 deepcopy_VkCommandBufferAllocateInfo(pool, pAllocateInfo, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
6060 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006061 if (local_pAllocateInfo)
6062 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006063 transform_tohost_VkCommandBufferAllocateInfo(mImpl->resources(), (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006064 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006065 countingStream->rewind();
6066 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006067 uint64_t cgen_var_474;
6068 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_474, 1);
6069 countingStream->write((uint64_t*)&cgen_var_474, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006070 marshal_VkCommandBufferAllocateInfo(countingStream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006071 if (pAllocateInfo->commandBufferCount)
6072 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006073 uint64_t* cgen_var_475;
6074 countingStream->alloc((void**)&cgen_var_475, pAllocateInfo->commandBufferCount * 8);
6075 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_475, pAllocateInfo->commandBufferCount);
6076 countingStream->write((uint64_t*)cgen_var_475, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006077 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006078 }
6079 uint32_t packetSize_vkAllocateCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6080 countingStream->rewind();
6081 uint32_t opcode_vkAllocateCommandBuffers = OP_vkAllocateCommandBuffers;
6082 stream->write(&opcode_vkAllocateCommandBuffers, sizeof(uint32_t));
6083 stream->write(&packetSize_vkAllocateCommandBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006084 uint64_t cgen_var_476;
6085 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_476, 1);
6086 stream->write((uint64_t*)&cgen_var_476, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006087 marshal_VkCommandBufferAllocateInfo(stream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08006088 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08006089 if (pAllocateInfo->commandBufferCount)
6090 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006091 uint64_t* cgen_var_477;
6092 stream->alloc((void**)&cgen_var_477, pAllocateInfo->commandBufferCount * 8);
6093 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_477, pAllocateInfo->commandBufferCount);
6094 stream->write((uint64_t*)cgen_var_477, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006095 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006096 stream->setHandleMapping(resources->unwrapMapping());
6097 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08006098 if (pAllocateInfo->commandBufferCount)
6099 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006100 uint64_t* cgen_var_478;
6101 stream->alloc((void**)&cgen_var_478, pAllocateInfo->commandBufferCount * 8);
6102 stream->read((uint64_t*)cgen_var_478, pAllocateInfo->commandBufferCount * 8);
6103 stream->handleMapping()->mapHandles_u64_VkCommandBuffer(cgen_var_478, (VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006104 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006105 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006106 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
6107 stream->read(&vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006108 countingStream->clearPool();
6109 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006110 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006111 return vkAllocateCommandBuffers_VkResult_return;
6112}
6113
6114void VkEncoder::vkFreeCommandBuffers(
6115 VkDevice device,
6116 VkCommandPool commandPool,
6117 uint32_t commandBufferCount,
6118 const VkCommandBuffer* pCommandBuffers)
6119{
6120 auto stream = mImpl->stream();
6121 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006122 auto resources = mImpl->resources();
6123 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006124 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006125 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006126 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006127 uint32_t local_commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006128 VkCommandBuffer* local_pCommandBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006129 local_device = device;
6130 local_commandPool = commandPool;
6131 local_commandBufferCount = commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006132 local_pCommandBuffers = nullptr;
6133 if (pCommandBuffers)
6134 {
6135 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
6136 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006137 countingStream->rewind();
6138 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006139 uint64_t cgen_var_479;
6140 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_479, 1);
6141 countingStream->write((uint64_t*)&cgen_var_479, 1 * 8);
6142 uint64_t cgen_var_480;
6143 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_480, 1);
6144 countingStream->write((uint64_t*)&cgen_var_480, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006145 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006146 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006147 uint64_t cgen_var_481 = (uint64_t)(uintptr_t)local_pCommandBuffers;
6148 countingStream->putBe64(cgen_var_481);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006149 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006150 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08006151 if (((commandBufferCount)))
6152 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006153 uint64_t* cgen_var_482;
6154 countingStream->alloc((void**)&cgen_var_482, ((commandBufferCount)) * 8);
6155 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_482, ((commandBufferCount)));
6156 countingStream->write((uint64_t*)cgen_var_482, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006157 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006158 }
6159 }
6160 uint32_t packetSize_vkFreeCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6161 countingStream->rewind();
6162 uint32_t opcode_vkFreeCommandBuffers = OP_vkFreeCommandBuffers;
6163 stream->write(&opcode_vkFreeCommandBuffers, sizeof(uint32_t));
6164 stream->write(&packetSize_vkFreeCommandBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006165 uint64_t cgen_var_483;
6166 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_483, 1);
6167 stream->write((uint64_t*)&cgen_var_483, 1 * 8);
6168 uint64_t cgen_var_484;
6169 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_484, 1);
6170 stream->write((uint64_t*)&cgen_var_484, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006171 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006172 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006173 uint64_t cgen_var_485 = (uint64_t)(uintptr_t)local_pCommandBuffers;
6174 stream->putBe64(cgen_var_485);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006175 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006176 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08006177 if (((commandBufferCount)))
6178 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006179 uint64_t* cgen_var_486;
6180 stream->alloc((void**)&cgen_var_486, ((commandBufferCount)) * 8);
6181 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_486, ((commandBufferCount)));
6182 stream->write((uint64_t*)cgen_var_486, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006183 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006184 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006185 if (pCommandBuffers)
6186 {
6187 resources->destroyMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)));
6188 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006189}
6190
6191VkResult VkEncoder::vkBeginCommandBuffer(
6192 VkCommandBuffer commandBuffer,
6193 const VkCommandBufferBeginInfo* pBeginInfo)
6194{
6195 auto stream = mImpl->stream();
6196 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006197 auto resources = mImpl->resources();
6198 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006199 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006200 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006201 VkCommandBufferBeginInfo* local_pBeginInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006202 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006203 local_pBeginInfo = nullptr;
6204 if (pBeginInfo)
6205 {
6206 local_pBeginInfo = (VkCommandBufferBeginInfo*)pool->alloc(sizeof(const VkCommandBufferBeginInfo));
6207 deepcopy_VkCommandBufferBeginInfo(pool, pBeginInfo, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
6208 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006209 if (local_pBeginInfo)
6210 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006211 transform_tohost_VkCommandBufferBeginInfo(mImpl->resources(), (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006212 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006213 countingStream->rewind();
6214 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006215 uint64_t cgen_var_487;
6216 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_487, 1);
6217 countingStream->write((uint64_t*)&cgen_var_487, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006218 marshal_VkCommandBufferBeginInfo(countingStream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006219 }
6220 uint32_t packetSize_vkBeginCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6221 countingStream->rewind();
6222 uint32_t opcode_vkBeginCommandBuffer = OP_vkBeginCommandBuffer;
6223 stream->write(&opcode_vkBeginCommandBuffer, sizeof(uint32_t));
6224 stream->write(&packetSize_vkBeginCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006225 uint64_t cgen_var_488;
6226 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_488, 1);
6227 stream->write((uint64_t*)&cgen_var_488, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006228 marshal_VkCommandBufferBeginInfo(stream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006229 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
6230 stream->read(&vkBeginCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006231 countingStream->clearPool();
6232 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006233 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006234 return vkBeginCommandBuffer_VkResult_return;
6235}
6236
6237VkResult VkEncoder::vkEndCommandBuffer(
6238 VkCommandBuffer commandBuffer)
6239{
6240 auto stream = mImpl->stream();
6241 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006242 auto resources = mImpl->resources();
6243 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006244 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006245 VkCommandBuffer local_commandBuffer;
6246 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006247 countingStream->rewind();
6248 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006249 uint64_t cgen_var_489;
6250 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_489, 1);
6251 countingStream->write((uint64_t*)&cgen_var_489, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006252 }
6253 uint32_t packetSize_vkEndCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6254 countingStream->rewind();
6255 uint32_t opcode_vkEndCommandBuffer = OP_vkEndCommandBuffer;
6256 stream->write(&opcode_vkEndCommandBuffer, sizeof(uint32_t));
6257 stream->write(&packetSize_vkEndCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006258 uint64_t cgen_var_490;
6259 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_490, 1);
6260 stream->write((uint64_t*)&cgen_var_490, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006261 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
6262 stream->read(&vkEndCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006263 countingStream->clearPool();
6264 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006265 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006266 return vkEndCommandBuffer_VkResult_return;
6267}
6268
6269VkResult VkEncoder::vkResetCommandBuffer(
6270 VkCommandBuffer commandBuffer,
6271 VkCommandBufferResetFlags flags)
6272{
6273 auto stream = mImpl->stream();
6274 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006275 auto resources = mImpl->resources();
6276 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006277 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006278 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006279 VkCommandBufferResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006280 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006281 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006282 countingStream->rewind();
6283 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006284 uint64_t cgen_var_491;
6285 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_491, 1);
6286 countingStream->write((uint64_t*)&cgen_var_491, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006287 countingStream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006288 }
6289 uint32_t packetSize_vkResetCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6290 countingStream->rewind();
6291 uint32_t opcode_vkResetCommandBuffer = OP_vkResetCommandBuffer;
6292 stream->write(&opcode_vkResetCommandBuffer, sizeof(uint32_t));
6293 stream->write(&packetSize_vkResetCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006294 uint64_t cgen_var_492;
6295 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_492, 1);
6296 stream->write((uint64_t*)&cgen_var_492, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006297 stream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006298 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
6299 stream->read(&vkResetCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006300 countingStream->clearPool();
6301 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006302 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006303 return vkResetCommandBuffer_VkResult_return;
6304}
6305
6306void VkEncoder::vkCmdBindPipeline(
6307 VkCommandBuffer commandBuffer,
6308 VkPipelineBindPoint pipelineBindPoint,
6309 VkPipeline pipeline)
6310{
6311 auto stream = mImpl->stream();
6312 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006313 auto resources = mImpl->resources();
6314 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006315 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006316 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006317 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006318 VkPipeline local_pipeline;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006319 local_commandBuffer = commandBuffer;
6320 local_pipelineBindPoint = pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006321 local_pipeline = pipeline;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006322 countingStream->rewind();
6323 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006324 uint64_t cgen_var_493;
6325 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_493, 1);
6326 countingStream->write((uint64_t*)&cgen_var_493, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006327 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006328 uint64_t cgen_var_494;
6329 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_494, 1);
6330 countingStream->write((uint64_t*)&cgen_var_494, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006331 }
6332 uint32_t packetSize_vkCmdBindPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6333 countingStream->rewind();
6334 uint32_t opcode_vkCmdBindPipeline = OP_vkCmdBindPipeline;
6335 stream->write(&opcode_vkCmdBindPipeline, sizeof(uint32_t));
6336 stream->write(&packetSize_vkCmdBindPipeline, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006337 uint64_t cgen_var_495;
6338 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_495, 1);
6339 stream->write((uint64_t*)&cgen_var_495, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006340 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006341 uint64_t cgen_var_496;
6342 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_496, 1);
6343 stream->write((uint64_t*)&cgen_var_496, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006344}
6345
6346void VkEncoder::vkCmdSetViewport(
6347 VkCommandBuffer commandBuffer,
6348 uint32_t firstViewport,
6349 uint32_t viewportCount,
6350 const VkViewport* pViewports)
6351{
6352 auto stream = mImpl->stream();
6353 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006354 auto resources = mImpl->resources();
6355 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006356 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006357 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006358 uint32_t local_firstViewport;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006359 uint32_t local_viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006360 VkViewport* local_pViewports;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006361 local_commandBuffer = commandBuffer;
6362 local_firstViewport = firstViewport;
6363 local_viewportCount = viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006364 local_pViewports = nullptr;
6365 if (pViewports)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006366 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006367 local_pViewports = (VkViewport*)pool->alloc(((viewportCount)) * sizeof(const VkViewport));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006368 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6369 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006370 deepcopy_VkViewport(pool, pViewports + i, (VkViewport*)(local_pViewports + i));
6371 }
6372 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006373 if (local_pViewports)
6374 {
6375 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6376 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006377 transform_tohost_VkViewport(mImpl->resources(), (VkViewport*)(local_pViewports + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006378 }
6379 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006380 countingStream->rewind();
6381 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006382 uint64_t cgen_var_497;
6383 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_497, 1);
6384 countingStream->write((uint64_t*)&cgen_var_497, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006385 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
6386 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
6387 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6388 {
6389 marshal_VkViewport(countingStream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006390 }
6391 }
6392 uint32_t packetSize_vkCmdSetViewport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6393 countingStream->rewind();
6394 uint32_t opcode_vkCmdSetViewport = OP_vkCmdSetViewport;
6395 stream->write(&opcode_vkCmdSetViewport, sizeof(uint32_t));
6396 stream->write(&packetSize_vkCmdSetViewport, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006397 uint64_t cgen_var_498;
6398 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_498, 1);
6399 stream->write((uint64_t*)&cgen_var_498, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006400 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
6401 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006402 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6403 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006404 marshal_VkViewport(stream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006405 }
6406}
6407
6408void VkEncoder::vkCmdSetScissor(
6409 VkCommandBuffer commandBuffer,
6410 uint32_t firstScissor,
6411 uint32_t scissorCount,
6412 const VkRect2D* pScissors)
6413{
6414 auto stream = mImpl->stream();
6415 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006416 auto resources = mImpl->resources();
6417 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006418 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006419 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006420 uint32_t local_firstScissor;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006421 uint32_t local_scissorCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006422 VkRect2D* local_pScissors;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006423 local_commandBuffer = commandBuffer;
6424 local_firstScissor = firstScissor;
6425 local_scissorCount = scissorCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006426 local_pScissors = nullptr;
6427 if (pScissors)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006428 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006429 local_pScissors = (VkRect2D*)pool->alloc(((scissorCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006430 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6431 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006432 deepcopy_VkRect2D(pool, pScissors + i, (VkRect2D*)(local_pScissors + i));
6433 }
6434 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006435 if (local_pScissors)
6436 {
6437 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6438 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006439 transform_tohost_VkRect2D(mImpl->resources(), (VkRect2D*)(local_pScissors + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006440 }
6441 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006442 countingStream->rewind();
6443 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006444 uint64_t cgen_var_499;
6445 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_499, 1);
6446 countingStream->write((uint64_t*)&cgen_var_499, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006447 countingStream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
6448 countingStream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
6449 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6450 {
6451 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006452 }
6453 }
6454 uint32_t packetSize_vkCmdSetScissor = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6455 countingStream->rewind();
6456 uint32_t opcode_vkCmdSetScissor = OP_vkCmdSetScissor;
6457 stream->write(&opcode_vkCmdSetScissor, sizeof(uint32_t));
6458 stream->write(&packetSize_vkCmdSetScissor, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006459 uint64_t cgen_var_500;
6460 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_500, 1);
6461 stream->write((uint64_t*)&cgen_var_500, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006462 stream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
6463 stream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006464 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6465 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006466 marshal_VkRect2D(stream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006467 }
6468}
6469
6470void VkEncoder::vkCmdSetLineWidth(
6471 VkCommandBuffer commandBuffer,
6472 float lineWidth)
6473{
6474 auto stream = mImpl->stream();
6475 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006476 auto resources = mImpl->resources();
6477 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006478 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006479 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006480 float local_lineWidth;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006481 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006482 local_lineWidth = lineWidth;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006483 countingStream->rewind();
6484 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006485 uint64_t cgen_var_501;
6486 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_501, 1);
6487 countingStream->write((uint64_t*)&cgen_var_501, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006488 countingStream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006489 }
6490 uint32_t packetSize_vkCmdSetLineWidth = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6491 countingStream->rewind();
6492 uint32_t opcode_vkCmdSetLineWidth = OP_vkCmdSetLineWidth;
6493 stream->write(&opcode_vkCmdSetLineWidth, sizeof(uint32_t));
6494 stream->write(&packetSize_vkCmdSetLineWidth, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006495 uint64_t cgen_var_502;
6496 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_502, 1);
6497 stream->write((uint64_t*)&cgen_var_502, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006498 stream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006499}
6500
6501void VkEncoder::vkCmdSetDepthBias(
6502 VkCommandBuffer commandBuffer,
6503 float depthBiasConstantFactor,
6504 float depthBiasClamp,
6505 float depthBiasSlopeFactor)
6506{
6507 auto stream = mImpl->stream();
6508 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006509 auto resources = mImpl->resources();
6510 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006511 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006512 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006513 float local_depthBiasConstantFactor;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006514 float local_depthBiasClamp;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006515 float local_depthBiasSlopeFactor;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006516 local_commandBuffer = commandBuffer;
6517 local_depthBiasConstantFactor = depthBiasConstantFactor;
6518 local_depthBiasClamp = depthBiasClamp;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006519 local_depthBiasSlopeFactor = depthBiasSlopeFactor;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006520 countingStream->rewind();
6521 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006522 uint64_t cgen_var_503;
6523 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_503, 1);
6524 countingStream->write((uint64_t*)&cgen_var_503, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006525 countingStream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
6526 countingStream->write((float*)&local_depthBiasClamp, sizeof(float));
6527 countingStream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006528 }
6529 uint32_t packetSize_vkCmdSetDepthBias = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6530 countingStream->rewind();
6531 uint32_t opcode_vkCmdSetDepthBias = OP_vkCmdSetDepthBias;
6532 stream->write(&opcode_vkCmdSetDepthBias, sizeof(uint32_t));
6533 stream->write(&packetSize_vkCmdSetDepthBias, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006534 uint64_t cgen_var_504;
6535 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_504, 1);
6536 stream->write((uint64_t*)&cgen_var_504, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006537 stream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
6538 stream->write((float*)&local_depthBiasClamp, sizeof(float));
6539 stream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006540}
6541
6542void VkEncoder::vkCmdSetBlendConstants(
6543 VkCommandBuffer commandBuffer,
6544 const float blendConstants)
6545{
6546 auto stream = mImpl->stream();
6547 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006548 auto resources = mImpl->resources();
6549 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006550 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006551 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006552 float local_blendConstants[4];
Lingfeng Yang9666b852018-11-13 23:09:59 -08006553 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006554 memcpy(&local_blendConstants, &blendConstants, 4 * sizeof(const float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006555 countingStream->rewind();
6556 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006557 uint64_t cgen_var_505;
6558 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_505, 1);
6559 countingStream->write((uint64_t*)&cgen_var_505, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006560 countingStream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006561 }
6562 uint32_t packetSize_vkCmdSetBlendConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6563 countingStream->rewind();
6564 uint32_t opcode_vkCmdSetBlendConstants = OP_vkCmdSetBlendConstants;
6565 stream->write(&opcode_vkCmdSetBlendConstants, sizeof(uint32_t));
6566 stream->write(&packetSize_vkCmdSetBlendConstants, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006567 uint64_t cgen_var_506;
6568 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_506, 1);
6569 stream->write((uint64_t*)&cgen_var_506, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006570 stream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006571}
6572
6573void VkEncoder::vkCmdSetDepthBounds(
6574 VkCommandBuffer commandBuffer,
6575 float minDepthBounds,
6576 float maxDepthBounds)
6577{
6578 auto stream = mImpl->stream();
6579 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006580 auto resources = mImpl->resources();
6581 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006582 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006583 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006584 float local_minDepthBounds;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006585 float local_maxDepthBounds;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006586 local_commandBuffer = commandBuffer;
6587 local_minDepthBounds = minDepthBounds;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006588 local_maxDepthBounds = maxDepthBounds;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006589 countingStream->rewind();
6590 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006591 uint64_t cgen_var_507;
6592 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_507, 1);
6593 countingStream->write((uint64_t*)&cgen_var_507, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006594 countingStream->write((float*)&local_minDepthBounds, sizeof(float));
6595 countingStream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006596 }
6597 uint32_t packetSize_vkCmdSetDepthBounds = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6598 countingStream->rewind();
6599 uint32_t opcode_vkCmdSetDepthBounds = OP_vkCmdSetDepthBounds;
6600 stream->write(&opcode_vkCmdSetDepthBounds, sizeof(uint32_t));
6601 stream->write(&packetSize_vkCmdSetDepthBounds, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006602 uint64_t cgen_var_508;
6603 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_508, 1);
6604 stream->write((uint64_t*)&cgen_var_508, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006605 stream->write((float*)&local_minDepthBounds, sizeof(float));
6606 stream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006607}
6608
6609void VkEncoder::vkCmdSetStencilCompareMask(
6610 VkCommandBuffer commandBuffer,
6611 VkStencilFaceFlags faceMask,
6612 uint32_t compareMask)
6613{
6614 auto stream = mImpl->stream();
6615 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006616 auto resources = mImpl->resources();
6617 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006618 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006619 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006620 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006621 uint32_t local_compareMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006622 local_commandBuffer = commandBuffer;
6623 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006624 local_compareMask = compareMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006625 countingStream->rewind();
6626 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006627 uint64_t cgen_var_509;
6628 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_509, 1);
6629 countingStream->write((uint64_t*)&cgen_var_509, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006630 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6631 countingStream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006632 }
6633 uint32_t packetSize_vkCmdSetStencilCompareMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6634 countingStream->rewind();
6635 uint32_t opcode_vkCmdSetStencilCompareMask = OP_vkCmdSetStencilCompareMask;
6636 stream->write(&opcode_vkCmdSetStencilCompareMask, sizeof(uint32_t));
6637 stream->write(&packetSize_vkCmdSetStencilCompareMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006638 uint64_t cgen_var_510;
6639 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_510, 1);
6640 stream->write((uint64_t*)&cgen_var_510, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006641 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6642 stream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006643}
6644
6645void VkEncoder::vkCmdSetStencilWriteMask(
6646 VkCommandBuffer commandBuffer,
6647 VkStencilFaceFlags faceMask,
6648 uint32_t writeMask)
6649{
6650 auto stream = mImpl->stream();
6651 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006652 auto resources = mImpl->resources();
6653 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006654 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006655 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006656 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006657 uint32_t local_writeMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006658 local_commandBuffer = commandBuffer;
6659 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006660 local_writeMask = writeMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006661 countingStream->rewind();
6662 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006663 uint64_t cgen_var_511;
6664 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_511, 1);
6665 countingStream->write((uint64_t*)&cgen_var_511, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006666 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6667 countingStream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006668 }
6669 uint32_t packetSize_vkCmdSetStencilWriteMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6670 countingStream->rewind();
6671 uint32_t opcode_vkCmdSetStencilWriteMask = OP_vkCmdSetStencilWriteMask;
6672 stream->write(&opcode_vkCmdSetStencilWriteMask, sizeof(uint32_t));
6673 stream->write(&packetSize_vkCmdSetStencilWriteMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006674 uint64_t cgen_var_512;
6675 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_512, 1);
6676 stream->write((uint64_t*)&cgen_var_512, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006677 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6678 stream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006679}
6680
6681void VkEncoder::vkCmdSetStencilReference(
6682 VkCommandBuffer commandBuffer,
6683 VkStencilFaceFlags faceMask,
6684 uint32_t reference)
6685{
6686 auto stream = mImpl->stream();
6687 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006688 auto resources = mImpl->resources();
6689 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006690 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006691 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006692 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006693 uint32_t local_reference;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006694 local_commandBuffer = commandBuffer;
6695 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006696 local_reference = reference;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006697 countingStream->rewind();
6698 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006699 uint64_t cgen_var_513;
6700 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_513, 1);
6701 countingStream->write((uint64_t*)&cgen_var_513, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006702 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6703 countingStream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006704 }
6705 uint32_t packetSize_vkCmdSetStencilReference = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6706 countingStream->rewind();
6707 uint32_t opcode_vkCmdSetStencilReference = OP_vkCmdSetStencilReference;
6708 stream->write(&opcode_vkCmdSetStencilReference, sizeof(uint32_t));
6709 stream->write(&packetSize_vkCmdSetStencilReference, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006710 uint64_t cgen_var_514;
6711 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_514, 1);
6712 stream->write((uint64_t*)&cgen_var_514, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006713 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6714 stream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006715}
6716
6717void VkEncoder::vkCmdBindDescriptorSets(
6718 VkCommandBuffer commandBuffer,
6719 VkPipelineBindPoint pipelineBindPoint,
6720 VkPipelineLayout layout,
6721 uint32_t firstSet,
6722 uint32_t descriptorSetCount,
6723 const VkDescriptorSet* pDescriptorSets,
6724 uint32_t dynamicOffsetCount,
6725 const uint32_t* pDynamicOffsets)
6726{
6727 auto stream = mImpl->stream();
6728 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006729 auto resources = mImpl->resources();
6730 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006731 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006732 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006733 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006734 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006735 uint32_t local_firstSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006736 uint32_t local_descriptorSetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006737 VkDescriptorSet* local_pDescriptorSets;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006738 uint32_t local_dynamicOffsetCount;
6739 uint32_t* local_pDynamicOffsets;
6740 local_commandBuffer = commandBuffer;
6741 local_pipelineBindPoint = pipelineBindPoint;
6742 local_layout = layout;
6743 local_firstSet = firstSet;
6744 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006745 local_pDescriptorSets = nullptr;
6746 if (pDescriptorSets)
6747 {
6748 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
6749 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006750 local_dynamicOffsetCount = dynamicOffsetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006751 local_pDynamicOffsets = nullptr;
6752 if (pDynamicOffsets)
6753 {
6754 local_pDynamicOffsets = (uint32_t*)pool->dupArray(pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t));
6755 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006756 countingStream->rewind();
6757 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006758 uint64_t cgen_var_515;
6759 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_515, 1);
6760 countingStream->write((uint64_t*)&cgen_var_515, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006761 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006762 uint64_t cgen_var_516;
6763 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_516, 1);
6764 countingStream->write((uint64_t*)&cgen_var_516, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006765 countingStream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
6766 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006767 if (((descriptorSetCount)))
6768 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006769 uint64_t* cgen_var_517;
6770 countingStream->alloc((void**)&cgen_var_517, ((descriptorSetCount)) * 8);
6771 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_517, ((descriptorSetCount)));
6772 countingStream->write((uint64_t*)cgen_var_517, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006773 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006774 countingStream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
6775 countingStream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006776 }
6777 uint32_t packetSize_vkCmdBindDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6778 countingStream->rewind();
6779 uint32_t opcode_vkCmdBindDescriptorSets = OP_vkCmdBindDescriptorSets;
6780 stream->write(&opcode_vkCmdBindDescriptorSets, sizeof(uint32_t));
6781 stream->write(&packetSize_vkCmdBindDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006782 uint64_t cgen_var_518;
6783 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_518, 1);
6784 stream->write((uint64_t*)&cgen_var_518, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006785 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006786 uint64_t cgen_var_519;
6787 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_519, 1);
6788 stream->write((uint64_t*)&cgen_var_519, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006789 stream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
6790 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006791 if (((descriptorSetCount)))
6792 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006793 uint64_t* cgen_var_520;
6794 stream->alloc((void**)&cgen_var_520, ((descriptorSetCount)) * 8);
6795 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_520, ((descriptorSetCount)));
6796 stream->write((uint64_t*)cgen_var_520, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006797 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006798 stream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
6799 stream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006800}
6801
6802void VkEncoder::vkCmdBindIndexBuffer(
6803 VkCommandBuffer commandBuffer,
6804 VkBuffer buffer,
6805 VkDeviceSize offset,
6806 VkIndexType indexType)
6807{
6808 auto stream = mImpl->stream();
6809 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006810 auto resources = mImpl->resources();
6811 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006812 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006813 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006814 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006815 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006816 VkIndexType local_indexType;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006817 local_commandBuffer = commandBuffer;
6818 local_buffer = buffer;
6819 local_offset = offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006820 local_indexType = indexType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006821 countingStream->rewind();
6822 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006823 uint64_t cgen_var_521;
6824 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_521, 1);
6825 countingStream->write((uint64_t*)&cgen_var_521, 1 * 8);
6826 uint64_t cgen_var_522;
6827 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_522, 1);
6828 countingStream->write((uint64_t*)&cgen_var_522, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006829 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6830 countingStream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006831 }
6832 uint32_t packetSize_vkCmdBindIndexBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6833 countingStream->rewind();
6834 uint32_t opcode_vkCmdBindIndexBuffer = OP_vkCmdBindIndexBuffer;
6835 stream->write(&opcode_vkCmdBindIndexBuffer, sizeof(uint32_t));
6836 stream->write(&packetSize_vkCmdBindIndexBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006837 uint64_t cgen_var_523;
6838 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_523, 1);
6839 stream->write((uint64_t*)&cgen_var_523, 1 * 8);
6840 uint64_t cgen_var_524;
6841 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_524, 1);
6842 stream->write((uint64_t*)&cgen_var_524, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006843 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6844 stream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006845}
6846
6847void VkEncoder::vkCmdBindVertexBuffers(
6848 VkCommandBuffer commandBuffer,
6849 uint32_t firstBinding,
6850 uint32_t bindingCount,
6851 const VkBuffer* pBuffers,
6852 const VkDeviceSize* pOffsets)
6853{
6854 auto stream = mImpl->stream();
6855 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006856 auto resources = mImpl->resources();
6857 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006858 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006859 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006860 uint32_t local_firstBinding;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006861 uint32_t local_bindingCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006862 VkBuffer* local_pBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006863 VkDeviceSize* local_pOffsets;
6864 local_commandBuffer = commandBuffer;
6865 local_firstBinding = firstBinding;
6866 local_bindingCount = bindingCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006867 local_pBuffers = nullptr;
6868 if (pBuffers)
6869 {
6870 local_pBuffers = (VkBuffer*)pool->dupArray(pBuffers, ((bindingCount)) * sizeof(const VkBuffer));
6871 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006872 local_pOffsets = nullptr;
6873 if (pOffsets)
6874 {
6875 local_pOffsets = (VkDeviceSize*)pool->dupArray(pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize));
6876 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006877 countingStream->rewind();
6878 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006879 uint64_t cgen_var_525;
6880 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_525, 1);
6881 countingStream->write((uint64_t*)&cgen_var_525, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006882 countingStream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
6883 countingStream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006884 if (((bindingCount)))
6885 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006886 uint64_t* cgen_var_526;
6887 countingStream->alloc((void**)&cgen_var_526, ((bindingCount)) * 8);
6888 countingStream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_526, ((bindingCount)));
6889 countingStream->write((uint64_t*)cgen_var_526, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006890 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006891 countingStream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006892 }
6893 uint32_t packetSize_vkCmdBindVertexBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6894 countingStream->rewind();
6895 uint32_t opcode_vkCmdBindVertexBuffers = OP_vkCmdBindVertexBuffers;
6896 stream->write(&opcode_vkCmdBindVertexBuffers, sizeof(uint32_t));
6897 stream->write(&packetSize_vkCmdBindVertexBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006898 uint64_t cgen_var_527;
6899 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_527, 1);
6900 stream->write((uint64_t*)&cgen_var_527, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006901 stream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
6902 stream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006903 if (((bindingCount)))
6904 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006905 uint64_t* cgen_var_528;
6906 stream->alloc((void**)&cgen_var_528, ((bindingCount)) * 8);
6907 stream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_528, ((bindingCount)));
6908 stream->write((uint64_t*)cgen_var_528, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006909 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006910 stream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006911}
6912
6913void VkEncoder::vkCmdDraw(
6914 VkCommandBuffer commandBuffer,
6915 uint32_t vertexCount,
6916 uint32_t instanceCount,
6917 uint32_t firstVertex,
6918 uint32_t firstInstance)
6919{
6920 auto stream = mImpl->stream();
6921 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006922 auto resources = mImpl->resources();
6923 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006924 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006925 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006926 uint32_t local_vertexCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006927 uint32_t local_instanceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006928 uint32_t local_firstVertex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006929 uint32_t local_firstInstance;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006930 local_commandBuffer = commandBuffer;
6931 local_vertexCount = vertexCount;
6932 local_instanceCount = instanceCount;
6933 local_firstVertex = firstVertex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006934 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006935 countingStream->rewind();
6936 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006937 uint64_t cgen_var_529;
6938 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_529, 1);
6939 countingStream->write((uint64_t*)&cgen_var_529, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006940 countingStream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
6941 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6942 countingStream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
6943 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006944 }
6945 uint32_t packetSize_vkCmdDraw = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6946 countingStream->rewind();
6947 uint32_t opcode_vkCmdDraw = OP_vkCmdDraw;
6948 stream->write(&opcode_vkCmdDraw, sizeof(uint32_t));
6949 stream->write(&packetSize_vkCmdDraw, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006950 uint64_t cgen_var_530;
6951 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_530, 1);
6952 stream->write((uint64_t*)&cgen_var_530, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006953 stream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
6954 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6955 stream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
6956 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006957}
6958
6959void VkEncoder::vkCmdDrawIndexed(
6960 VkCommandBuffer commandBuffer,
6961 uint32_t indexCount,
6962 uint32_t instanceCount,
6963 uint32_t firstIndex,
6964 int32_t vertexOffset,
6965 uint32_t firstInstance)
6966{
6967 auto stream = mImpl->stream();
6968 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006969 auto resources = mImpl->resources();
6970 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006971 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006972 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006973 uint32_t local_indexCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006974 uint32_t local_instanceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006975 uint32_t local_firstIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006976 int32_t local_vertexOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006977 uint32_t local_firstInstance;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006978 local_commandBuffer = commandBuffer;
6979 local_indexCount = indexCount;
6980 local_instanceCount = instanceCount;
6981 local_firstIndex = firstIndex;
6982 local_vertexOffset = vertexOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006983 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006984 countingStream->rewind();
6985 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006986 uint64_t cgen_var_531;
6987 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_531, 1);
6988 countingStream->write((uint64_t*)&cgen_var_531, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006989 countingStream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
6990 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6991 countingStream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
6992 countingStream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
6993 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006994 }
6995 uint32_t packetSize_vkCmdDrawIndexed = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6996 countingStream->rewind();
6997 uint32_t opcode_vkCmdDrawIndexed = OP_vkCmdDrawIndexed;
6998 stream->write(&opcode_vkCmdDrawIndexed, sizeof(uint32_t));
6999 stream->write(&packetSize_vkCmdDrawIndexed, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007000 uint64_t cgen_var_532;
7001 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_532, 1);
7002 stream->write((uint64_t*)&cgen_var_532, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007003 stream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
7004 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7005 stream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
7006 stream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
7007 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007008}
7009
7010void VkEncoder::vkCmdDrawIndirect(
7011 VkCommandBuffer commandBuffer,
7012 VkBuffer buffer,
7013 VkDeviceSize offset,
7014 uint32_t drawCount,
7015 uint32_t stride)
7016{
7017 auto stream = mImpl->stream();
7018 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007019 auto resources = mImpl->resources();
7020 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007021 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007022 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007023 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007024 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007025 uint32_t local_drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007026 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007027 local_commandBuffer = commandBuffer;
7028 local_buffer = buffer;
7029 local_offset = offset;
7030 local_drawCount = drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007031 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007032 countingStream->rewind();
7033 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007034 uint64_t cgen_var_533;
7035 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_533, 1);
7036 countingStream->write((uint64_t*)&cgen_var_533, 1 * 8);
7037 uint64_t cgen_var_534;
7038 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_534, 1);
7039 countingStream->write((uint64_t*)&cgen_var_534, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007040 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7041 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7042 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007043 }
7044 uint32_t packetSize_vkCmdDrawIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7045 countingStream->rewind();
7046 uint32_t opcode_vkCmdDrawIndirect = OP_vkCmdDrawIndirect;
7047 stream->write(&opcode_vkCmdDrawIndirect, sizeof(uint32_t));
7048 stream->write(&packetSize_vkCmdDrawIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007049 uint64_t cgen_var_535;
7050 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_535, 1);
7051 stream->write((uint64_t*)&cgen_var_535, 1 * 8);
7052 uint64_t cgen_var_536;
7053 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_536, 1);
7054 stream->write((uint64_t*)&cgen_var_536, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007055 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7056 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7057 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007058}
7059
7060void VkEncoder::vkCmdDrawIndexedIndirect(
7061 VkCommandBuffer commandBuffer,
7062 VkBuffer buffer,
7063 VkDeviceSize offset,
7064 uint32_t drawCount,
7065 uint32_t stride)
7066{
7067 auto stream = mImpl->stream();
7068 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007069 auto resources = mImpl->resources();
7070 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007071 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007072 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007073 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007074 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007075 uint32_t local_drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007076 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007077 local_commandBuffer = commandBuffer;
7078 local_buffer = buffer;
7079 local_offset = offset;
7080 local_drawCount = drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007081 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007082 countingStream->rewind();
7083 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007084 uint64_t cgen_var_537;
7085 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_537, 1);
7086 countingStream->write((uint64_t*)&cgen_var_537, 1 * 8);
7087 uint64_t cgen_var_538;
7088 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_538, 1);
7089 countingStream->write((uint64_t*)&cgen_var_538, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007090 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7091 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7092 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007093 }
7094 uint32_t packetSize_vkCmdDrawIndexedIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7095 countingStream->rewind();
7096 uint32_t opcode_vkCmdDrawIndexedIndirect = OP_vkCmdDrawIndexedIndirect;
7097 stream->write(&opcode_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
7098 stream->write(&packetSize_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007099 uint64_t cgen_var_539;
7100 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_539, 1);
7101 stream->write((uint64_t*)&cgen_var_539, 1 * 8);
7102 uint64_t cgen_var_540;
7103 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_540, 1);
7104 stream->write((uint64_t*)&cgen_var_540, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007105 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7106 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7107 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007108}
7109
7110void VkEncoder::vkCmdDispatch(
7111 VkCommandBuffer commandBuffer,
7112 uint32_t groupCountX,
7113 uint32_t groupCountY,
7114 uint32_t groupCountZ)
7115{
7116 auto stream = mImpl->stream();
7117 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007118 auto resources = mImpl->resources();
7119 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007120 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007121 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007122 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007123 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007124 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007125 local_commandBuffer = commandBuffer;
7126 local_groupCountX = groupCountX;
7127 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007128 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007129 countingStream->rewind();
7130 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007131 uint64_t cgen_var_541;
7132 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_541, 1);
7133 countingStream->write((uint64_t*)&cgen_var_541, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007134 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
7135 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
7136 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007137 }
7138 uint32_t packetSize_vkCmdDispatch = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7139 countingStream->rewind();
7140 uint32_t opcode_vkCmdDispatch = OP_vkCmdDispatch;
7141 stream->write(&opcode_vkCmdDispatch, sizeof(uint32_t));
7142 stream->write(&packetSize_vkCmdDispatch, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007143 uint64_t cgen_var_542;
7144 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_542, 1);
7145 stream->write((uint64_t*)&cgen_var_542, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007146 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
7147 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
7148 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007149}
7150
7151void VkEncoder::vkCmdDispatchIndirect(
7152 VkCommandBuffer commandBuffer,
7153 VkBuffer buffer,
7154 VkDeviceSize offset)
7155{
7156 auto stream = mImpl->stream();
7157 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007158 auto resources = mImpl->resources();
7159 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007160 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007161 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007162 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007163 VkDeviceSize local_offset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007164 local_commandBuffer = commandBuffer;
7165 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007166 local_offset = offset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007167 countingStream->rewind();
7168 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007169 uint64_t cgen_var_543;
7170 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_543, 1);
7171 countingStream->write((uint64_t*)&cgen_var_543, 1 * 8);
7172 uint64_t cgen_var_544;
7173 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_544, 1);
7174 countingStream->write((uint64_t*)&cgen_var_544, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007175 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007176 }
7177 uint32_t packetSize_vkCmdDispatchIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7178 countingStream->rewind();
7179 uint32_t opcode_vkCmdDispatchIndirect = OP_vkCmdDispatchIndirect;
7180 stream->write(&opcode_vkCmdDispatchIndirect, sizeof(uint32_t));
7181 stream->write(&packetSize_vkCmdDispatchIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007182 uint64_t cgen_var_545;
7183 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_545, 1);
7184 stream->write((uint64_t*)&cgen_var_545, 1 * 8);
7185 uint64_t cgen_var_546;
7186 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_546, 1);
7187 stream->write((uint64_t*)&cgen_var_546, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007188 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007189}
7190
7191void VkEncoder::vkCmdCopyBuffer(
7192 VkCommandBuffer commandBuffer,
7193 VkBuffer srcBuffer,
7194 VkBuffer dstBuffer,
7195 uint32_t regionCount,
7196 const VkBufferCopy* pRegions)
7197{
7198 auto stream = mImpl->stream();
7199 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007200 auto resources = mImpl->resources();
7201 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007202 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007203 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007204 VkBuffer local_srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007205 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007206 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007207 VkBufferCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007208 local_commandBuffer = commandBuffer;
7209 local_srcBuffer = srcBuffer;
7210 local_dstBuffer = dstBuffer;
7211 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007212 local_pRegions = nullptr;
7213 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007214 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007215 local_pRegions = (VkBufferCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007216 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7217 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007218 deepcopy_VkBufferCopy(pool, pRegions + i, (VkBufferCopy*)(local_pRegions + i));
7219 }
7220 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007221 if (local_pRegions)
7222 {
7223 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7224 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007225 transform_tohost_VkBufferCopy(mImpl->resources(), (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007226 }
7227 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007228 countingStream->rewind();
7229 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007230 uint64_t cgen_var_547;
7231 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_547, 1);
7232 countingStream->write((uint64_t*)&cgen_var_547, 1 * 8);
7233 uint64_t cgen_var_548;
7234 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_548, 1);
7235 countingStream->write((uint64_t*)&cgen_var_548, 1 * 8);
7236 uint64_t cgen_var_549;
7237 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_549, 1);
7238 countingStream->write((uint64_t*)&cgen_var_549, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007239 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7240 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7241 {
7242 marshal_VkBufferCopy(countingStream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007243 }
7244 }
7245 uint32_t packetSize_vkCmdCopyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7246 countingStream->rewind();
7247 uint32_t opcode_vkCmdCopyBuffer = OP_vkCmdCopyBuffer;
7248 stream->write(&opcode_vkCmdCopyBuffer, sizeof(uint32_t));
7249 stream->write(&packetSize_vkCmdCopyBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007250 uint64_t cgen_var_550;
7251 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_550, 1);
7252 stream->write((uint64_t*)&cgen_var_550, 1 * 8);
7253 uint64_t cgen_var_551;
7254 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_551, 1);
7255 stream->write((uint64_t*)&cgen_var_551, 1 * 8);
7256 uint64_t cgen_var_552;
7257 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_552, 1);
7258 stream->write((uint64_t*)&cgen_var_552, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007259 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007260 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7261 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007262 marshal_VkBufferCopy(stream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007263 }
7264}
7265
7266void VkEncoder::vkCmdCopyImage(
7267 VkCommandBuffer commandBuffer,
7268 VkImage srcImage,
7269 VkImageLayout srcImageLayout,
7270 VkImage dstImage,
7271 VkImageLayout dstImageLayout,
7272 uint32_t regionCount,
7273 const VkImageCopy* pRegions)
7274{
7275 auto stream = mImpl->stream();
7276 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007277 auto resources = mImpl->resources();
7278 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007279 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007280 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007281 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007282 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007283 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007284 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007285 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007286 VkImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007287 local_commandBuffer = commandBuffer;
7288 local_srcImage = srcImage;
7289 local_srcImageLayout = srcImageLayout;
7290 local_dstImage = dstImage;
7291 local_dstImageLayout = dstImageLayout;
7292 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007293 local_pRegions = nullptr;
7294 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007295 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007296 local_pRegions = (VkImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007297 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7298 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007299 deepcopy_VkImageCopy(pool, pRegions + i, (VkImageCopy*)(local_pRegions + i));
7300 }
7301 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007302 if (local_pRegions)
7303 {
7304 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7305 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007306 transform_tohost_VkImageCopy(mImpl->resources(), (VkImageCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007307 }
7308 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007309 countingStream->rewind();
7310 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007311 uint64_t cgen_var_553;
7312 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_553, 1);
7313 countingStream->write((uint64_t*)&cgen_var_553, 1 * 8);
7314 uint64_t cgen_var_554;
7315 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_554, 1);
7316 countingStream->write((uint64_t*)&cgen_var_554, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007317 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007318 uint64_t cgen_var_555;
7319 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_555, 1);
7320 countingStream->write((uint64_t*)&cgen_var_555, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007321 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7322 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7323 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7324 {
7325 marshal_VkImageCopy(countingStream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007326 }
7327 }
7328 uint32_t packetSize_vkCmdCopyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7329 countingStream->rewind();
7330 uint32_t opcode_vkCmdCopyImage = OP_vkCmdCopyImage;
7331 stream->write(&opcode_vkCmdCopyImage, sizeof(uint32_t));
7332 stream->write(&packetSize_vkCmdCopyImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007333 uint64_t cgen_var_556;
7334 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_556, 1);
7335 stream->write((uint64_t*)&cgen_var_556, 1 * 8);
7336 uint64_t cgen_var_557;
7337 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_557, 1);
7338 stream->write((uint64_t*)&cgen_var_557, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007339 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007340 uint64_t cgen_var_558;
7341 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_558, 1);
7342 stream->write((uint64_t*)&cgen_var_558, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007343 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7344 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007345 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7346 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007347 marshal_VkImageCopy(stream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007348 }
7349}
7350
7351void VkEncoder::vkCmdBlitImage(
7352 VkCommandBuffer commandBuffer,
7353 VkImage srcImage,
7354 VkImageLayout srcImageLayout,
7355 VkImage dstImage,
7356 VkImageLayout dstImageLayout,
7357 uint32_t regionCount,
7358 const VkImageBlit* pRegions,
7359 VkFilter filter)
7360{
7361 auto stream = mImpl->stream();
7362 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007363 auto resources = mImpl->resources();
7364 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007365 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007366 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007367 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007368 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007369 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007370 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007371 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007372 VkImageBlit* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007373 VkFilter local_filter;
7374 local_commandBuffer = commandBuffer;
7375 local_srcImage = srcImage;
7376 local_srcImageLayout = srcImageLayout;
7377 local_dstImage = dstImage;
7378 local_dstImageLayout = dstImageLayout;
7379 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007380 local_pRegions = nullptr;
7381 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007382 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007383 local_pRegions = (VkImageBlit*)pool->alloc(((regionCount)) * sizeof(const VkImageBlit));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007384 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7385 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007386 deepcopy_VkImageBlit(pool, pRegions + i, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007387 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007388 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007389 local_filter = filter;
Lingfeng Yang62b23322018-12-24 12:45:47 -08007390 if (local_pRegions)
7391 {
7392 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7393 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007394 transform_tohost_VkImageBlit(mImpl->resources(), (VkImageBlit*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007395 }
7396 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007397 countingStream->rewind();
7398 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007399 uint64_t cgen_var_559;
7400 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_559, 1);
7401 countingStream->write((uint64_t*)&cgen_var_559, 1 * 8);
7402 uint64_t cgen_var_560;
7403 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_560, 1);
7404 countingStream->write((uint64_t*)&cgen_var_560, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007405 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007406 uint64_t cgen_var_561;
7407 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_561, 1);
7408 countingStream->write((uint64_t*)&cgen_var_561, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007409 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7410 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7411 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7412 {
7413 marshal_VkImageBlit(countingStream, (VkImageBlit*)(local_pRegions + i));
7414 }
7415 countingStream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007416 }
7417 uint32_t packetSize_vkCmdBlitImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7418 countingStream->rewind();
7419 uint32_t opcode_vkCmdBlitImage = OP_vkCmdBlitImage;
7420 stream->write(&opcode_vkCmdBlitImage, sizeof(uint32_t));
7421 stream->write(&packetSize_vkCmdBlitImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007422 uint64_t cgen_var_562;
7423 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_562, 1);
7424 stream->write((uint64_t*)&cgen_var_562, 1 * 8);
7425 uint64_t cgen_var_563;
7426 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_563, 1);
7427 stream->write((uint64_t*)&cgen_var_563, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007428 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007429 uint64_t cgen_var_564;
7430 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_564, 1);
7431 stream->write((uint64_t*)&cgen_var_564, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007432 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7433 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007434 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7435 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007436 marshal_VkImageBlit(stream, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007437 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007438 stream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007439}
7440
7441void VkEncoder::vkCmdCopyBufferToImage(
7442 VkCommandBuffer commandBuffer,
7443 VkBuffer srcBuffer,
7444 VkImage dstImage,
7445 VkImageLayout dstImageLayout,
7446 uint32_t regionCount,
7447 const VkBufferImageCopy* pRegions)
7448{
7449 auto stream = mImpl->stream();
7450 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007451 auto resources = mImpl->resources();
7452 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007453 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007454 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007455 VkBuffer local_srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007456 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007457 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007458 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007459 VkBufferImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007460 local_commandBuffer = commandBuffer;
7461 local_srcBuffer = srcBuffer;
7462 local_dstImage = dstImage;
7463 local_dstImageLayout = dstImageLayout;
7464 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007465 local_pRegions = nullptr;
7466 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007467 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007468 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007469 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7470 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007471 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
7472 }
7473 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007474 if (local_pRegions)
7475 {
7476 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7477 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007478 transform_tohost_VkBufferImageCopy(mImpl->resources(), (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007479 }
7480 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007481 countingStream->rewind();
7482 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007483 uint64_t cgen_var_565;
7484 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_565, 1);
7485 countingStream->write((uint64_t*)&cgen_var_565, 1 * 8);
7486 uint64_t cgen_var_566;
7487 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_566, 1);
7488 countingStream->write((uint64_t*)&cgen_var_566, 1 * 8);
7489 uint64_t cgen_var_567;
7490 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_567, 1);
7491 countingStream->write((uint64_t*)&cgen_var_567, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007492 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7493 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7494 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7495 {
7496 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007497 }
7498 }
7499 uint32_t packetSize_vkCmdCopyBufferToImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7500 countingStream->rewind();
7501 uint32_t opcode_vkCmdCopyBufferToImage = OP_vkCmdCopyBufferToImage;
7502 stream->write(&opcode_vkCmdCopyBufferToImage, sizeof(uint32_t));
7503 stream->write(&packetSize_vkCmdCopyBufferToImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007504 uint64_t cgen_var_568;
7505 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_568, 1);
7506 stream->write((uint64_t*)&cgen_var_568, 1 * 8);
7507 uint64_t cgen_var_569;
7508 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_569, 1);
7509 stream->write((uint64_t*)&cgen_var_569, 1 * 8);
7510 uint64_t cgen_var_570;
7511 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_570, 1);
7512 stream->write((uint64_t*)&cgen_var_570, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007513 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7514 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007515 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7516 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007517 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007518 }
7519}
7520
7521void VkEncoder::vkCmdCopyImageToBuffer(
7522 VkCommandBuffer commandBuffer,
7523 VkImage srcImage,
7524 VkImageLayout srcImageLayout,
7525 VkBuffer dstBuffer,
7526 uint32_t regionCount,
7527 const VkBufferImageCopy* pRegions)
7528{
7529 auto stream = mImpl->stream();
7530 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007531 auto resources = mImpl->resources();
7532 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007533 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007534 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007535 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007536 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007537 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007538 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007539 VkBufferImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007540 local_commandBuffer = commandBuffer;
7541 local_srcImage = srcImage;
7542 local_srcImageLayout = srcImageLayout;
7543 local_dstBuffer = dstBuffer;
7544 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007545 local_pRegions = nullptr;
7546 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007547 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007548 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007549 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7550 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007551 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
7552 }
7553 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007554 if (local_pRegions)
7555 {
7556 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7557 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007558 transform_tohost_VkBufferImageCopy(mImpl->resources(), (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007559 }
7560 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007561 countingStream->rewind();
7562 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007563 uint64_t cgen_var_571;
7564 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_571, 1);
7565 countingStream->write((uint64_t*)&cgen_var_571, 1 * 8);
7566 uint64_t cgen_var_572;
7567 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_572, 1);
7568 countingStream->write((uint64_t*)&cgen_var_572, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007569 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007570 uint64_t cgen_var_573;
7571 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_573, 1);
7572 countingStream->write((uint64_t*)&cgen_var_573, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007573 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7574 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7575 {
7576 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007577 }
7578 }
7579 uint32_t packetSize_vkCmdCopyImageToBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7580 countingStream->rewind();
7581 uint32_t opcode_vkCmdCopyImageToBuffer = OP_vkCmdCopyImageToBuffer;
7582 stream->write(&opcode_vkCmdCopyImageToBuffer, sizeof(uint32_t));
7583 stream->write(&packetSize_vkCmdCopyImageToBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007584 uint64_t cgen_var_574;
7585 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_574, 1);
7586 stream->write((uint64_t*)&cgen_var_574, 1 * 8);
7587 uint64_t cgen_var_575;
7588 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_575, 1);
7589 stream->write((uint64_t*)&cgen_var_575, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007590 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007591 uint64_t cgen_var_576;
7592 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_576, 1);
7593 stream->write((uint64_t*)&cgen_var_576, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007594 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007595 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7596 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007597 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007598 }
7599}
7600
7601void VkEncoder::vkCmdUpdateBuffer(
7602 VkCommandBuffer commandBuffer,
7603 VkBuffer dstBuffer,
7604 VkDeviceSize dstOffset,
7605 VkDeviceSize dataSize,
7606 const void* pData)
7607{
7608 auto stream = mImpl->stream();
7609 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007610 auto resources = mImpl->resources();
7611 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007612 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007613 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007614 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007615 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007616 VkDeviceSize local_dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007617 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007618 local_commandBuffer = commandBuffer;
7619 local_dstBuffer = dstBuffer;
7620 local_dstOffset = dstOffset;
7621 local_dataSize = dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007622 local_pData = nullptr;
7623 if (pData)
7624 {
7625 local_pData = (void*)pool->dupArray(pData, ((dataSize)) * sizeof(const uint8_t));
7626 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007627 countingStream->rewind();
7628 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007629 uint64_t cgen_var_577;
7630 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_577, 1);
7631 countingStream->write((uint64_t*)&cgen_var_577, 1 * 8);
7632 uint64_t cgen_var_578;
7633 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_578, 1);
7634 countingStream->write((uint64_t*)&cgen_var_578, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007635 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7636 countingStream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
7637 countingStream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007638 }
7639 uint32_t packetSize_vkCmdUpdateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7640 countingStream->rewind();
7641 uint32_t opcode_vkCmdUpdateBuffer = OP_vkCmdUpdateBuffer;
7642 stream->write(&opcode_vkCmdUpdateBuffer, sizeof(uint32_t));
7643 stream->write(&packetSize_vkCmdUpdateBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007644 uint64_t cgen_var_579;
7645 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_579, 1);
7646 stream->write((uint64_t*)&cgen_var_579, 1 * 8);
7647 uint64_t cgen_var_580;
7648 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_580, 1);
7649 stream->write((uint64_t*)&cgen_var_580, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007650 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7651 stream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
7652 stream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007653}
7654
7655void VkEncoder::vkCmdFillBuffer(
7656 VkCommandBuffer commandBuffer,
7657 VkBuffer dstBuffer,
7658 VkDeviceSize dstOffset,
7659 VkDeviceSize size,
7660 uint32_t data)
7661{
7662 auto stream = mImpl->stream();
7663 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007664 auto resources = mImpl->resources();
7665 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007666 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007667 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007668 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007669 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007670 VkDeviceSize local_size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007671 uint32_t local_data;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007672 local_commandBuffer = commandBuffer;
7673 local_dstBuffer = dstBuffer;
7674 local_dstOffset = dstOffset;
7675 local_size = size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007676 local_data = data;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007677 countingStream->rewind();
7678 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007679 uint64_t cgen_var_581;
7680 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_581, 1);
7681 countingStream->write((uint64_t*)&cgen_var_581, 1 * 8);
7682 uint64_t cgen_var_582;
7683 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_582, 1);
7684 countingStream->write((uint64_t*)&cgen_var_582, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007685 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7686 countingStream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
7687 countingStream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007688 }
7689 uint32_t packetSize_vkCmdFillBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7690 countingStream->rewind();
7691 uint32_t opcode_vkCmdFillBuffer = OP_vkCmdFillBuffer;
7692 stream->write(&opcode_vkCmdFillBuffer, sizeof(uint32_t));
7693 stream->write(&packetSize_vkCmdFillBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007694 uint64_t cgen_var_583;
7695 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_583, 1);
7696 stream->write((uint64_t*)&cgen_var_583, 1 * 8);
7697 uint64_t cgen_var_584;
7698 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_584, 1);
7699 stream->write((uint64_t*)&cgen_var_584, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007700 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7701 stream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
7702 stream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007703}
7704
7705void VkEncoder::vkCmdClearColorImage(
7706 VkCommandBuffer commandBuffer,
7707 VkImage image,
7708 VkImageLayout imageLayout,
7709 const VkClearColorValue* pColor,
7710 uint32_t rangeCount,
7711 const VkImageSubresourceRange* pRanges)
7712{
7713 auto stream = mImpl->stream();
7714 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007715 auto resources = mImpl->resources();
7716 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007717 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007718 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007719 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007720 VkImageLayout local_imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007721 VkClearColorValue* local_pColor;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007722 uint32_t local_rangeCount;
7723 VkImageSubresourceRange* local_pRanges;
7724 local_commandBuffer = commandBuffer;
7725 local_image = image;
7726 local_imageLayout = imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007727 local_pColor = nullptr;
7728 if (pColor)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007729 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007730 local_pColor = (VkClearColorValue*)pool->alloc(sizeof(const VkClearColorValue));
7731 deepcopy_VkClearColorValue(pool, pColor, (VkClearColorValue*)(local_pColor));
7732 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007733 local_rangeCount = rangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007734 local_pRanges = nullptr;
7735 if (pRanges)
7736 {
7737 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007738 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7739 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007740 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
7741 }
7742 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007743 if (local_pColor)
7744 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007745 transform_tohost_VkClearColorValue(mImpl->resources(), (VkClearColorValue*)(local_pColor));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007746 }
7747 if (local_pRanges)
7748 {
7749 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7750 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007751 transform_tohost_VkImageSubresourceRange(mImpl->resources(), (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007752 }
7753 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007754 countingStream->rewind();
7755 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007756 uint64_t cgen_var_585;
7757 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_585, 1);
7758 countingStream->write((uint64_t*)&cgen_var_585, 1 * 8);
7759 uint64_t cgen_var_586;
7760 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_586, 1);
7761 countingStream->write((uint64_t*)&cgen_var_586, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007762 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7763 marshal_VkClearColorValue(countingStream, (VkClearColorValue*)(local_pColor));
7764 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
7765 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7766 {
7767 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007768 }
7769 }
7770 uint32_t packetSize_vkCmdClearColorImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7771 countingStream->rewind();
7772 uint32_t opcode_vkCmdClearColorImage = OP_vkCmdClearColorImage;
7773 stream->write(&opcode_vkCmdClearColorImage, sizeof(uint32_t));
7774 stream->write(&packetSize_vkCmdClearColorImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007775 uint64_t cgen_var_587;
7776 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_587, 1);
7777 stream->write((uint64_t*)&cgen_var_587, 1 * 8);
7778 uint64_t cgen_var_588;
7779 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_588, 1);
7780 stream->write((uint64_t*)&cgen_var_588, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007781 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7782 marshal_VkClearColorValue(stream, (VkClearColorValue*)(local_pColor));
7783 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007784 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7785 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007786 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007787 }
7788}
7789
7790void VkEncoder::vkCmdClearDepthStencilImage(
7791 VkCommandBuffer commandBuffer,
7792 VkImage image,
7793 VkImageLayout imageLayout,
7794 const VkClearDepthStencilValue* pDepthStencil,
7795 uint32_t rangeCount,
7796 const VkImageSubresourceRange* pRanges)
7797{
7798 auto stream = mImpl->stream();
7799 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007800 auto resources = mImpl->resources();
7801 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007802 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007803 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007804 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007805 VkImageLayout local_imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007806 VkClearDepthStencilValue* local_pDepthStencil;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007807 uint32_t local_rangeCount;
7808 VkImageSubresourceRange* local_pRanges;
7809 local_commandBuffer = commandBuffer;
7810 local_image = image;
7811 local_imageLayout = imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007812 local_pDepthStencil = nullptr;
7813 if (pDepthStencil)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007814 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007815 local_pDepthStencil = (VkClearDepthStencilValue*)pool->alloc(sizeof(const VkClearDepthStencilValue));
7816 deepcopy_VkClearDepthStencilValue(pool, pDepthStencil, (VkClearDepthStencilValue*)(local_pDepthStencil));
7817 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007818 local_rangeCount = rangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007819 local_pRanges = nullptr;
7820 if (pRanges)
7821 {
7822 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007823 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7824 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007825 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
7826 }
7827 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007828 if (local_pDepthStencil)
7829 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007830 transform_tohost_VkClearDepthStencilValue(mImpl->resources(), (VkClearDepthStencilValue*)(local_pDepthStencil));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007831 }
7832 if (local_pRanges)
7833 {
7834 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7835 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007836 transform_tohost_VkImageSubresourceRange(mImpl->resources(), (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007837 }
7838 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007839 countingStream->rewind();
7840 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007841 uint64_t cgen_var_589;
7842 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_589, 1);
7843 countingStream->write((uint64_t*)&cgen_var_589, 1 * 8);
7844 uint64_t cgen_var_590;
7845 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_590, 1);
7846 countingStream->write((uint64_t*)&cgen_var_590, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007847 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7848 marshal_VkClearDepthStencilValue(countingStream, (VkClearDepthStencilValue*)(local_pDepthStencil));
7849 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
7850 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7851 {
7852 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007853 }
7854 }
7855 uint32_t packetSize_vkCmdClearDepthStencilImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7856 countingStream->rewind();
7857 uint32_t opcode_vkCmdClearDepthStencilImage = OP_vkCmdClearDepthStencilImage;
7858 stream->write(&opcode_vkCmdClearDepthStencilImage, sizeof(uint32_t));
7859 stream->write(&packetSize_vkCmdClearDepthStencilImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007860 uint64_t cgen_var_591;
7861 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_591, 1);
7862 stream->write((uint64_t*)&cgen_var_591, 1 * 8);
7863 uint64_t cgen_var_592;
7864 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_592, 1);
7865 stream->write((uint64_t*)&cgen_var_592, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007866 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7867 marshal_VkClearDepthStencilValue(stream, (VkClearDepthStencilValue*)(local_pDepthStencil));
7868 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007869 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7870 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007871 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007872 }
7873}
7874
7875void VkEncoder::vkCmdClearAttachments(
7876 VkCommandBuffer commandBuffer,
7877 uint32_t attachmentCount,
7878 const VkClearAttachment* pAttachments,
7879 uint32_t rectCount,
7880 const VkClearRect* pRects)
7881{
7882 auto stream = mImpl->stream();
7883 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007884 auto resources = mImpl->resources();
7885 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007886 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007887 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007888 uint32_t local_attachmentCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007889 VkClearAttachment* local_pAttachments;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007890 uint32_t local_rectCount;
7891 VkClearRect* local_pRects;
7892 local_commandBuffer = commandBuffer;
7893 local_attachmentCount = attachmentCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007894 local_pAttachments = nullptr;
7895 if (pAttachments)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007896 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007897 local_pAttachments = (VkClearAttachment*)pool->alloc(((attachmentCount)) * sizeof(const VkClearAttachment));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007898 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7899 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007900 deepcopy_VkClearAttachment(pool, pAttachments + i, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007901 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007902 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007903 local_rectCount = rectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007904 local_pRects = nullptr;
7905 if (pRects)
7906 {
7907 local_pRects = (VkClearRect*)pool->alloc(((rectCount)) * sizeof(const VkClearRect));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007908 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7909 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007910 deepcopy_VkClearRect(pool, pRects + i, (VkClearRect*)(local_pRects + i));
7911 }
7912 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007913 if (local_pAttachments)
7914 {
7915 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7916 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007917 transform_tohost_VkClearAttachment(mImpl->resources(), (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007918 }
7919 }
7920 if (local_pRects)
7921 {
7922 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7923 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007924 transform_tohost_VkClearRect(mImpl->resources(), (VkClearRect*)(local_pRects + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007925 }
7926 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007927 countingStream->rewind();
7928 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007929 uint64_t cgen_var_593;
7930 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_593, 1);
7931 countingStream->write((uint64_t*)&cgen_var_593, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007932 countingStream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
7933 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7934 {
7935 marshal_VkClearAttachment(countingStream, (VkClearAttachment*)(local_pAttachments + i));
7936 }
7937 countingStream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
7938 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7939 {
7940 marshal_VkClearRect(countingStream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007941 }
7942 }
7943 uint32_t packetSize_vkCmdClearAttachments = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7944 countingStream->rewind();
7945 uint32_t opcode_vkCmdClearAttachments = OP_vkCmdClearAttachments;
7946 stream->write(&opcode_vkCmdClearAttachments, sizeof(uint32_t));
7947 stream->write(&packetSize_vkCmdClearAttachments, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007948 uint64_t cgen_var_594;
7949 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_594, 1);
7950 stream->write((uint64_t*)&cgen_var_594, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007951 stream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007952 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7953 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007954 marshal_VkClearAttachment(stream, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007955 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007956 stream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007957 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7958 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007959 marshal_VkClearRect(stream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007960 }
7961}
7962
7963void VkEncoder::vkCmdResolveImage(
7964 VkCommandBuffer commandBuffer,
7965 VkImage srcImage,
7966 VkImageLayout srcImageLayout,
7967 VkImage dstImage,
7968 VkImageLayout dstImageLayout,
7969 uint32_t regionCount,
7970 const VkImageResolve* pRegions)
7971{
7972 auto stream = mImpl->stream();
7973 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007974 auto resources = mImpl->resources();
7975 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007976 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007977 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007978 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007979 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007980 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007981 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007982 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007983 VkImageResolve* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007984 local_commandBuffer = commandBuffer;
7985 local_srcImage = srcImage;
7986 local_srcImageLayout = srcImageLayout;
7987 local_dstImage = dstImage;
7988 local_dstImageLayout = dstImageLayout;
7989 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007990 local_pRegions = nullptr;
7991 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007992 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007993 local_pRegions = (VkImageResolve*)pool->alloc(((regionCount)) * sizeof(const VkImageResolve));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007994 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7995 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007996 deepcopy_VkImageResolve(pool, pRegions + i, (VkImageResolve*)(local_pRegions + i));
7997 }
7998 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007999 if (local_pRegions)
8000 {
8001 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8002 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008003 transform_tohost_VkImageResolve(mImpl->resources(), (VkImageResolve*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008004 }
8005 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008006 countingStream->rewind();
8007 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008008 uint64_t cgen_var_595;
8009 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_595, 1);
8010 countingStream->write((uint64_t*)&cgen_var_595, 1 * 8);
8011 uint64_t cgen_var_596;
8012 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_596, 1);
8013 countingStream->write((uint64_t*)&cgen_var_596, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008014 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008015 uint64_t cgen_var_597;
8016 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_597, 1);
8017 countingStream->write((uint64_t*)&cgen_var_597, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008018 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8019 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
8020 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8021 {
8022 marshal_VkImageResolve(countingStream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008023 }
8024 }
8025 uint32_t packetSize_vkCmdResolveImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8026 countingStream->rewind();
8027 uint32_t opcode_vkCmdResolveImage = OP_vkCmdResolveImage;
8028 stream->write(&opcode_vkCmdResolveImage, sizeof(uint32_t));
8029 stream->write(&packetSize_vkCmdResolveImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008030 uint64_t cgen_var_598;
8031 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_598, 1);
8032 stream->write((uint64_t*)&cgen_var_598, 1 * 8);
8033 uint64_t cgen_var_599;
8034 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_599, 1);
8035 stream->write((uint64_t*)&cgen_var_599, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008036 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008037 uint64_t cgen_var_600;
8038 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_600, 1);
8039 stream->write((uint64_t*)&cgen_var_600, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008040 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8041 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008042 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8043 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008044 marshal_VkImageResolve(stream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008045 }
8046}
8047
8048void VkEncoder::vkCmdSetEvent(
8049 VkCommandBuffer commandBuffer,
8050 VkEvent event,
8051 VkPipelineStageFlags stageMask)
8052{
8053 auto stream = mImpl->stream();
8054 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008055 auto resources = mImpl->resources();
8056 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008057 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008058 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008059 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008060 VkPipelineStageFlags local_stageMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008061 local_commandBuffer = commandBuffer;
8062 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008063 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008064 countingStream->rewind();
8065 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008066 uint64_t cgen_var_601;
8067 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_601, 1);
8068 countingStream->write((uint64_t*)&cgen_var_601, 1 * 8);
8069 uint64_t cgen_var_602;
8070 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_602, 1);
8071 countingStream->write((uint64_t*)&cgen_var_602, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008072 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008073 }
8074 uint32_t packetSize_vkCmdSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8075 countingStream->rewind();
8076 uint32_t opcode_vkCmdSetEvent = OP_vkCmdSetEvent;
8077 stream->write(&opcode_vkCmdSetEvent, sizeof(uint32_t));
8078 stream->write(&packetSize_vkCmdSetEvent, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008079 uint64_t cgen_var_603;
8080 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_603, 1);
8081 stream->write((uint64_t*)&cgen_var_603, 1 * 8);
8082 uint64_t cgen_var_604;
8083 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_604, 1);
8084 stream->write((uint64_t*)&cgen_var_604, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008085 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008086}
8087
8088void VkEncoder::vkCmdResetEvent(
8089 VkCommandBuffer commandBuffer,
8090 VkEvent event,
8091 VkPipelineStageFlags stageMask)
8092{
8093 auto stream = mImpl->stream();
8094 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008095 auto resources = mImpl->resources();
8096 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008097 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008098 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008099 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008100 VkPipelineStageFlags local_stageMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008101 local_commandBuffer = commandBuffer;
8102 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008103 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008104 countingStream->rewind();
8105 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008106 uint64_t cgen_var_605;
8107 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_605, 1);
8108 countingStream->write((uint64_t*)&cgen_var_605, 1 * 8);
8109 uint64_t cgen_var_606;
8110 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_606, 1);
8111 countingStream->write((uint64_t*)&cgen_var_606, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008112 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008113 }
8114 uint32_t packetSize_vkCmdResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8115 countingStream->rewind();
8116 uint32_t opcode_vkCmdResetEvent = OP_vkCmdResetEvent;
8117 stream->write(&opcode_vkCmdResetEvent, sizeof(uint32_t));
8118 stream->write(&packetSize_vkCmdResetEvent, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008119 uint64_t cgen_var_607;
8120 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_607, 1);
8121 stream->write((uint64_t*)&cgen_var_607, 1 * 8);
8122 uint64_t cgen_var_608;
8123 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_608, 1);
8124 stream->write((uint64_t*)&cgen_var_608, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008125 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008126}
8127
8128void VkEncoder::vkCmdWaitEvents(
8129 VkCommandBuffer commandBuffer,
8130 uint32_t eventCount,
8131 const VkEvent* pEvents,
8132 VkPipelineStageFlags srcStageMask,
8133 VkPipelineStageFlags dstStageMask,
8134 uint32_t memoryBarrierCount,
8135 const VkMemoryBarrier* pMemoryBarriers,
8136 uint32_t bufferMemoryBarrierCount,
8137 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
8138 uint32_t imageMemoryBarrierCount,
8139 const VkImageMemoryBarrier* pImageMemoryBarriers)
8140{
8141 auto stream = mImpl->stream();
8142 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008143 auto resources = mImpl->resources();
8144 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008145 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008146 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008147 uint32_t local_eventCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008148 VkEvent* local_pEvents;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008149 VkPipelineStageFlags local_srcStageMask;
8150 VkPipelineStageFlags local_dstStageMask;
8151 uint32_t local_memoryBarrierCount;
8152 VkMemoryBarrier* local_pMemoryBarriers;
8153 uint32_t local_bufferMemoryBarrierCount;
8154 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
8155 uint32_t local_imageMemoryBarrierCount;
8156 VkImageMemoryBarrier* local_pImageMemoryBarriers;
8157 local_commandBuffer = commandBuffer;
8158 local_eventCount = eventCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008159 local_pEvents = nullptr;
8160 if (pEvents)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008161 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008162 local_pEvents = (VkEvent*)pool->dupArray(pEvents, ((eventCount)) * sizeof(const VkEvent));
8163 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008164 local_srcStageMask = srcStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008165 local_dstStageMask = dstStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008166 local_memoryBarrierCount = memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008167 local_pMemoryBarriers = nullptr;
8168 if (pMemoryBarriers)
8169 {
8170 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008171 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8172 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008173 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008174 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008175 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008176 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008177 local_pBufferMemoryBarriers = nullptr;
8178 if (pBufferMemoryBarriers)
8179 {
8180 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008181 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8182 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008183 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008184 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008185 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008186 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008187 local_pImageMemoryBarriers = nullptr;
8188 if (pImageMemoryBarriers)
8189 {
8190 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008191 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8192 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008193 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
8194 }
8195 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008196 if (local_pMemoryBarriers)
8197 {
8198 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8199 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008200 transform_tohost_VkMemoryBarrier(mImpl->resources(), (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008201 }
8202 }
8203 if (local_pBufferMemoryBarriers)
8204 {
8205 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8206 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008207 transform_tohost_VkBufferMemoryBarrier(mImpl->resources(), (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008208 }
8209 }
8210 if (local_pImageMemoryBarriers)
8211 {
8212 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8213 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008214 transform_tohost_VkImageMemoryBarrier(mImpl->resources(), (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008215 }
8216 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008217 countingStream->rewind();
8218 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008219 uint64_t cgen_var_609;
8220 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_609, 1);
8221 countingStream->write((uint64_t*)&cgen_var_609, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008222 countingStream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008223 if (((eventCount)))
8224 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008225 uint64_t* cgen_var_610;
8226 countingStream->alloc((void**)&cgen_var_610, ((eventCount)) * 8);
8227 countingStream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_610, ((eventCount)));
8228 countingStream->write((uint64_t*)cgen_var_610, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008229 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008230 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8231 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8232 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
8233 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8234 {
8235 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
8236 }
8237 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
8238 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8239 {
8240 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
8241 }
8242 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
8243 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8244 {
8245 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008246 }
8247 }
8248 uint32_t packetSize_vkCmdWaitEvents = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8249 countingStream->rewind();
8250 uint32_t opcode_vkCmdWaitEvents = OP_vkCmdWaitEvents;
8251 stream->write(&opcode_vkCmdWaitEvents, sizeof(uint32_t));
8252 stream->write(&packetSize_vkCmdWaitEvents, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008253 uint64_t cgen_var_611;
8254 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_611, 1);
8255 stream->write((uint64_t*)&cgen_var_611, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008256 stream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008257 if (((eventCount)))
8258 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008259 uint64_t* cgen_var_612;
8260 stream->alloc((void**)&cgen_var_612, ((eventCount)) * 8);
8261 stream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_612, ((eventCount)));
8262 stream->write((uint64_t*)cgen_var_612, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008263 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008264 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8265 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8266 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008267 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8268 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008269 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008270 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008271 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008272 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8273 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008274 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008275 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008276 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008277 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8278 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008279 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008280 }
8281}
8282
8283void VkEncoder::vkCmdPipelineBarrier(
8284 VkCommandBuffer commandBuffer,
8285 VkPipelineStageFlags srcStageMask,
8286 VkPipelineStageFlags dstStageMask,
8287 VkDependencyFlags dependencyFlags,
8288 uint32_t memoryBarrierCount,
8289 const VkMemoryBarrier* pMemoryBarriers,
8290 uint32_t bufferMemoryBarrierCount,
8291 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
8292 uint32_t imageMemoryBarrierCount,
8293 const VkImageMemoryBarrier* pImageMemoryBarriers)
8294{
8295 auto stream = mImpl->stream();
8296 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008297 auto resources = mImpl->resources();
8298 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008299 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008300 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008301 VkPipelineStageFlags local_srcStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008302 VkPipelineStageFlags local_dstStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008303 VkDependencyFlags local_dependencyFlags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008304 uint32_t local_memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008305 VkMemoryBarrier* local_pMemoryBarriers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008306 uint32_t local_bufferMemoryBarrierCount;
8307 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
8308 uint32_t local_imageMemoryBarrierCount;
8309 VkImageMemoryBarrier* local_pImageMemoryBarriers;
8310 local_commandBuffer = commandBuffer;
8311 local_srcStageMask = srcStageMask;
8312 local_dstStageMask = dstStageMask;
8313 local_dependencyFlags = dependencyFlags;
8314 local_memoryBarrierCount = memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008315 local_pMemoryBarriers = nullptr;
8316 if (pMemoryBarriers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008317 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008318 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008319 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8320 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008321 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008322 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008323 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008324 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008325 local_pBufferMemoryBarriers = nullptr;
8326 if (pBufferMemoryBarriers)
8327 {
8328 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008329 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8330 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008331 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008332 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008333 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008334 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008335 local_pImageMemoryBarriers = nullptr;
8336 if (pImageMemoryBarriers)
8337 {
8338 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008339 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8340 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008341 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
8342 }
8343 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008344 if (local_pMemoryBarriers)
8345 {
8346 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8347 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008348 transform_tohost_VkMemoryBarrier(mImpl->resources(), (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008349 }
8350 }
8351 if (local_pBufferMemoryBarriers)
8352 {
8353 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8354 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008355 transform_tohost_VkBufferMemoryBarrier(mImpl->resources(), (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008356 }
8357 }
8358 if (local_pImageMemoryBarriers)
8359 {
8360 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8361 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008362 transform_tohost_VkImageMemoryBarrier(mImpl->resources(), (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008363 }
8364 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008365 countingStream->rewind();
8366 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008367 uint64_t cgen_var_613;
8368 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_613, 1);
8369 countingStream->write((uint64_t*)&cgen_var_613, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008370 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8371 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8372 countingStream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
8373 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
8374 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8375 {
8376 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
8377 }
8378 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
8379 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8380 {
8381 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
8382 }
8383 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
8384 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8385 {
8386 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008387 }
8388 }
8389 uint32_t packetSize_vkCmdPipelineBarrier = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8390 countingStream->rewind();
8391 uint32_t opcode_vkCmdPipelineBarrier = OP_vkCmdPipelineBarrier;
8392 stream->write(&opcode_vkCmdPipelineBarrier, sizeof(uint32_t));
8393 stream->write(&packetSize_vkCmdPipelineBarrier, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008394 uint64_t cgen_var_614;
8395 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_614, 1);
8396 stream->write((uint64_t*)&cgen_var_614, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008397 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8398 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8399 stream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
8400 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008401 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8402 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008403 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008404 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008405 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008406 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8407 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008408 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008409 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008410 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008411 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8412 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008413 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008414 }
8415}
8416
8417void VkEncoder::vkCmdBeginQuery(
8418 VkCommandBuffer commandBuffer,
8419 VkQueryPool queryPool,
8420 uint32_t query,
8421 VkQueryControlFlags flags)
8422{
8423 auto stream = mImpl->stream();
8424 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008425 auto resources = mImpl->resources();
8426 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008427 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008428 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008429 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008430 uint32_t local_query;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008431 VkQueryControlFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008432 local_commandBuffer = commandBuffer;
8433 local_queryPool = queryPool;
8434 local_query = query;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008435 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008436 countingStream->rewind();
8437 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008438 uint64_t cgen_var_615;
8439 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_615, 1);
8440 countingStream->write((uint64_t*)&cgen_var_615, 1 * 8);
8441 uint64_t cgen_var_616;
8442 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_616, 1);
8443 countingStream->write((uint64_t*)&cgen_var_616, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008444 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
8445 countingStream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008446 }
8447 uint32_t packetSize_vkCmdBeginQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8448 countingStream->rewind();
8449 uint32_t opcode_vkCmdBeginQuery = OP_vkCmdBeginQuery;
8450 stream->write(&opcode_vkCmdBeginQuery, sizeof(uint32_t));
8451 stream->write(&packetSize_vkCmdBeginQuery, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008452 uint64_t cgen_var_617;
8453 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_617, 1);
8454 stream->write((uint64_t*)&cgen_var_617, 1 * 8);
8455 uint64_t cgen_var_618;
8456 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_618, 1);
8457 stream->write((uint64_t*)&cgen_var_618, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008458 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
8459 stream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008460}
8461
8462void VkEncoder::vkCmdEndQuery(
8463 VkCommandBuffer commandBuffer,
8464 VkQueryPool queryPool,
8465 uint32_t query)
8466{
8467 auto stream = mImpl->stream();
8468 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008469 auto resources = mImpl->resources();
8470 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008471 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008472 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008473 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008474 uint32_t local_query;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008475 local_commandBuffer = commandBuffer;
8476 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008477 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008478 countingStream->rewind();
8479 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008480 uint64_t cgen_var_619;
8481 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_619, 1);
8482 countingStream->write((uint64_t*)&cgen_var_619, 1 * 8);
8483 uint64_t cgen_var_620;
8484 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_620, 1);
8485 countingStream->write((uint64_t*)&cgen_var_620, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008486 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008487 }
8488 uint32_t packetSize_vkCmdEndQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8489 countingStream->rewind();
8490 uint32_t opcode_vkCmdEndQuery = OP_vkCmdEndQuery;
8491 stream->write(&opcode_vkCmdEndQuery, sizeof(uint32_t));
8492 stream->write(&packetSize_vkCmdEndQuery, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008493 uint64_t cgen_var_621;
8494 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_621, 1);
8495 stream->write((uint64_t*)&cgen_var_621, 1 * 8);
8496 uint64_t cgen_var_622;
8497 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_622, 1);
8498 stream->write((uint64_t*)&cgen_var_622, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008499 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008500}
8501
8502void VkEncoder::vkCmdResetQueryPool(
8503 VkCommandBuffer commandBuffer,
8504 VkQueryPool queryPool,
8505 uint32_t firstQuery,
8506 uint32_t queryCount)
8507{
8508 auto stream = mImpl->stream();
8509 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008510 auto resources = mImpl->resources();
8511 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008512 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008513 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008514 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008515 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008516 uint32_t local_queryCount;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008517 local_commandBuffer = commandBuffer;
8518 local_queryPool = queryPool;
8519 local_firstQuery = firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008520 local_queryCount = queryCount;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008521 countingStream->rewind();
8522 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008523 uint64_t cgen_var_623;
8524 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_623, 1);
8525 countingStream->write((uint64_t*)&cgen_var_623, 1 * 8);
8526 uint64_t cgen_var_624;
8527 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_624, 1);
8528 countingStream->write((uint64_t*)&cgen_var_624, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008529 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8530 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008531 }
8532 uint32_t packetSize_vkCmdResetQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8533 countingStream->rewind();
8534 uint32_t opcode_vkCmdResetQueryPool = OP_vkCmdResetQueryPool;
8535 stream->write(&opcode_vkCmdResetQueryPool, sizeof(uint32_t));
8536 stream->write(&packetSize_vkCmdResetQueryPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008537 uint64_t cgen_var_625;
8538 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_625, 1);
8539 stream->write((uint64_t*)&cgen_var_625, 1 * 8);
8540 uint64_t cgen_var_626;
8541 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_626, 1);
8542 stream->write((uint64_t*)&cgen_var_626, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008543 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8544 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008545}
8546
8547void VkEncoder::vkCmdWriteTimestamp(
8548 VkCommandBuffer commandBuffer,
8549 VkPipelineStageFlagBits pipelineStage,
8550 VkQueryPool queryPool,
8551 uint32_t query)
8552{
8553 auto stream = mImpl->stream();
8554 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008555 auto resources = mImpl->resources();
8556 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008557 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008558 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008559 VkPipelineStageFlagBits local_pipelineStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008560 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008561 uint32_t local_query;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008562 local_commandBuffer = commandBuffer;
8563 local_pipelineStage = pipelineStage;
8564 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008565 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008566 countingStream->rewind();
8567 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008568 uint64_t cgen_var_627;
8569 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_627, 1);
8570 countingStream->write((uint64_t*)&cgen_var_627, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008571 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008572 uint64_t cgen_var_628;
8573 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_628, 1);
8574 countingStream->write((uint64_t*)&cgen_var_628, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008575 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008576 }
8577 uint32_t packetSize_vkCmdWriteTimestamp = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8578 countingStream->rewind();
8579 uint32_t opcode_vkCmdWriteTimestamp = OP_vkCmdWriteTimestamp;
8580 stream->write(&opcode_vkCmdWriteTimestamp, sizeof(uint32_t));
8581 stream->write(&packetSize_vkCmdWriteTimestamp, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008582 uint64_t cgen_var_629;
8583 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_629, 1);
8584 stream->write((uint64_t*)&cgen_var_629, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008585 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008586 uint64_t cgen_var_630;
8587 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_630, 1);
8588 stream->write((uint64_t*)&cgen_var_630, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008589 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008590}
8591
8592void VkEncoder::vkCmdCopyQueryPoolResults(
8593 VkCommandBuffer commandBuffer,
8594 VkQueryPool queryPool,
8595 uint32_t firstQuery,
8596 uint32_t queryCount,
8597 VkBuffer dstBuffer,
8598 VkDeviceSize dstOffset,
8599 VkDeviceSize stride,
8600 VkQueryResultFlags flags)
8601{
8602 auto stream = mImpl->stream();
8603 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008604 auto resources = mImpl->resources();
8605 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008606 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008607 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008608 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008609 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008610 uint32_t local_queryCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008611 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008612 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008613 VkDeviceSize local_stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008614 VkQueryResultFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008615 local_commandBuffer = commandBuffer;
8616 local_queryPool = queryPool;
8617 local_firstQuery = firstQuery;
8618 local_queryCount = queryCount;
8619 local_dstBuffer = dstBuffer;
8620 local_dstOffset = dstOffset;
8621 local_stride = stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008622 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008623 countingStream->rewind();
8624 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008625 uint64_t cgen_var_631;
8626 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_631, 1);
8627 countingStream->write((uint64_t*)&cgen_var_631, 1 * 8);
8628 uint64_t cgen_var_632;
8629 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_632, 1);
8630 countingStream->write((uint64_t*)&cgen_var_632, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008631 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8632 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008633 uint64_t cgen_var_633;
8634 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_633, 1);
8635 countingStream->write((uint64_t*)&cgen_var_633, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008636 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8637 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
8638 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008639 }
8640 uint32_t packetSize_vkCmdCopyQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8641 countingStream->rewind();
8642 uint32_t opcode_vkCmdCopyQueryPoolResults = OP_vkCmdCopyQueryPoolResults;
8643 stream->write(&opcode_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
8644 stream->write(&packetSize_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008645 uint64_t cgen_var_634;
8646 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_634, 1);
8647 stream->write((uint64_t*)&cgen_var_634, 1 * 8);
8648 uint64_t cgen_var_635;
8649 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_635, 1);
8650 stream->write((uint64_t*)&cgen_var_635, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008651 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8652 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008653 uint64_t cgen_var_636;
8654 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_636, 1);
8655 stream->write((uint64_t*)&cgen_var_636, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008656 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8657 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
8658 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008659}
8660
8661void VkEncoder::vkCmdPushConstants(
8662 VkCommandBuffer commandBuffer,
8663 VkPipelineLayout layout,
8664 VkShaderStageFlags stageFlags,
8665 uint32_t offset,
8666 uint32_t size,
8667 const void* pValues)
8668{
8669 auto stream = mImpl->stream();
8670 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008671 auto resources = mImpl->resources();
8672 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008673 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008674 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008675 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008676 VkShaderStageFlags local_stageFlags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008677 uint32_t local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008678 uint32_t local_size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008679 void* local_pValues;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008680 local_commandBuffer = commandBuffer;
8681 local_layout = layout;
8682 local_stageFlags = stageFlags;
8683 local_offset = offset;
8684 local_size = size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008685 local_pValues = nullptr;
8686 if (pValues)
8687 {
8688 local_pValues = (void*)pool->dupArray(pValues, ((size)) * sizeof(const uint8_t));
8689 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008690 countingStream->rewind();
8691 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008692 uint64_t cgen_var_637;
8693 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_637, 1);
8694 countingStream->write((uint64_t*)&cgen_var_637, 1 * 8);
8695 uint64_t cgen_var_638;
8696 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_638, 1);
8697 countingStream->write((uint64_t*)&cgen_var_638, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008698 countingStream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
8699 countingStream->write((uint32_t*)&local_offset, sizeof(uint32_t));
8700 countingStream->write((uint32_t*)&local_size, sizeof(uint32_t));
8701 countingStream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008702 }
8703 uint32_t packetSize_vkCmdPushConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8704 countingStream->rewind();
8705 uint32_t opcode_vkCmdPushConstants = OP_vkCmdPushConstants;
8706 stream->write(&opcode_vkCmdPushConstants, sizeof(uint32_t));
8707 stream->write(&packetSize_vkCmdPushConstants, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008708 uint64_t cgen_var_639;
8709 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_639, 1);
8710 stream->write((uint64_t*)&cgen_var_639, 1 * 8);
8711 uint64_t cgen_var_640;
8712 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_640, 1);
8713 stream->write((uint64_t*)&cgen_var_640, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008714 stream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
8715 stream->write((uint32_t*)&local_offset, sizeof(uint32_t));
8716 stream->write((uint32_t*)&local_size, sizeof(uint32_t));
8717 stream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008718}
8719
8720void VkEncoder::vkCmdBeginRenderPass(
8721 VkCommandBuffer commandBuffer,
8722 const VkRenderPassBeginInfo* pRenderPassBegin,
8723 VkSubpassContents contents)
8724{
8725 auto stream = mImpl->stream();
8726 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008727 auto resources = mImpl->resources();
8728 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008729 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008730 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008731 VkRenderPassBeginInfo* local_pRenderPassBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008732 VkSubpassContents local_contents;
8733 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008734 local_pRenderPassBegin = nullptr;
8735 if (pRenderPassBegin)
8736 {
8737 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
8738 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8739 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008740 local_contents = contents;
Lingfeng Yang62b23322018-12-24 12:45:47 -08008741 if (local_pRenderPassBegin)
8742 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008743 transform_tohost_VkRenderPassBeginInfo(mImpl->resources(), (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008744 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008745 countingStream->rewind();
8746 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008747 uint64_t cgen_var_641;
8748 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_641, 1);
8749 countingStream->write((uint64_t*)&cgen_var_641, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008750 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8751 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008752 }
8753 uint32_t packetSize_vkCmdBeginRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8754 countingStream->rewind();
8755 uint32_t opcode_vkCmdBeginRenderPass = OP_vkCmdBeginRenderPass;
8756 stream->write(&opcode_vkCmdBeginRenderPass, sizeof(uint32_t));
8757 stream->write(&packetSize_vkCmdBeginRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008758 uint64_t cgen_var_642;
8759 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_642, 1);
8760 stream->write((uint64_t*)&cgen_var_642, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008761 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8762 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008763}
8764
8765void VkEncoder::vkCmdNextSubpass(
8766 VkCommandBuffer commandBuffer,
8767 VkSubpassContents contents)
8768{
8769 auto stream = mImpl->stream();
8770 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008771 auto resources = mImpl->resources();
8772 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008773 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008774 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008775 VkSubpassContents local_contents;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008776 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008777 local_contents = contents;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008778 countingStream->rewind();
8779 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008780 uint64_t cgen_var_643;
8781 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_643, 1);
8782 countingStream->write((uint64_t*)&cgen_var_643, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008783 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008784 }
8785 uint32_t packetSize_vkCmdNextSubpass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8786 countingStream->rewind();
8787 uint32_t opcode_vkCmdNextSubpass = OP_vkCmdNextSubpass;
8788 stream->write(&opcode_vkCmdNextSubpass, sizeof(uint32_t));
8789 stream->write(&packetSize_vkCmdNextSubpass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008790 uint64_t cgen_var_644;
8791 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_644, 1);
8792 stream->write((uint64_t*)&cgen_var_644, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008793 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008794}
8795
8796void VkEncoder::vkCmdEndRenderPass(
8797 VkCommandBuffer commandBuffer)
8798{
8799 auto stream = mImpl->stream();
8800 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008801 auto resources = mImpl->resources();
8802 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008803 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008804 VkCommandBuffer local_commandBuffer;
8805 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008806 countingStream->rewind();
8807 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008808 uint64_t cgen_var_645;
8809 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_645, 1);
8810 countingStream->write((uint64_t*)&cgen_var_645, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008811 }
8812 uint32_t packetSize_vkCmdEndRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8813 countingStream->rewind();
8814 uint32_t opcode_vkCmdEndRenderPass = OP_vkCmdEndRenderPass;
8815 stream->write(&opcode_vkCmdEndRenderPass, sizeof(uint32_t));
8816 stream->write(&packetSize_vkCmdEndRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008817 uint64_t cgen_var_646;
8818 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_646, 1);
8819 stream->write((uint64_t*)&cgen_var_646, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008820}
8821
8822void VkEncoder::vkCmdExecuteCommands(
8823 VkCommandBuffer commandBuffer,
8824 uint32_t commandBufferCount,
8825 const VkCommandBuffer* pCommandBuffers)
8826{
8827 auto stream = mImpl->stream();
8828 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008829 auto resources = mImpl->resources();
8830 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008831 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008832 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008833 uint32_t local_commandBufferCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008834 VkCommandBuffer* local_pCommandBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008835 local_commandBuffer = commandBuffer;
8836 local_commandBufferCount = commandBufferCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008837 local_pCommandBuffers = nullptr;
8838 if (pCommandBuffers)
8839 {
8840 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
8841 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008842 countingStream->rewind();
8843 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008844 uint64_t cgen_var_647;
8845 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_647, 1);
8846 countingStream->write((uint64_t*)&cgen_var_647, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008847 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008848 if (((commandBufferCount)))
8849 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008850 uint64_t* cgen_var_648;
8851 countingStream->alloc((void**)&cgen_var_648, ((commandBufferCount)) * 8);
8852 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_648, ((commandBufferCount)));
8853 countingStream->write((uint64_t*)cgen_var_648, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008854 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008855 }
8856 uint32_t packetSize_vkCmdExecuteCommands = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8857 countingStream->rewind();
8858 uint32_t opcode_vkCmdExecuteCommands = OP_vkCmdExecuteCommands;
8859 stream->write(&opcode_vkCmdExecuteCommands, sizeof(uint32_t));
8860 stream->write(&packetSize_vkCmdExecuteCommands, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008861 uint64_t cgen_var_649;
8862 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_649, 1);
8863 stream->write((uint64_t*)&cgen_var_649, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008864 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008865 if (((commandBufferCount)))
8866 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008867 uint64_t* cgen_var_650;
8868 stream->alloc((void**)&cgen_var_650, ((commandBufferCount)) * 8);
8869 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_650, ((commandBufferCount)));
8870 stream->write((uint64_t*)cgen_var_650, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008871 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008872}
8873
8874#endif
8875#ifdef VK_VERSION_1_1
8876VkResult VkEncoder::vkEnumerateInstanceVersion(
8877 uint32_t* pApiVersion)
8878{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008879 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08008880 vkEnumerateInstanceVersion_VkResult_return = mImpl->resources()->on_vkEnumerateInstanceVersion(this, VK_SUCCESS, pApiVersion);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008881 return vkEnumerateInstanceVersion_VkResult_return;
8882}
8883
8884VkResult VkEncoder::vkBindBufferMemory2(
8885 VkDevice device,
8886 uint32_t bindInfoCount,
8887 const VkBindBufferMemoryInfo* pBindInfos)
8888{
8889 auto stream = mImpl->stream();
8890 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008891 auto resources = mImpl->resources();
8892 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008893 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008894 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008895 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008896 VkBindBufferMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008897 local_device = device;
8898 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008899 local_pBindInfos = nullptr;
8900 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008901 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008902 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008903 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8904 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008905 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
8906 }
8907 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008908 if (local_pBindInfos)
8909 {
8910 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8911 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008912 transform_tohost_VkBindBufferMemoryInfo(mImpl->resources(), (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008913 }
8914 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008915 countingStream->rewind();
8916 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008917 uint64_t cgen_var_651;
8918 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_651, 1);
8919 countingStream->write((uint64_t*)&cgen_var_651, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008920 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
8921 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8922 {
8923 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008924 }
8925 }
8926 uint32_t packetSize_vkBindBufferMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8927 countingStream->rewind();
8928 uint32_t opcode_vkBindBufferMemory2 = OP_vkBindBufferMemory2;
8929 stream->write(&opcode_vkBindBufferMemory2, sizeof(uint32_t));
8930 stream->write(&packetSize_vkBindBufferMemory2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008931 uint64_t cgen_var_652;
8932 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_652, 1);
8933 stream->write((uint64_t*)&cgen_var_652, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008934 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008935 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8936 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008937 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008938 }
8939 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
8940 stream->read(&vkBindBufferMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008941 countingStream->clearPool();
8942 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008943 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008944 return vkBindBufferMemory2_VkResult_return;
8945}
8946
8947VkResult VkEncoder::vkBindImageMemory2(
8948 VkDevice device,
8949 uint32_t bindInfoCount,
8950 const VkBindImageMemoryInfo* pBindInfos)
8951{
8952 auto stream = mImpl->stream();
8953 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008954 auto resources = mImpl->resources();
8955 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008956 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008957 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008958 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008959 VkBindImageMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008960 local_device = device;
8961 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008962 local_pBindInfos = nullptr;
8963 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008964 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008965 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008966 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8967 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008968 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
8969 }
8970 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008971 if (local_pBindInfos)
8972 {
8973 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8974 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008975 transform_tohost_VkBindImageMemoryInfo(mImpl->resources(), (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008976 }
8977 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008978 countingStream->rewind();
8979 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008980 uint64_t cgen_var_653;
8981 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_653, 1);
8982 countingStream->write((uint64_t*)&cgen_var_653, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008983 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
8984 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8985 {
8986 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008987 }
8988 }
8989 uint32_t packetSize_vkBindImageMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8990 countingStream->rewind();
8991 uint32_t opcode_vkBindImageMemory2 = OP_vkBindImageMemory2;
8992 stream->write(&opcode_vkBindImageMemory2, sizeof(uint32_t));
8993 stream->write(&packetSize_vkBindImageMemory2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008994 uint64_t cgen_var_654;
8995 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_654, 1);
8996 stream->write((uint64_t*)&cgen_var_654, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008997 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008998 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8999 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009000 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009001 }
9002 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
9003 stream->read(&vkBindImageMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009004 countingStream->clearPool();
9005 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009006 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009007 return vkBindImageMemory2_VkResult_return;
9008}
9009
9010void VkEncoder::vkGetDeviceGroupPeerMemoryFeatures(
9011 VkDevice device,
9012 uint32_t heapIndex,
9013 uint32_t localDeviceIndex,
9014 uint32_t remoteDeviceIndex,
9015 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
9016{
9017 auto stream = mImpl->stream();
9018 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009019 auto resources = mImpl->resources();
9020 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009021 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009022 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009023 uint32_t local_heapIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009024 uint32_t local_localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009025 uint32_t local_remoteDeviceIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009026 local_device = device;
9027 local_heapIndex = heapIndex;
9028 local_localDeviceIndex = localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009029 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009030 countingStream->rewind();
9031 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009032 uint64_t cgen_var_655;
9033 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_655, 1);
9034 countingStream->write((uint64_t*)&cgen_var_655, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009035 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
9036 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
9037 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009038 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
9039 }
9040 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9041 countingStream->rewind();
9042 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeatures = OP_vkGetDeviceGroupPeerMemoryFeatures;
9043 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
9044 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009045 uint64_t cgen_var_656;
9046 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_656, 1);
9047 stream->write((uint64_t*)&cgen_var_656, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009048 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
9049 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
9050 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009051 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
9052 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
9053}
9054
9055void VkEncoder::vkCmdSetDeviceMask(
9056 VkCommandBuffer commandBuffer,
9057 uint32_t deviceMask)
9058{
9059 auto stream = mImpl->stream();
9060 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009061 auto resources = mImpl->resources();
9062 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009063 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009064 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009065 uint32_t local_deviceMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009066 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009067 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009068 countingStream->rewind();
9069 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009070 uint64_t cgen_var_657;
9071 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_657, 1);
9072 countingStream->write((uint64_t*)&cgen_var_657, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009073 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009074 }
9075 uint32_t packetSize_vkCmdSetDeviceMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9076 countingStream->rewind();
9077 uint32_t opcode_vkCmdSetDeviceMask = OP_vkCmdSetDeviceMask;
9078 stream->write(&opcode_vkCmdSetDeviceMask, sizeof(uint32_t));
9079 stream->write(&packetSize_vkCmdSetDeviceMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009080 uint64_t cgen_var_658;
9081 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_658, 1);
9082 stream->write((uint64_t*)&cgen_var_658, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009083 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009084}
9085
9086void VkEncoder::vkCmdDispatchBase(
9087 VkCommandBuffer commandBuffer,
9088 uint32_t baseGroupX,
9089 uint32_t baseGroupY,
9090 uint32_t baseGroupZ,
9091 uint32_t groupCountX,
9092 uint32_t groupCountY,
9093 uint32_t groupCountZ)
9094{
9095 auto stream = mImpl->stream();
9096 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009097 auto resources = mImpl->resources();
9098 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009099 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009100 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009101 uint32_t local_baseGroupX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009102 uint32_t local_baseGroupY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009103 uint32_t local_baseGroupZ;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009104 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009105 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009106 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009107 local_commandBuffer = commandBuffer;
9108 local_baseGroupX = baseGroupX;
9109 local_baseGroupY = baseGroupY;
9110 local_baseGroupZ = baseGroupZ;
9111 local_groupCountX = groupCountX;
9112 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009113 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009114 countingStream->rewind();
9115 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009116 uint64_t cgen_var_659;
9117 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_659, 1);
9118 countingStream->write((uint64_t*)&cgen_var_659, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009119 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
9120 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
9121 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
9122 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
9123 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
9124 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009125 }
9126 uint32_t packetSize_vkCmdDispatchBase = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9127 countingStream->rewind();
9128 uint32_t opcode_vkCmdDispatchBase = OP_vkCmdDispatchBase;
9129 stream->write(&opcode_vkCmdDispatchBase, sizeof(uint32_t));
9130 stream->write(&packetSize_vkCmdDispatchBase, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009131 uint64_t cgen_var_660;
9132 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_660, 1);
9133 stream->write((uint64_t*)&cgen_var_660, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009134 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
9135 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
9136 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
9137 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
9138 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
9139 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009140}
9141
9142VkResult VkEncoder::vkEnumeratePhysicalDeviceGroups(
9143 VkInstance instance,
9144 uint32_t* pPhysicalDeviceGroupCount,
9145 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
9146{
9147 auto stream = mImpl->stream();
9148 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009149 auto resources = mImpl->resources();
9150 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009151 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009152 VkInstance local_instance;
9153 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009154 countingStream->rewind();
9155 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009156 uint64_t cgen_var_661;
9157 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_661, 1);
9158 countingStream->write((uint64_t*)&cgen_var_661, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009159 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009160 uint64_t cgen_var_662 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
9161 countingStream->putBe64(cgen_var_662);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009162 if (pPhysicalDeviceGroupCount)
9163 {
9164 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
9165 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009166 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009167 uint64_t cgen_var_663 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
9168 countingStream->putBe64(cgen_var_663);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009169 if (pPhysicalDeviceGroupProperties)
9170 {
9171 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
9172 {
9173 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
9174 }
9175 }
9176 }
9177 uint32_t packetSize_vkEnumeratePhysicalDeviceGroups = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9178 countingStream->rewind();
9179 uint32_t opcode_vkEnumeratePhysicalDeviceGroups = OP_vkEnumeratePhysicalDeviceGroups;
9180 stream->write(&opcode_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
9181 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009182 uint64_t cgen_var_664;
9183 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_664, 1);
9184 stream->write((uint64_t*)&cgen_var_664, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009185 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009186 uint64_t cgen_var_665 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
9187 stream->putBe64(cgen_var_665);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009188 if (pPhysicalDeviceGroupCount)
9189 {
9190 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
9191 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009192 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009193 uint64_t cgen_var_666 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
9194 stream->putBe64(cgen_var_666);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009195 if (pPhysicalDeviceGroupProperties)
9196 {
9197 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
9198 {
9199 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
9200 }
9201 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009202 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009203 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009204 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009205 if (pPhysicalDeviceGroupCount)
9206 {
9207 if (!(check_pPhysicalDeviceGroupCount))
9208 {
9209 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
9210 }
9211 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
9212 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009213 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009214 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009215 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009216 if (pPhysicalDeviceGroupProperties)
9217 {
9218 if (!(check_pPhysicalDeviceGroupProperties))
9219 {
9220 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
9221 }
9222 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
9223 {
9224 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
9225 }
9226 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08009227 if (pPhysicalDeviceGroupProperties)
9228 {
9229 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
9230 {
9231 transform_fromhost_VkPhysicalDeviceGroupProperties(mImpl->resources(), (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
9232 }
9233 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009234 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
9235 stream->read(&vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009236 countingStream->clearPool();
9237 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009238 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009239 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
9240}
9241
9242void VkEncoder::vkGetImageMemoryRequirements2(
9243 VkDevice device,
9244 const VkImageMemoryRequirementsInfo2* pInfo,
9245 VkMemoryRequirements2* pMemoryRequirements)
9246{
9247 auto stream = mImpl->stream();
9248 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009249 auto resources = mImpl->resources();
9250 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009251 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009252 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009253 VkImageMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009254 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009255 local_pInfo = nullptr;
9256 if (pInfo)
9257 {
9258 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
9259 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
9260 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009261 if (local_pInfo)
9262 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009263 transform_tohost_VkImageMemoryRequirementsInfo2(mImpl->resources(), (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009264 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009265 countingStream->rewind();
9266 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009267 uint64_t cgen_var_669;
9268 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_669, 1);
9269 countingStream->write((uint64_t*)&cgen_var_669, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009270 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009271 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
9272 }
9273 uint32_t packetSize_vkGetImageMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9274 countingStream->rewind();
9275 uint32_t opcode_vkGetImageMemoryRequirements2 = OP_vkGetImageMemoryRequirements2;
9276 stream->write(&opcode_vkGetImageMemoryRequirements2, sizeof(uint32_t));
9277 stream->write(&packetSize_vkGetImageMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009278 uint64_t cgen_var_670;
9279 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_670, 1);
9280 stream->write((uint64_t*)&cgen_var_670, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009281 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009282 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
9283 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -08009284 if (pMemoryRequirements)
9285 {
9286 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
9287 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009288}
9289
9290void VkEncoder::vkGetBufferMemoryRequirements2(
9291 VkDevice device,
9292 const VkBufferMemoryRequirementsInfo2* pInfo,
9293 VkMemoryRequirements2* pMemoryRequirements)
9294{
9295 auto stream = mImpl->stream();
9296 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009297 auto resources = mImpl->resources();
9298 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009299 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009300 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009301 VkBufferMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009302 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009303 local_pInfo = nullptr;
9304 if (pInfo)
9305 {
9306 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
9307 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
9308 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009309 if (local_pInfo)
9310 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009311 transform_tohost_VkBufferMemoryRequirementsInfo2(mImpl->resources(), (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009312 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009313 countingStream->rewind();
9314 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009315 uint64_t cgen_var_671;
9316 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_671, 1);
9317 countingStream->write((uint64_t*)&cgen_var_671, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009318 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009319 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
9320 }
9321 uint32_t packetSize_vkGetBufferMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9322 countingStream->rewind();
9323 uint32_t opcode_vkGetBufferMemoryRequirements2 = OP_vkGetBufferMemoryRequirements2;
9324 stream->write(&opcode_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
9325 stream->write(&packetSize_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009326 uint64_t cgen_var_672;
9327 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_672, 1);
9328 stream->write((uint64_t*)&cgen_var_672, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009329 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009330 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
9331 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -08009332 if (pMemoryRequirements)
9333 {
9334 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
9335 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009336}
9337
9338void VkEncoder::vkGetImageSparseMemoryRequirements2(
9339 VkDevice device,
9340 const VkImageSparseMemoryRequirementsInfo2* pInfo,
9341 uint32_t* pSparseMemoryRequirementCount,
9342 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
9343{
9344 auto stream = mImpl->stream();
9345 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009346 auto resources = mImpl->resources();
9347 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009348 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009349 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009350 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009351 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009352 local_pInfo = nullptr;
9353 if (pInfo)
9354 {
9355 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
9356 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
9357 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009358 if (local_pInfo)
9359 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009360 transform_tohost_VkImageSparseMemoryRequirementsInfo2(mImpl->resources(), (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009361 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009362 countingStream->rewind();
9363 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009364 uint64_t cgen_var_673;
9365 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_673, 1);
9366 countingStream->write((uint64_t*)&cgen_var_673, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009367 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009368 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009369 uint64_t cgen_var_674 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
9370 countingStream->putBe64(cgen_var_674);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009371 if (pSparseMemoryRequirementCount)
9372 {
9373 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
9374 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009375 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009376 uint64_t cgen_var_675 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
9377 countingStream->putBe64(cgen_var_675);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009378 if (pSparseMemoryRequirements)
9379 {
9380 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
9381 {
9382 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
9383 }
9384 }
9385 }
9386 uint32_t packetSize_vkGetImageSparseMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9387 countingStream->rewind();
9388 uint32_t opcode_vkGetImageSparseMemoryRequirements2 = OP_vkGetImageSparseMemoryRequirements2;
9389 stream->write(&opcode_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
9390 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009391 uint64_t cgen_var_676;
9392 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_676, 1);
9393 stream->write((uint64_t*)&cgen_var_676, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009394 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009395 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009396 uint64_t cgen_var_677 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
9397 stream->putBe64(cgen_var_677);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009398 if (pSparseMemoryRequirementCount)
9399 {
9400 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
9401 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009402 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009403 uint64_t cgen_var_678 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
9404 stream->putBe64(cgen_var_678);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009405 if (pSparseMemoryRequirements)
9406 {
9407 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
9408 {
9409 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
9410 }
9411 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009412 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009413 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009414 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009415 if (pSparseMemoryRequirementCount)
9416 {
9417 if (!(check_pSparseMemoryRequirementCount))
9418 {
9419 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
9420 }
9421 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
9422 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009423 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009424 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009425 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009426 if (pSparseMemoryRequirements)
9427 {
9428 if (!(check_pSparseMemoryRequirements))
9429 {
9430 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
9431 }
9432 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
9433 {
9434 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
9435 }
9436 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08009437 if (pSparseMemoryRequirements)
9438 {
9439 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
9440 {
9441 transform_fromhost_VkSparseImageMemoryRequirements2(mImpl->resources(), (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
9442 }
9443 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009444}
9445
9446void VkEncoder::vkGetPhysicalDeviceFeatures2(
9447 VkPhysicalDevice physicalDevice,
9448 VkPhysicalDeviceFeatures2* pFeatures)
9449{
9450 auto stream = mImpl->stream();
9451 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009452 auto resources = mImpl->resources();
9453 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009454 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009455 VkPhysicalDevice local_physicalDevice;
9456 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009457 countingStream->rewind();
9458 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009459 uint64_t cgen_var_681;
9460 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_681, 1);
9461 countingStream->write((uint64_t*)&cgen_var_681, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009462 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
9463 }
9464 uint32_t packetSize_vkGetPhysicalDeviceFeatures2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9465 countingStream->rewind();
9466 uint32_t opcode_vkGetPhysicalDeviceFeatures2 = OP_vkGetPhysicalDeviceFeatures2;
9467 stream->write(&opcode_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
9468 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009469 uint64_t cgen_var_682;
9470 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_682, 1);
9471 stream->write((uint64_t*)&cgen_var_682, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009472 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
9473 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -08009474 if (pFeatures)
9475 {
9476 transform_fromhost_VkPhysicalDeviceFeatures2(mImpl->resources(), (VkPhysicalDeviceFeatures2*)(pFeatures));
9477 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009478}
9479
9480void VkEncoder::vkGetPhysicalDeviceProperties2(
9481 VkPhysicalDevice physicalDevice,
9482 VkPhysicalDeviceProperties2* pProperties)
9483{
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08009484 mImpl->resources()->on_vkGetPhysicalDeviceProperties2(this, physicalDevice, pProperties);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009485}
9486
9487void VkEncoder::vkGetPhysicalDeviceFormatProperties2(
9488 VkPhysicalDevice physicalDevice,
9489 VkFormat format,
9490 VkFormatProperties2* pFormatProperties)
9491{
9492 auto stream = mImpl->stream();
9493 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009494 auto resources = mImpl->resources();
9495 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009496 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009497 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009498 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009499 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009500 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009501 countingStream->rewind();
9502 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009503 uint64_t cgen_var_683;
9504 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_683, 1);
9505 countingStream->write((uint64_t*)&cgen_var_683, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009506 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009507 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
9508 }
9509 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9510 countingStream->rewind();
9511 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2 = OP_vkGetPhysicalDeviceFormatProperties2;
9512 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
9513 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009514 uint64_t cgen_var_684;
9515 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_684, 1);
9516 stream->write((uint64_t*)&cgen_var_684, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009517 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009518 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
9519 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -08009520 if (pFormatProperties)
9521 {
9522 transform_fromhost_VkFormatProperties2(mImpl->resources(), (VkFormatProperties2*)(pFormatProperties));
9523 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009524}
9525
9526VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2(
9527 VkPhysicalDevice physicalDevice,
9528 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
9529 VkImageFormatProperties2* pImageFormatProperties)
9530{
9531 auto stream = mImpl->stream();
9532 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009533 auto resources = mImpl->resources();
9534 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009535 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009536 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009537 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009538 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009539 local_pImageFormatInfo = nullptr;
9540 if (pImageFormatInfo)
9541 {
9542 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
9543 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
9544 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009545 if (local_pImageFormatInfo)
9546 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009547 transform_tohost_VkPhysicalDeviceImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009548 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009549 countingStream->rewind();
9550 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009551 uint64_t cgen_var_685;
9552 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_685, 1);
9553 countingStream->write((uint64_t*)&cgen_var_685, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009554 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009555 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
9556 }
9557 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9558 countingStream->rewind();
9559 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2 = OP_vkGetPhysicalDeviceImageFormatProperties2;
9560 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
9561 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009562 uint64_t cgen_var_686;
9563 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_686, 1);
9564 stream->write((uint64_t*)&cgen_var_686, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009565 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009566 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
9567 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -08009568 if (pImageFormatProperties)
9569 {
9570 transform_fromhost_VkImageFormatProperties2(mImpl->resources(), (VkImageFormatProperties2*)(pImageFormatProperties));
9571 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009572 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
9573 stream->read(&vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009574 countingStream->clearPool();
9575 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009576 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009577 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
9578}
9579
9580void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2(
9581 VkPhysicalDevice physicalDevice,
9582 uint32_t* pQueueFamilyPropertyCount,
9583 VkQueueFamilyProperties2* pQueueFamilyProperties)
9584{
9585 auto stream = mImpl->stream();
9586 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009587 auto resources = mImpl->resources();
9588 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009589 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009590 VkPhysicalDevice local_physicalDevice;
9591 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009592 countingStream->rewind();
9593 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009594 uint64_t cgen_var_687;
9595 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_687, 1);
9596 countingStream->write((uint64_t*)&cgen_var_687, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009597 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009598 uint64_t cgen_var_688 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
9599 countingStream->putBe64(cgen_var_688);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009600 if (pQueueFamilyPropertyCount)
9601 {
9602 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
9603 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009604 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009605 uint64_t cgen_var_689 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
9606 countingStream->putBe64(cgen_var_689);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009607 if (pQueueFamilyProperties)
9608 {
9609 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9610 {
9611 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9612 }
9613 }
9614 }
9615 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9616 countingStream->rewind();
9617 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2 = OP_vkGetPhysicalDeviceQueueFamilyProperties2;
9618 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
9619 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009620 uint64_t cgen_var_690;
9621 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_690, 1);
9622 stream->write((uint64_t*)&cgen_var_690, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009623 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009624 uint64_t cgen_var_691 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
9625 stream->putBe64(cgen_var_691);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009626 if (pQueueFamilyPropertyCount)
9627 {
9628 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
9629 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009630 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009631 uint64_t cgen_var_692 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
9632 stream->putBe64(cgen_var_692);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009633 if (pQueueFamilyProperties)
9634 {
9635 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9636 {
9637 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9638 }
9639 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009640 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009641 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009642 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009643 if (pQueueFamilyPropertyCount)
9644 {
9645 if (!(check_pQueueFamilyPropertyCount))
9646 {
9647 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
9648 }
9649 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
9650 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009651 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009652 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009653 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009654 if (pQueueFamilyProperties)
9655 {
9656 if (!(check_pQueueFamilyProperties))
9657 {
9658 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
9659 }
9660 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9661 {
9662 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9663 }
9664 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08009665 if (pQueueFamilyProperties)
9666 {
9667 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9668 {
9669 transform_fromhost_VkQueueFamilyProperties2(mImpl->resources(), (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9670 }
9671 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009672}
9673
9674void VkEncoder::vkGetPhysicalDeviceMemoryProperties2(
9675 VkPhysicalDevice physicalDevice,
9676 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
9677{
9678 auto stream = mImpl->stream();
9679 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009680 auto resources = mImpl->resources();
9681 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009682 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009683 VkPhysicalDevice local_physicalDevice;
9684 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009685 countingStream->rewind();
9686 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009687 uint64_t cgen_var_695;
9688 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_695, 1);
9689 countingStream->write((uint64_t*)&cgen_var_695, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009690 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9691 }
9692 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9693 countingStream->rewind();
9694 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2 = OP_vkGetPhysicalDeviceMemoryProperties2;
9695 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
9696 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009697 uint64_t cgen_var_696;
9698 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_696, 1);
9699 stream->write((uint64_t*)&cgen_var_696, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009700 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9701 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -08009702 if (pMemoryProperties)
9703 {
9704 transform_fromhost_VkPhysicalDeviceMemoryProperties2(mImpl->resources(), (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9705 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009706}
9707
9708void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2(
9709 VkPhysicalDevice physicalDevice,
9710 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
9711 uint32_t* pPropertyCount,
9712 VkSparseImageFormatProperties2* pProperties)
9713{
9714 auto stream = mImpl->stream();
9715 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009716 auto resources = mImpl->resources();
9717 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009718 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009719 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009720 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009721 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009722 local_pFormatInfo = nullptr;
9723 if (pFormatInfo)
9724 {
9725 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
9726 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
9727 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009728 if (local_pFormatInfo)
9729 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009730 transform_tohost_VkPhysicalDeviceSparseImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009731 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009732 countingStream->rewind();
9733 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009734 uint64_t cgen_var_697;
9735 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_697, 1);
9736 countingStream->write((uint64_t*)&cgen_var_697, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009737 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009738 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009739 uint64_t cgen_var_698 = (uint64_t)(uintptr_t)pPropertyCount;
9740 countingStream->putBe64(cgen_var_698);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009741 if (pPropertyCount)
9742 {
9743 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
9744 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009745 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009746 uint64_t cgen_var_699 = (uint64_t)(uintptr_t)pProperties;
9747 countingStream->putBe64(cgen_var_699);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009748 if (pProperties)
9749 {
9750 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9751 {
9752 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
9753 }
9754 }
9755 }
9756 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9757 countingStream->rewind();
9758 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2 = OP_vkGetPhysicalDeviceSparseImageFormatProperties2;
9759 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
9760 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009761 uint64_t cgen_var_700;
9762 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_700, 1);
9763 stream->write((uint64_t*)&cgen_var_700, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009764 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009765 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009766 uint64_t cgen_var_701 = (uint64_t)(uintptr_t)pPropertyCount;
9767 stream->putBe64(cgen_var_701);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009768 if (pPropertyCount)
9769 {
9770 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
9771 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009772 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009773 uint64_t cgen_var_702 = (uint64_t)(uintptr_t)pProperties;
9774 stream->putBe64(cgen_var_702);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009775 if (pProperties)
9776 {
9777 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9778 {
9779 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
9780 }
9781 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009782 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009783 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009784 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009785 if (pPropertyCount)
9786 {
9787 if (!(check_pPropertyCount))
9788 {
9789 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
9790 }
9791 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
9792 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009793 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009794 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009795 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009796 if (pProperties)
9797 {
9798 if (!(check_pProperties))
9799 {
9800 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
9801 }
9802 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9803 {
9804 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
9805 }
9806 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08009807 if (pProperties)
9808 {
9809 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9810 {
9811 transform_fromhost_VkSparseImageFormatProperties2(mImpl->resources(), (VkSparseImageFormatProperties2*)(pProperties + i));
9812 }
9813 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009814}
9815
9816void VkEncoder::vkTrimCommandPool(
9817 VkDevice device,
9818 VkCommandPool commandPool,
9819 VkCommandPoolTrimFlags flags)
9820{
9821 auto stream = mImpl->stream();
9822 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009823 auto resources = mImpl->resources();
9824 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009825 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009826 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009827 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009828 VkCommandPoolTrimFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009829 local_device = device;
9830 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009831 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009832 countingStream->rewind();
9833 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009834 uint64_t cgen_var_705;
9835 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_705, 1);
9836 countingStream->write((uint64_t*)&cgen_var_705, 1 * 8);
9837 uint64_t cgen_var_706;
9838 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_706, 1);
9839 countingStream->write((uint64_t*)&cgen_var_706, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009840 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009841 }
9842 uint32_t packetSize_vkTrimCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9843 countingStream->rewind();
9844 uint32_t opcode_vkTrimCommandPool = OP_vkTrimCommandPool;
9845 stream->write(&opcode_vkTrimCommandPool, sizeof(uint32_t));
9846 stream->write(&packetSize_vkTrimCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009847 uint64_t cgen_var_707;
9848 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_707, 1);
9849 stream->write((uint64_t*)&cgen_var_707, 1 * 8);
9850 uint64_t cgen_var_708;
9851 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_708, 1);
9852 stream->write((uint64_t*)&cgen_var_708, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009853 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009854}
9855
9856void VkEncoder::vkGetDeviceQueue2(
9857 VkDevice device,
9858 const VkDeviceQueueInfo2* pQueueInfo,
9859 VkQueue* pQueue)
9860{
9861 auto stream = mImpl->stream();
9862 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009863 auto resources = mImpl->resources();
9864 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009865 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009866 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009867 VkDeviceQueueInfo2* local_pQueueInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009868 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009869 local_pQueueInfo = nullptr;
9870 if (pQueueInfo)
9871 {
9872 local_pQueueInfo = (VkDeviceQueueInfo2*)pool->alloc(sizeof(const VkDeviceQueueInfo2));
9873 deepcopy_VkDeviceQueueInfo2(pool, pQueueInfo, (VkDeviceQueueInfo2*)(local_pQueueInfo));
9874 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009875 if (local_pQueueInfo)
9876 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009877 transform_tohost_VkDeviceQueueInfo2(mImpl->resources(), (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009878 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009879 countingStream->rewind();
9880 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009881 uint64_t cgen_var_709;
9882 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_709, 1);
9883 countingStream->write((uint64_t*)&cgen_var_709, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009884 marshal_VkDeviceQueueInfo2(countingStream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009885 uint64_t cgen_var_710;
9886 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_710, 1);
9887 countingStream->write((uint64_t*)&cgen_var_710, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009888 }
9889 uint32_t packetSize_vkGetDeviceQueue2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9890 countingStream->rewind();
9891 uint32_t opcode_vkGetDeviceQueue2 = OP_vkGetDeviceQueue2;
9892 stream->write(&opcode_vkGetDeviceQueue2, sizeof(uint32_t));
9893 stream->write(&packetSize_vkGetDeviceQueue2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009894 uint64_t cgen_var_711;
9895 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_711, 1);
9896 stream->write((uint64_t*)&cgen_var_711, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009897 marshal_VkDeviceQueueInfo2(stream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08009898 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009899 uint64_t cgen_var_712;
9900 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_712, 1);
9901 stream->write((uint64_t*)&cgen_var_712, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009902 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009903 uint64_t cgen_var_713;
9904 stream->read((uint64_t*)&cgen_var_713, 8);
9905 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_713, (VkQueue*)pQueue, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009906}
9907
9908VkResult VkEncoder::vkCreateSamplerYcbcrConversion(
9909 VkDevice device,
9910 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
9911 const VkAllocationCallbacks* pAllocator,
9912 VkSamplerYcbcrConversion* pYcbcrConversion)
9913{
9914 auto stream = mImpl->stream();
9915 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009916 auto resources = mImpl->resources();
9917 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009918 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009919 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009920 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009921 VkAllocationCallbacks* local_pAllocator;
9922 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009923 local_pCreateInfo = nullptr;
9924 if (pCreateInfo)
9925 {
9926 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
9927 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
9928 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009929 local_pAllocator = nullptr;
9930 if (pAllocator)
9931 {
9932 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9933 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9934 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009935 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08009936 if (local_pCreateInfo)
9937 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009938 transform_tohost_VkSamplerYcbcrConversionCreateInfo(mImpl->resources(), (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009939 }
9940 if (local_pAllocator)
9941 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009942 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009943 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009944 countingStream->rewind();
9945 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009946 uint64_t cgen_var_714;
9947 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_714, 1);
9948 countingStream->write((uint64_t*)&cgen_var_714, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009949 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009950 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009951 uint64_t cgen_var_715 = (uint64_t)(uintptr_t)local_pAllocator;
9952 countingStream->putBe64(cgen_var_715);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009953 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009954 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009955 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009956 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009957 uint64_t cgen_var_716;
9958 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_716, 1);
9959 countingStream->write((uint64_t*)&cgen_var_716, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009960 }
9961 uint32_t packetSize_vkCreateSamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9962 countingStream->rewind();
9963 uint32_t opcode_vkCreateSamplerYcbcrConversion = OP_vkCreateSamplerYcbcrConversion;
9964 stream->write(&opcode_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
9965 stream->write(&packetSize_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009966 uint64_t cgen_var_717;
9967 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_717, 1);
9968 stream->write((uint64_t*)&cgen_var_717, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009969 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009970 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009971 uint64_t cgen_var_718 = (uint64_t)(uintptr_t)local_pAllocator;
9972 stream->putBe64(cgen_var_718);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009973 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009974 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009975 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009976 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08009977 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009978 uint64_t cgen_var_719;
9979 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_719, 1);
9980 stream->write((uint64_t*)&cgen_var_719, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009981 stream->setHandleMapping(resources->unwrapMapping());
9982 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009983 uint64_t cgen_var_720;
9984 stream->read((uint64_t*)&cgen_var_720, 8);
9985 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_720, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009986 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009987 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
9988 stream->read(&vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009989 countingStream->clearPool();
9990 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009991 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009992 return vkCreateSamplerYcbcrConversion_VkResult_return;
9993}
9994
9995void VkEncoder::vkDestroySamplerYcbcrConversion(
9996 VkDevice device,
9997 VkSamplerYcbcrConversion ycbcrConversion,
9998 const VkAllocationCallbacks* pAllocator)
9999{
10000 auto stream = mImpl->stream();
10001 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010002 auto resources = mImpl->resources();
10003 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010004 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010005 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010006 VkSamplerYcbcrConversion local_ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010007 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010008 local_device = device;
10009 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010010 local_pAllocator = nullptr;
10011 if (pAllocator)
10012 {
10013 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10014 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10015 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010016 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010017 if (local_pAllocator)
10018 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010019 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010020 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010021 countingStream->rewind();
10022 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010023 uint64_t cgen_var_721;
10024 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_721, 1);
10025 countingStream->write((uint64_t*)&cgen_var_721, 1 * 8);
10026 uint64_t cgen_var_722;
10027 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_722, 1);
10028 countingStream->write((uint64_t*)&cgen_var_722, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010029 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010030 uint64_t cgen_var_723 = (uint64_t)(uintptr_t)local_pAllocator;
10031 countingStream->putBe64(cgen_var_723);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010032 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010033 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010034 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010035 }
10036 }
10037 uint32_t packetSize_vkDestroySamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10038 countingStream->rewind();
10039 uint32_t opcode_vkDestroySamplerYcbcrConversion = OP_vkDestroySamplerYcbcrConversion;
10040 stream->write(&opcode_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
10041 stream->write(&packetSize_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010042 uint64_t cgen_var_724;
10043 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_724, 1);
10044 stream->write((uint64_t*)&cgen_var_724, 1 * 8);
10045 uint64_t cgen_var_725;
10046 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_725, 1);
10047 stream->write((uint64_t*)&cgen_var_725, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010048 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010049 uint64_t cgen_var_726 = (uint64_t)(uintptr_t)local_pAllocator;
10050 stream->putBe64(cgen_var_726);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010051 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010052 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010053 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010054 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010055 resources->destroyMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&ycbcrConversion);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010056}
10057
10058VkResult VkEncoder::vkCreateDescriptorUpdateTemplate(
10059 VkDevice device,
10060 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
10061 const VkAllocationCallbacks* pAllocator,
10062 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
10063{
10064 auto stream = mImpl->stream();
10065 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010066 auto resources = mImpl->resources();
10067 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010068 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010069 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010070 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010071 VkAllocationCallbacks* local_pAllocator;
10072 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010073 local_pCreateInfo = nullptr;
10074 if (pCreateInfo)
10075 {
10076 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
10077 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
10078 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010079 local_pAllocator = nullptr;
10080 if (pAllocator)
10081 {
10082 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10083 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10084 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010085 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010086 if (local_pCreateInfo)
10087 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010088 transform_tohost_VkDescriptorUpdateTemplateCreateInfo(mImpl->resources(), (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010089 }
10090 if (local_pAllocator)
10091 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010092 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010093 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010094 countingStream->rewind();
10095 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010096 uint64_t cgen_var_727;
10097 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_727, 1);
10098 countingStream->write((uint64_t*)&cgen_var_727, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010099 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010100 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010101 uint64_t cgen_var_728 = (uint64_t)(uintptr_t)local_pAllocator;
10102 countingStream->putBe64(cgen_var_728);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010103 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010104 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010105 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010106 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010107 uint64_t cgen_var_729;
10108 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_729, 1);
10109 countingStream->write((uint64_t*)&cgen_var_729, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010110 }
10111 uint32_t packetSize_vkCreateDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10112 countingStream->rewind();
10113 uint32_t opcode_vkCreateDescriptorUpdateTemplate = OP_vkCreateDescriptorUpdateTemplate;
10114 stream->write(&opcode_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
10115 stream->write(&packetSize_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010116 uint64_t cgen_var_730;
10117 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_730, 1);
10118 stream->write((uint64_t*)&cgen_var_730, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010119 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010120 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010121 uint64_t cgen_var_731 = (uint64_t)(uintptr_t)local_pAllocator;
10122 stream->putBe64(cgen_var_731);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010123 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010124 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010125 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010126 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010127 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010128 uint64_t cgen_var_732;
10129 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_732, 1);
10130 stream->write((uint64_t*)&cgen_var_732, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010131 stream->setHandleMapping(resources->unwrapMapping());
10132 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010133 uint64_t cgen_var_733;
10134 stream->read((uint64_t*)&cgen_var_733, 8);
10135 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_733, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010136 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010137 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
10138 stream->read(&vkCreateDescriptorUpdateTemplate_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010139 countingStream->clearPool();
10140 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010141 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010142 return vkCreateDescriptorUpdateTemplate_VkResult_return;
10143}
10144
10145void VkEncoder::vkDestroyDescriptorUpdateTemplate(
10146 VkDevice device,
10147 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
10148 const VkAllocationCallbacks* pAllocator)
10149{
10150 auto stream = mImpl->stream();
10151 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010152 auto resources = mImpl->resources();
10153 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010154 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010155 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010156 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010157 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010158 local_device = device;
10159 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010160 local_pAllocator = nullptr;
10161 if (pAllocator)
10162 {
10163 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10164 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10165 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010166 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010167 if (local_pAllocator)
10168 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010169 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010170 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010171 countingStream->rewind();
10172 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010173 uint64_t cgen_var_734;
10174 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_734, 1);
10175 countingStream->write((uint64_t*)&cgen_var_734, 1 * 8);
10176 uint64_t cgen_var_735;
10177 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_735, 1);
10178 countingStream->write((uint64_t*)&cgen_var_735, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010179 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010180 uint64_t cgen_var_736 = (uint64_t)(uintptr_t)local_pAllocator;
10181 countingStream->putBe64(cgen_var_736);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010182 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010183 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010184 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010185 }
10186 }
10187 uint32_t packetSize_vkDestroyDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10188 countingStream->rewind();
10189 uint32_t opcode_vkDestroyDescriptorUpdateTemplate = OP_vkDestroyDescriptorUpdateTemplate;
10190 stream->write(&opcode_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
10191 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010192 uint64_t cgen_var_737;
10193 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_737, 1);
10194 stream->write((uint64_t*)&cgen_var_737, 1 * 8);
10195 uint64_t cgen_var_738;
10196 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_738, 1);
10197 stream->write((uint64_t*)&cgen_var_738, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010198 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010199 uint64_t cgen_var_739 = (uint64_t)(uintptr_t)local_pAllocator;
10200 stream->putBe64(cgen_var_739);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010201 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010202 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010203 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010204 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010205 resources->destroyMapping()->mapHandles_VkDescriptorUpdateTemplate((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010206}
10207
10208void VkEncoder::vkUpdateDescriptorSetWithTemplate(
10209 VkDevice device,
10210 VkDescriptorSet descriptorSet,
10211 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
10212 const void* pData)
10213{
10214 auto stream = mImpl->stream();
10215 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010216 auto resources = mImpl->resources();
10217 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010218 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010219 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010220 VkDescriptorSet local_descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010221 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010222 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010223 local_device = device;
10224 local_descriptorSet = descriptorSet;
10225 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010226 local_pData = nullptr;
10227 if (pData)
10228 {
10229 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
10230 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010231 countingStream->rewind();
10232 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010233 uint64_t cgen_var_740;
10234 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_740, 1);
10235 countingStream->write((uint64_t*)&cgen_var_740, 1 * 8);
10236 uint64_t cgen_var_741;
10237 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_741, 1);
10238 countingStream->write((uint64_t*)&cgen_var_741, 1 * 8);
10239 uint64_t cgen_var_742;
10240 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_742, 1);
10241 countingStream->write((uint64_t*)&cgen_var_742, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010242 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010243 uint64_t cgen_var_743 = (uint64_t)(uintptr_t)local_pData;
10244 countingStream->putBe64(cgen_var_743);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010245 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010246 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010247 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010248 }
10249 }
10250 uint32_t packetSize_vkUpdateDescriptorSetWithTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10251 countingStream->rewind();
10252 uint32_t opcode_vkUpdateDescriptorSetWithTemplate = OP_vkUpdateDescriptorSetWithTemplate;
10253 stream->write(&opcode_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
10254 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010255 uint64_t cgen_var_744;
10256 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_744, 1);
10257 stream->write((uint64_t*)&cgen_var_744, 1 * 8);
10258 uint64_t cgen_var_745;
10259 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_745, 1);
10260 stream->write((uint64_t*)&cgen_var_745, 1 * 8);
10261 uint64_t cgen_var_746;
10262 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_746, 1);
10263 stream->write((uint64_t*)&cgen_var_746, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010264 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010265 uint64_t cgen_var_747 = (uint64_t)(uintptr_t)local_pData;
10266 stream->putBe64(cgen_var_747);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010267 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010268 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010269 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010270 }
10271}
10272
10273void VkEncoder::vkGetPhysicalDeviceExternalBufferProperties(
10274 VkPhysicalDevice physicalDevice,
10275 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
10276 VkExternalBufferProperties* pExternalBufferProperties)
10277{
10278 auto stream = mImpl->stream();
10279 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010280 auto resources = mImpl->resources();
10281 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010282 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010283 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010284 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010285 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010286 local_pExternalBufferInfo = nullptr;
10287 if (pExternalBufferInfo)
10288 {
10289 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
10290 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
10291 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010292 if (local_pExternalBufferInfo)
10293 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010294 transform_tohost_VkPhysicalDeviceExternalBufferInfo(mImpl->resources(), (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010295 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010296 countingStream->rewind();
10297 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010298 uint64_t cgen_var_748;
10299 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_748, 1);
10300 countingStream->write((uint64_t*)&cgen_var_748, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010301 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010302 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
10303 }
10304 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10305 countingStream->rewind();
10306 uint32_t opcode_vkGetPhysicalDeviceExternalBufferProperties = OP_vkGetPhysicalDeviceExternalBufferProperties;
10307 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
10308 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010309 uint64_t cgen_var_749;
10310 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_749, 1);
10311 stream->write((uint64_t*)&cgen_var_749, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010312 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010313 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
10314 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010315 if (pExternalBufferProperties)
10316 {
10317 transform_fromhost_VkExternalBufferProperties(mImpl->resources(), (VkExternalBufferProperties*)(pExternalBufferProperties));
10318 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010319}
10320
10321void VkEncoder::vkGetPhysicalDeviceExternalFenceProperties(
10322 VkPhysicalDevice physicalDevice,
10323 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
10324 VkExternalFenceProperties* pExternalFenceProperties)
10325{
10326 auto stream = mImpl->stream();
10327 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010328 auto resources = mImpl->resources();
10329 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010330 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010331 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010332 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010333 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010334 local_pExternalFenceInfo = nullptr;
10335 if (pExternalFenceInfo)
10336 {
10337 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
10338 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
10339 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010340 if (local_pExternalFenceInfo)
10341 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010342 transform_tohost_VkPhysicalDeviceExternalFenceInfo(mImpl->resources(), (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010343 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010344 countingStream->rewind();
10345 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010346 uint64_t cgen_var_750;
10347 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_750, 1);
10348 countingStream->write((uint64_t*)&cgen_var_750, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010349 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010350 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
10351 }
10352 uint32_t packetSize_vkGetPhysicalDeviceExternalFenceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10353 countingStream->rewind();
10354 uint32_t opcode_vkGetPhysicalDeviceExternalFenceProperties = OP_vkGetPhysicalDeviceExternalFenceProperties;
10355 stream->write(&opcode_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
10356 stream->write(&packetSize_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010357 uint64_t cgen_var_751;
10358 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_751, 1);
10359 stream->write((uint64_t*)&cgen_var_751, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010360 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010361 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
10362 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010363 if (pExternalFenceProperties)
10364 {
10365 transform_fromhost_VkExternalFenceProperties(mImpl->resources(), (VkExternalFenceProperties*)(pExternalFenceProperties));
10366 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010367}
10368
10369void VkEncoder::vkGetPhysicalDeviceExternalSemaphoreProperties(
10370 VkPhysicalDevice physicalDevice,
10371 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
10372 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
10373{
10374 auto stream = mImpl->stream();
10375 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010376 auto resources = mImpl->resources();
10377 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010378 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010379 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010380 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010381 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010382 local_pExternalSemaphoreInfo = nullptr;
10383 if (pExternalSemaphoreInfo)
10384 {
10385 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
10386 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
10387 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010388 if (local_pExternalSemaphoreInfo)
10389 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010390 transform_tohost_VkPhysicalDeviceExternalSemaphoreInfo(mImpl->resources(), (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010391 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010392 countingStream->rewind();
10393 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010394 uint64_t cgen_var_752;
10395 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_752, 1);
10396 countingStream->write((uint64_t*)&cgen_var_752, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010397 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010398 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
10399 }
10400 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10401 countingStream->rewind();
10402 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphoreProperties = OP_vkGetPhysicalDeviceExternalSemaphoreProperties;
10403 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
10404 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010405 uint64_t cgen_var_753;
10406 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_753, 1);
10407 stream->write((uint64_t*)&cgen_var_753, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010408 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010409 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
10410 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010411 if (pExternalSemaphoreProperties)
10412 {
10413 transform_fromhost_VkExternalSemaphoreProperties(mImpl->resources(), (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
10414 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010415}
10416
10417void VkEncoder::vkGetDescriptorSetLayoutSupport(
10418 VkDevice device,
10419 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
10420 VkDescriptorSetLayoutSupport* pSupport)
10421{
10422 auto stream = mImpl->stream();
10423 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010424 auto resources = mImpl->resources();
10425 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010426 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010427 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010428 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010429 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010430 local_pCreateInfo = nullptr;
10431 if (pCreateInfo)
10432 {
10433 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
10434 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
10435 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010436 if (local_pCreateInfo)
10437 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010438 transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010439 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010440 countingStream->rewind();
10441 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010442 uint64_t cgen_var_754;
10443 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_754, 1);
10444 countingStream->write((uint64_t*)&cgen_var_754, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010445 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010446 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
10447 }
10448 uint32_t packetSize_vkGetDescriptorSetLayoutSupport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10449 countingStream->rewind();
10450 uint32_t opcode_vkGetDescriptorSetLayoutSupport = OP_vkGetDescriptorSetLayoutSupport;
10451 stream->write(&opcode_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
10452 stream->write(&packetSize_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010453 uint64_t cgen_var_755;
10454 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_755, 1);
10455 stream->write((uint64_t*)&cgen_var_755, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010456 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010457 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
10458 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010459 if (pSupport)
10460 {
10461 transform_fromhost_VkDescriptorSetLayoutSupport(mImpl->resources(), (VkDescriptorSetLayoutSupport*)(pSupport));
10462 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010463}
10464
10465#endif
10466#ifdef VK_KHR_surface
10467void VkEncoder::vkDestroySurfaceKHR(
10468 VkInstance instance,
10469 VkSurfaceKHR surface,
10470 const VkAllocationCallbacks* pAllocator)
10471{
10472 auto stream = mImpl->stream();
10473 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010474 auto resources = mImpl->resources();
10475 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010476 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010477 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010478 VkSurfaceKHR local_surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010479 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010480 local_instance = instance;
10481 local_surface = surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010482 local_pAllocator = nullptr;
10483 if (pAllocator)
10484 {
10485 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10486 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10487 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010488 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010489 if (local_pAllocator)
10490 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010491 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010492 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010493 countingStream->rewind();
10494 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010495 uint64_t cgen_var_756;
10496 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_756, 1);
10497 countingStream->write((uint64_t*)&cgen_var_756, 1 * 8);
10498 uint64_t cgen_var_757;
10499 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_757, 1);
10500 countingStream->write((uint64_t*)&cgen_var_757, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010501 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010502 uint64_t cgen_var_758 = (uint64_t)(uintptr_t)local_pAllocator;
10503 countingStream->putBe64(cgen_var_758);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010504 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010505 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010506 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010507 }
10508 }
10509 uint32_t packetSize_vkDestroySurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10510 countingStream->rewind();
10511 uint32_t opcode_vkDestroySurfaceKHR = OP_vkDestroySurfaceKHR;
10512 stream->write(&opcode_vkDestroySurfaceKHR, sizeof(uint32_t));
10513 stream->write(&packetSize_vkDestroySurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010514 uint64_t cgen_var_759;
10515 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_759, 1);
10516 stream->write((uint64_t*)&cgen_var_759, 1 * 8);
10517 uint64_t cgen_var_760;
10518 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_760, 1);
10519 stream->write((uint64_t*)&cgen_var_760, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010520 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010521 uint64_t cgen_var_761 = (uint64_t)(uintptr_t)local_pAllocator;
10522 stream->putBe64(cgen_var_761);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010523 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010524 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010525 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010526 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010527 resources->destroyMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&surface);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010528}
10529
10530VkResult VkEncoder::vkGetPhysicalDeviceSurfaceSupportKHR(
10531 VkPhysicalDevice physicalDevice,
10532 uint32_t queueFamilyIndex,
10533 VkSurfaceKHR surface,
10534 VkBool32* pSupported)
10535{
10536 auto stream = mImpl->stream();
10537 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010538 auto resources = mImpl->resources();
10539 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010540 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010541 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010542 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010543 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010544 local_physicalDevice = physicalDevice;
10545 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010546 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010547 countingStream->rewind();
10548 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010549 uint64_t cgen_var_762;
10550 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_762, 1);
10551 countingStream->write((uint64_t*)&cgen_var_762, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010552 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010553 uint64_t cgen_var_763;
10554 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_763, 1);
10555 countingStream->write((uint64_t*)&cgen_var_763, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010556 countingStream->write((VkBool32*)pSupported, sizeof(VkBool32));
10557 }
10558 uint32_t packetSize_vkGetPhysicalDeviceSurfaceSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10559 countingStream->rewind();
10560 uint32_t opcode_vkGetPhysicalDeviceSurfaceSupportKHR = OP_vkGetPhysicalDeviceSurfaceSupportKHR;
10561 stream->write(&opcode_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
10562 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010563 uint64_t cgen_var_764;
10564 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_764, 1);
10565 stream->write((uint64_t*)&cgen_var_764, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010566 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010567 uint64_t cgen_var_765;
10568 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_765, 1);
10569 stream->write((uint64_t*)&cgen_var_765, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010570 stream->write((VkBool32*)pSupported, sizeof(VkBool32));
10571 stream->read((VkBool32*)pSupported, sizeof(VkBool32));
10572 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
10573 stream->read(&vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010574 countingStream->clearPool();
10575 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010576 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010577 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
10578}
10579
10580VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
10581 VkPhysicalDevice physicalDevice,
10582 VkSurfaceKHR surface,
10583 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
10584{
10585 auto stream = mImpl->stream();
10586 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010587 auto resources = mImpl->resources();
10588 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010589 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010590 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010591 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010592 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010593 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010594 countingStream->rewind();
10595 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010596 uint64_t cgen_var_766;
10597 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_766, 1);
10598 countingStream->write((uint64_t*)&cgen_var_766, 1 * 8);
10599 uint64_t cgen_var_767;
10600 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_767, 1);
10601 countingStream->write((uint64_t*)&cgen_var_767, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010602 marshal_VkSurfaceCapabilitiesKHR(countingStream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
10603 }
10604 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10605 countingStream->rewind();
10606 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
10607 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
10608 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010609 uint64_t cgen_var_768;
10610 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_768, 1);
10611 stream->write((uint64_t*)&cgen_var_768, 1 * 8);
10612 uint64_t cgen_var_769;
10613 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_769, 1);
10614 stream->write((uint64_t*)&cgen_var_769, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010615 marshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
10616 unmarshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010617 if (pSurfaceCapabilities)
10618 {
10619 transform_fromhost_VkSurfaceCapabilitiesKHR(mImpl->resources(), (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
10620 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010621 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
10622 stream->read(&vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010623 countingStream->clearPool();
10624 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010625 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010626 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
10627}
10628
10629VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormatsKHR(
10630 VkPhysicalDevice physicalDevice,
10631 VkSurfaceKHR surface,
10632 uint32_t* pSurfaceFormatCount,
10633 VkSurfaceFormatKHR* pSurfaceFormats)
10634{
10635 auto stream = mImpl->stream();
10636 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010637 auto resources = mImpl->resources();
10638 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010639 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010640 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010641 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010642 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010643 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010644 countingStream->rewind();
10645 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010646 uint64_t cgen_var_770;
10647 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_770, 1);
10648 countingStream->write((uint64_t*)&cgen_var_770, 1 * 8);
10649 uint64_t cgen_var_771;
10650 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_771, 1);
10651 countingStream->write((uint64_t*)&cgen_var_771, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010652 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010653 uint64_t cgen_var_772 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
10654 countingStream->putBe64(cgen_var_772);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010655 if (pSurfaceFormatCount)
10656 {
10657 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
10658 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010659 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010660 uint64_t cgen_var_773 = (uint64_t)(uintptr_t)pSurfaceFormats;
10661 countingStream->putBe64(cgen_var_773);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010662 if (pSurfaceFormats)
10663 {
10664 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
10665 {
10666 marshal_VkSurfaceFormatKHR(countingStream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
10667 }
10668 }
10669 }
10670 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10671 countingStream->rewind();
10672 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormatsKHR = OP_vkGetPhysicalDeviceSurfaceFormatsKHR;
10673 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
10674 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010675 uint64_t cgen_var_774;
10676 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_774, 1);
10677 stream->write((uint64_t*)&cgen_var_774, 1 * 8);
10678 uint64_t cgen_var_775;
10679 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_775, 1);
10680 stream->write((uint64_t*)&cgen_var_775, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010681 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010682 uint64_t cgen_var_776 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
10683 stream->putBe64(cgen_var_776);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010684 if (pSurfaceFormatCount)
10685 {
10686 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
10687 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010688 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010689 uint64_t cgen_var_777 = (uint64_t)(uintptr_t)pSurfaceFormats;
10690 stream->putBe64(cgen_var_777);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010691 if (pSurfaceFormats)
10692 {
10693 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
10694 {
10695 marshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
10696 }
10697 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010698 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010699 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010700 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010701 if (pSurfaceFormatCount)
10702 {
10703 if (!(check_pSurfaceFormatCount))
10704 {
10705 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
10706 }
10707 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
10708 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010709 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010710 VkSurfaceFormatKHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010711 check_pSurfaceFormats = (VkSurfaceFormatKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010712 if (pSurfaceFormats)
10713 {
10714 if (!(check_pSurfaceFormats))
10715 {
10716 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
10717 }
10718 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
10719 {
10720 unmarshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
10721 }
10722 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080010723 if (pSurfaceFormats)
10724 {
10725 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
10726 {
10727 transform_fromhost_VkSurfaceFormatKHR(mImpl->resources(), (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
10728 }
10729 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010730 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
10731 stream->read(&vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010732 countingStream->clearPool();
10733 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010734 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010735 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
10736}
10737
10738VkResult VkEncoder::vkGetPhysicalDeviceSurfacePresentModesKHR(
10739 VkPhysicalDevice physicalDevice,
10740 VkSurfaceKHR surface,
10741 uint32_t* pPresentModeCount,
10742 VkPresentModeKHR* pPresentModes)
10743{
10744 auto stream = mImpl->stream();
10745 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010746 auto resources = mImpl->resources();
10747 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010748 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010749 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010750 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010751 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010752 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010753 countingStream->rewind();
10754 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010755 uint64_t cgen_var_780;
10756 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_780, 1);
10757 countingStream->write((uint64_t*)&cgen_var_780, 1 * 8);
10758 uint64_t cgen_var_781;
10759 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_781, 1);
10760 countingStream->write((uint64_t*)&cgen_var_781, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010761 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010762 uint64_t cgen_var_782 = (uint64_t)(uintptr_t)pPresentModeCount;
10763 countingStream->putBe64(cgen_var_782);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010764 if (pPresentModeCount)
10765 {
10766 countingStream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10767 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010768 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010769 uint64_t cgen_var_783 = (uint64_t)(uintptr_t)pPresentModes;
10770 countingStream->putBe64(cgen_var_783);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010771 if (pPresentModes)
10772 {
10773 countingStream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10774 }
10775 }
10776 uint32_t packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10777 countingStream->rewind();
10778 uint32_t opcode_vkGetPhysicalDeviceSurfacePresentModesKHR = OP_vkGetPhysicalDeviceSurfacePresentModesKHR;
10779 stream->write(&opcode_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
10780 stream->write(&packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010781 uint64_t cgen_var_784;
10782 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_784, 1);
10783 stream->write((uint64_t*)&cgen_var_784, 1 * 8);
10784 uint64_t cgen_var_785;
10785 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_785, 1);
10786 stream->write((uint64_t*)&cgen_var_785, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010787 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010788 uint64_t cgen_var_786 = (uint64_t)(uintptr_t)pPresentModeCount;
10789 stream->putBe64(cgen_var_786);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010790 if (pPresentModeCount)
10791 {
10792 stream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10793 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010794 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010795 uint64_t cgen_var_787 = (uint64_t)(uintptr_t)pPresentModes;
10796 stream->putBe64(cgen_var_787);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010797 if (pPresentModes)
10798 {
10799 stream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10800 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010801 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010802 uint32_t* check_pPresentModeCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010803 check_pPresentModeCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010804 if (pPresentModeCount)
10805 {
10806 if (!(check_pPresentModeCount))
10807 {
10808 fprintf(stderr, "fatal: pPresentModeCount inconsistent between guest and host\n");
10809 }
10810 stream->read((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10811 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010812 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010813 VkPresentModeKHR* check_pPresentModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010814 check_pPresentModes = (VkPresentModeKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010815 if (pPresentModes)
10816 {
10817 if (!(check_pPresentModes))
10818 {
10819 fprintf(stderr, "fatal: pPresentModes inconsistent between guest and host\n");
10820 }
10821 stream->read((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10822 }
10823 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
10824 stream->read(&vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010825 countingStream->clearPool();
10826 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010827 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010828 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
10829}
10830
10831#endif
10832#ifdef VK_KHR_swapchain
10833VkResult VkEncoder::vkCreateSwapchainKHR(
10834 VkDevice device,
10835 const VkSwapchainCreateInfoKHR* pCreateInfo,
10836 const VkAllocationCallbacks* pAllocator,
10837 VkSwapchainKHR* pSwapchain)
10838{
10839 auto stream = mImpl->stream();
10840 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010841 auto resources = mImpl->resources();
10842 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010843 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010844 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010845 VkSwapchainCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010846 VkAllocationCallbacks* local_pAllocator;
10847 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010848 local_pCreateInfo = nullptr;
10849 if (pCreateInfo)
10850 {
10851 local_pCreateInfo = (VkSwapchainCreateInfoKHR*)pool->alloc(sizeof(const VkSwapchainCreateInfoKHR));
10852 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfo, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
10853 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010854 local_pAllocator = nullptr;
10855 if (pAllocator)
10856 {
10857 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10858 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10859 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010860 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010861 if (local_pCreateInfo)
10862 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010863 transform_tohost_VkSwapchainCreateInfoKHR(mImpl->resources(), (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010864 }
10865 if (local_pAllocator)
10866 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010867 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010868 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010869 countingStream->rewind();
10870 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010871 uint64_t cgen_var_790;
10872 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_790, 1);
10873 countingStream->write((uint64_t*)&cgen_var_790, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010874 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010875 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010876 uint64_t cgen_var_791 = (uint64_t)(uintptr_t)local_pAllocator;
10877 countingStream->putBe64(cgen_var_791);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010878 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010879 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010880 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010881 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010882 uint64_t cgen_var_792;
10883 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_792, 1);
10884 countingStream->write((uint64_t*)&cgen_var_792, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010885 }
10886 uint32_t packetSize_vkCreateSwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10887 countingStream->rewind();
10888 uint32_t opcode_vkCreateSwapchainKHR = OP_vkCreateSwapchainKHR;
10889 stream->write(&opcode_vkCreateSwapchainKHR, sizeof(uint32_t));
10890 stream->write(&packetSize_vkCreateSwapchainKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010891 uint64_t cgen_var_793;
10892 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_793, 1);
10893 stream->write((uint64_t*)&cgen_var_793, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010894 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010895 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010896 uint64_t cgen_var_794 = (uint64_t)(uintptr_t)local_pAllocator;
10897 stream->putBe64(cgen_var_794);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010898 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010899 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010900 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010901 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010902 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010903 uint64_t cgen_var_795;
10904 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_795, 1);
10905 stream->write((uint64_t*)&cgen_var_795, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010906 stream->setHandleMapping(resources->unwrapMapping());
10907 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010908 uint64_t cgen_var_796;
10909 stream->read((uint64_t*)&cgen_var_796, 8);
10910 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(&cgen_var_796, (VkSwapchainKHR*)pSwapchain, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010911 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010912 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
10913 stream->read(&vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010914 countingStream->clearPool();
10915 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010916 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010917 return vkCreateSwapchainKHR_VkResult_return;
10918}
10919
10920void VkEncoder::vkDestroySwapchainKHR(
10921 VkDevice device,
10922 VkSwapchainKHR swapchain,
10923 const VkAllocationCallbacks* pAllocator)
10924{
10925 auto stream = mImpl->stream();
10926 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010927 auto resources = mImpl->resources();
10928 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010929 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010930 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010931 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010932 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010933 local_device = device;
10934 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010935 local_pAllocator = nullptr;
10936 if (pAllocator)
10937 {
10938 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10939 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10940 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010941 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010942 if (local_pAllocator)
10943 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010944 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010945 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010946 countingStream->rewind();
10947 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010948 uint64_t cgen_var_797;
10949 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_797, 1);
10950 countingStream->write((uint64_t*)&cgen_var_797, 1 * 8);
10951 uint64_t cgen_var_798;
10952 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_798, 1);
10953 countingStream->write((uint64_t*)&cgen_var_798, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010954 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010955 uint64_t cgen_var_799 = (uint64_t)(uintptr_t)local_pAllocator;
10956 countingStream->putBe64(cgen_var_799);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010957 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010958 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010959 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010960 }
10961 }
10962 uint32_t packetSize_vkDestroySwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10963 countingStream->rewind();
10964 uint32_t opcode_vkDestroySwapchainKHR = OP_vkDestroySwapchainKHR;
10965 stream->write(&opcode_vkDestroySwapchainKHR, sizeof(uint32_t));
10966 stream->write(&packetSize_vkDestroySwapchainKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010967 uint64_t cgen_var_800;
10968 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_800, 1);
10969 stream->write((uint64_t*)&cgen_var_800, 1 * 8);
10970 uint64_t cgen_var_801;
10971 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_801, 1);
10972 stream->write((uint64_t*)&cgen_var_801, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010973 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010974 uint64_t cgen_var_802 = (uint64_t)(uintptr_t)local_pAllocator;
10975 stream->putBe64(cgen_var_802);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010976 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010977 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010978 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010979 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010980 resources->destroyMapping()->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&swapchain);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010981}
10982
10983VkResult VkEncoder::vkGetSwapchainImagesKHR(
10984 VkDevice device,
10985 VkSwapchainKHR swapchain,
10986 uint32_t* pSwapchainImageCount,
10987 VkImage* pSwapchainImages)
10988{
10989 auto stream = mImpl->stream();
10990 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010991 auto resources = mImpl->resources();
10992 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010993 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010994 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010995 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010996 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010997 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010998 countingStream->rewind();
10999 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011000 uint64_t cgen_var_803;
11001 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_803, 1);
11002 countingStream->write((uint64_t*)&cgen_var_803, 1 * 8);
11003 uint64_t cgen_var_804;
11004 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_804, 1);
11005 countingStream->write((uint64_t*)&cgen_var_804, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011006 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011007 uint64_t cgen_var_805 = (uint64_t)(uintptr_t)pSwapchainImageCount;
11008 countingStream->putBe64(cgen_var_805);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011009 if (pSwapchainImageCount)
11010 {
11011 countingStream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
11012 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011013 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011014 uint64_t cgen_var_806 = (uint64_t)(uintptr_t)pSwapchainImages;
11015 countingStream->putBe64(cgen_var_806);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011016 if (pSwapchainImages)
11017 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080011018 if ((*(pSwapchainImageCount)))
11019 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011020 uint64_t* cgen_var_807;
11021 countingStream->alloc((void**)&cgen_var_807, (*(pSwapchainImageCount)) * 8);
11022 countingStream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_807, (*(pSwapchainImageCount)));
11023 countingStream->write((uint64_t*)cgen_var_807, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011024 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011025 }
11026 }
11027 uint32_t packetSize_vkGetSwapchainImagesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11028 countingStream->rewind();
11029 uint32_t opcode_vkGetSwapchainImagesKHR = OP_vkGetSwapchainImagesKHR;
11030 stream->write(&opcode_vkGetSwapchainImagesKHR, sizeof(uint32_t));
11031 stream->write(&packetSize_vkGetSwapchainImagesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011032 uint64_t cgen_var_808;
11033 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_808, 1);
11034 stream->write((uint64_t*)&cgen_var_808, 1 * 8);
11035 uint64_t cgen_var_809;
11036 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_809, 1);
11037 stream->write((uint64_t*)&cgen_var_809, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011038 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011039 uint64_t cgen_var_810 = (uint64_t)(uintptr_t)pSwapchainImageCount;
11040 stream->putBe64(cgen_var_810);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011041 if (pSwapchainImageCount)
11042 {
11043 stream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
11044 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011045 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011046 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011047 uint64_t cgen_var_811 = (uint64_t)(uintptr_t)pSwapchainImages;
11048 stream->putBe64(cgen_var_811);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011049 if (pSwapchainImages)
11050 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080011051 if ((*(pSwapchainImageCount)))
11052 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011053 uint64_t* cgen_var_812;
11054 stream->alloc((void**)&cgen_var_812, (*(pSwapchainImageCount)) * 8);
11055 stream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_812, (*(pSwapchainImageCount)));
11056 stream->write((uint64_t*)cgen_var_812, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011057 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011058 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011059 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011060 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011061 uint32_t* check_pSwapchainImageCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011062 check_pSwapchainImageCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011063 if (pSwapchainImageCount)
11064 {
11065 if (!(check_pSwapchainImageCount))
11066 {
11067 fprintf(stderr, "fatal: pSwapchainImageCount inconsistent between guest and host\n");
11068 }
11069 stream->read((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
11070 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011071 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011072 VkImage* check_pSwapchainImages;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011073 check_pSwapchainImages = (VkImage*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011074 if (pSwapchainImages)
11075 {
11076 if (!(check_pSwapchainImages))
11077 {
11078 fprintf(stderr, "fatal: pSwapchainImages inconsistent between guest and host\n");
11079 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080011080 if ((*(pSwapchainImageCount)))
11081 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011082 uint64_t* cgen_var_815;
11083 stream->alloc((void**)&cgen_var_815, (*(pSwapchainImageCount)) * 8);
11084 stream->read((uint64_t*)cgen_var_815, (*(pSwapchainImageCount)) * 8);
11085 stream->handleMapping()->mapHandles_u64_VkImage(cgen_var_815, (VkImage*)pSwapchainImages, (*(pSwapchainImageCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011086 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011087 }
11088 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
11089 stream->read(&vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011090 countingStream->clearPool();
11091 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011092 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011093 return vkGetSwapchainImagesKHR_VkResult_return;
11094}
11095
11096VkResult VkEncoder::vkAcquireNextImageKHR(
11097 VkDevice device,
11098 VkSwapchainKHR swapchain,
11099 uint64_t timeout,
11100 VkSemaphore semaphore,
11101 VkFence fence,
11102 uint32_t* pImageIndex)
11103{
11104 auto stream = mImpl->stream();
11105 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011106 auto resources = mImpl->resources();
11107 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011108 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011109 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011110 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011111 uint64_t local_timeout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011112 VkSemaphore local_semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011113 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011114 local_device = device;
11115 local_swapchain = swapchain;
11116 local_timeout = timeout;
11117 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011118 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011119 countingStream->rewind();
11120 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011121 uint64_t cgen_var_816;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011122 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_816, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011123 countingStream->write((uint64_t*)&cgen_var_816, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011124 uint64_t cgen_var_817;
11125 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_817, 1);
11126 countingStream->write((uint64_t*)&cgen_var_817, 1 * 8);
11127 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
11128 uint64_t cgen_var_818;
11129 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_818, 1);
11130 countingStream->write((uint64_t*)&cgen_var_818, 1 * 8);
11131 uint64_t cgen_var_819;
11132 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_819, 1);
11133 countingStream->write((uint64_t*)&cgen_var_819, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011134 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
11135 }
11136 uint32_t packetSize_vkAcquireNextImageKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11137 countingStream->rewind();
11138 uint32_t opcode_vkAcquireNextImageKHR = OP_vkAcquireNextImageKHR;
11139 stream->write(&opcode_vkAcquireNextImageKHR, sizeof(uint32_t));
11140 stream->write(&packetSize_vkAcquireNextImageKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011141 uint64_t cgen_var_820;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011142 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_820, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011143 stream->write((uint64_t*)&cgen_var_820, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011144 uint64_t cgen_var_821;
11145 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_821, 1);
11146 stream->write((uint64_t*)&cgen_var_821, 1 * 8);
11147 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
11148 uint64_t cgen_var_822;
11149 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_822, 1);
11150 stream->write((uint64_t*)&cgen_var_822, 1 * 8);
11151 uint64_t cgen_var_823;
11152 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_823, 1);
11153 stream->write((uint64_t*)&cgen_var_823, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011154 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
11155 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
11156 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
11157 stream->read(&vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011158 countingStream->clearPool();
11159 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011160 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011161 return vkAcquireNextImageKHR_VkResult_return;
11162}
11163
11164VkResult VkEncoder::vkQueuePresentKHR(
11165 VkQueue queue,
11166 const VkPresentInfoKHR* pPresentInfo)
11167{
11168 auto stream = mImpl->stream();
11169 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011170 auto resources = mImpl->resources();
11171 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011172 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011173 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011174 VkPresentInfoKHR* local_pPresentInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011175 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011176 local_pPresentInfo = nullptr;
11177 if (pPresentInfo)
11178 {
11179 local_pPresentInfo = (VkPresentInfoKHR*)pool->alloc(sizeof(const VkPresentInfoKHR));
11180 deepcopy_VkPresentInfoKHR(pool, pPresentInfo, (VkPresentInfoKHR*)(local_pPresentInfo));
11181 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080011182 if (local_pPresentInfo)
11183 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011184 transform_tohost_VkPresentInfoKHR(mImpl->resources(), (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011185 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011186 countingStream->rewind();
11187 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011188 uint64_t cgen_var_824;
11189 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_824, 1);
11190 countingStream->write((uint64_t*)&cgen_var_824, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011191 marshal_VkPresentInfoKHR(countingStream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011192 }
11193 uint32_t packetSize_vkQueuePresentKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11194 countingStream->rewind();
11195 uint32_t opcode_vkQueuePresentKHR = OP_vkQueuePresentKHR;
11196 stream->write(&opcode_vkQueuePresentKHR, sizeof(uint32_t));
11197 stream->write(&packetSize_vkQueuePresentKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011198 uint64_t cgen_var_825;
11199 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_825, 1);
11200 stream->write((uint64_t*)&cgen_var_825, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011201 marshal_VkPresentInfoKHR(stream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011202 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
11203 stream->read(&vkQueuePresentKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011204 countingStream->clearPool();
11205 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011206 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011207 return vkQueuePresentKHR_VkResult_return;
11208}
11209
11210VkResult VkEncoder::vkGetDeviceGroupPresentCapabilitiesKHR(
11211 VkDevice device,
11212 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
11213{
11214 auto stream = mImpl->stream();
11215 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011216 auto resources = mImpl->resources();
11217 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011218 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011219 VkDevice local_device;
11220 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011221 countingStream->rewind();
11222 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011223 uint64_t cgen_var_826;
11224 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_826, 1);
11225 countingStream->write((uint64_t*)&cgen_var_826, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011226 marshal_VkDeviceGroupPresentCapabilitiesKHR(countingStream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
11227 }
11228 uint32_t packetSize_vkGetDeviceGroupPresentCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11229 countingStream->rewind();
11230 uint32_t opcode_vkGetDeviceGroupPresentCapabilitiesKHR = OP_vkGetDeviceGroupPresentCapabilitiesKHR;
11231 stream->write(&opcode_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
11232 stream->write(&packetSize_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011233 uint64_t cgen_var_827;
11234 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_827, 1);
11235 stream->write((uint64_t*)&cgen_var_827, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011236 marshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
11237 unmarshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080011238 if (pDeviceGroupPresentCapabilities)
11239 {
11240 transform_fromhost_VkDeviceGroupPresentCapabilitiesKHR(mImpl->resources(), (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
11241 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011242 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
11243 stream->read(&vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011244 countingStream->clearPool();
11245 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011246 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011247 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
11248}
11249
11250VkResult VkEncoder::vkGetDeviceGroupSurfacePresentModesKHR(
11251 VkDevice device,
11252 VkSurfaceKHR surface,
11253 VkDeviceGroupPresentModeFlagsKHR* pModes)
11254{
11255 auto stream = mImpl->stream();
11256 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011257 auto resources = mImpl->resources();
11258 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011259 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011260 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011261 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011262 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011263 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011264 countingStream->rewind();
11265 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011266 uint64_t cgen_var_828;
11267 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_828, 1);
11268 countingStream->write((uint64_t*)&cgen_var_828, 1 * 8);
11269 uint64_t cgen_var_829;
11270 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_829, 1);
11271 countingStream->write((uint64_t*)&cgen_var_829, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011272 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011273 uint64_t cgen_var_830 = (uint64_t)(uintptr_t)pModes;
11274 countingStream->putBe64(cgen_var_830);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011275 if (pModes)
11276 {
11277 countingStream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
11278 }
11279 }
11280 uint32_t packetSize_vkGetDeviceGroupSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11281 countingStream->rewind();
11282 uint32_t opcode_vkGetDeviceGroupSurfacePresentModesKHR = OP_vkGetDeviceGroupSurfacePresentModesKHR;
11283 stream->write(&opcode_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
11284 stream->write(&packetSize_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011285 uint64_t cgen_var_831;
11286 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_831, 1);
11287 stream->write((uint64_t*)&cgen_var_831, 1 * 8);
11288 uint64_t cgen_var_832;
11289 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_832, 1);
11290 stream->write((uint64_t*)&cgen_var_832, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011291 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011292 uint64_t cgen_var_833 = (uint64_t)(uintptr_t)pModes;
11293 stream->putBe64(cgen_var_833);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011294 if (pModes)
11295 {
11296 stream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
11297 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011298 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011299 VkDeviceGroupPresentModeFlagsKHR* check_pModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011300 check_pModes = (VkDeviceGroupPresentModeFlagsKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011301 if (pModes)
11302 {
11303 if (!(check_pModes))
11304 {
11305 fprintf(stderr, "fatal: pModes inconsistent between guest and host\n");
11306 }
11307 stream->read((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
11308 }
11309 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
11310 stream->read(&vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011311 countingStream->clearPool();
11312 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011313 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011314 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
11315}
11316
11317VkResult VkEncoder::vkGetPhysicalDevicePresentRectanglesKHR(
11318 VkPhysicalDevice physicalDevice,
11319 VkSurfaceKHR surface,
11320 uint32_t* pRectCount,
11321 VkRect2D* pRects)
11322{
11323 auto stream = mImpl->stream();
11324 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011325 auto resources = mImpl->resources();
11326 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011327 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011328 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011329 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011330 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011331 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011332 countingStream->rewind();
11333 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011334 uint64_t cgen_var_835;
11335 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_835, 1);
11336 countingStream->write((uint64_t*)&cgen_var_835, 1 * 8);
11337 uint64_t cgen_var_836;
11338 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_836, 1);
11339 countingStream->write((uint64_t*)&cgen_var_836, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011340 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011341 uint64_t cgen_var_837 = (uint64_t)(uintptr_t)pRectCount;
11342 countingStream->putBe64(cgen_var_837);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011343 if (pRectCount)
11344 {
11345 countingStream->write((uint32_t*)pRectCount, sizeof(uint32_t));
11346 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011347 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011348 uint64_t cgen_var_838 = (uint64_t)(uintptr_t)pRects;
11349 countingStream->putBe64(cgen_var_838);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011350 if (pRects)
11351 {
11352 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11353 {
11354 marshal_VkRect2D(countingStream, (VkRect2D*)(pRects + i));
11355 }
11356 }
11357 }
11358 uint32_t packetSize_vkGetPhysicalDevicePresentRectanglesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11359 countingStream->rewind();
11360 uint32_t opcode_vkGetPhysicalDevicePresentRectanglesKHR = OP_vkGetPhysicalDevicePresentRectanglesKHR;
11361 stream->write(&opcode_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
11362 stream->write(&packetSize_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011363 uint64_t cgen_var_839;
11364 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_839, 1);
11365 stream->write((uint64_t*)&cgen_var_839, 1 * 8);
11366 uint64_t cgen_var_840;
11367 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_840, 1);
11368 stream->write((uint64_t*)&cgen_var_840, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011369 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011370 uint64_t cgen_var_841 = (uint64_t)(uintptr_t)pRectCount;
11371 stream->putBe64(cgen_var_841);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011372 if (pRectCount)
11373 {
11374 stream->write((uint32_t*)pRectCount, sizeof(uint32_t));
11375 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011376 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011377 uint64_t cgen_var_842 = (uint64_t)(uintptr_t)pRects;
11378 stream->putBe64(cgen_var_842);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011379 if (pRects)
11380 {
11381 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11382 {
11383 marshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
11384 }
11385 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011386 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011387 uint32_t* check_pRectCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011388 check_pRectCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011389 if (pRectCount)
11390 {
11391 if (!(check_pRectCount))
11392 {
11393 fprintf(stderr, "fatal: pRectCount inconsistent between guest and host\n");
11394 }
11395 stream->read((uint32_t*)pRectCount, sizeof(uint32_t));
11396 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011397 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011398 VkRect2D* check_pRects;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011399 check_pRects = (VkRect2D*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011400 if (pRects)
11401 {
11402 if (!(check_pRects))
11403 {
11404 fprintf(stderr, "fatal: pRects inconsistent between guest and host\n");
11405 }
11406 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11407 {
11408 unmarshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
11409 }
11410 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080011411 if (pRects)
11412 {
11413 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11414 {
11415 transform_fromhost_VkRect2D(mImpl->resources(), (VkRect2D*)(pRects + i));
11416 }
11417 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011418 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
11419 stream->read(&vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011420 countingStream->clearPool();
11421 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011422 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011423 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
11424}
11425
11426VkResult VkEncoder::vkAcquireNextImage2KHR(
11427 VkDevice device,
11428 const VkAcquireNextImageInfoKHR* pAcquireInfo,
11429 uint32_t* pImageIndex)
11430{
11431 auto stream = mImpl->stream();
11432 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011433 auto resources = mImpl->resources();
11434 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011435 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011436 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011437 VkAcquireNextImageInfoKHR* local_pAcquireInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011438 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011439 local_pAcquireInfo = nullptr;
11440 if (pAcquireInfo)
11441 {
11442 local_pAcquireInfo = (VkAcquireNextImageInfoKHR*)pool->alloc(sizeof(const VkAcquireNextImageInfoKHR));
11443 deepcopy_VkAcquireNextImageInfoKHR(pool, pAcquireInfo, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
11444 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080011445 if (local_pAcquireInfo)
11446 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011447 transform_tohost_VkAcquireNextImageInfoKHR(mImpl->resources(), (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011448 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011449 countingStream->rewind();
11450 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011451 uint64_t cgen_var_845;
11452 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_845, 1);
11453 countingStream->write((uint64_t*)&cgen_var_845, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011454 marshal_VkAcquireNextImageInfoKHR(countingStream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011455 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
11456 }
11457 uint32_t packetSize_vkAcquireNextImage2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11458 countingStream->rewind();
11459 uint32_t opcode_vkAcquireNextImage2KHR = OP_vkAcquireNextImage2KHR;
11460 stream->write(&opcode_vkAcquireNextImage2KHR, sizeof(uint32_t));
11461 stream->write(&packetSize_vkAcquireNextImage2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011462 uint64_t cgen_var_846;
11463 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_846, 1);
11464 stream->write((uint64_t*)&cgen_var_846, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011465 marshal_VkAcquireNextImageInfoKHR(stream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011466 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
11467 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
11468 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
11469 stream->read(&vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011470 countingStream->clearPool();
11471 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011472 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011473 return vkAcquireNextImage2KHR_VkResult_return;
11474}
11475
11476#endif
11477#ifdef VK_KHR_display
11478VkResult VkEncoder::vkGetPhysicalDeviceDisplayPropertiesKHR(
11479 VkPhysicalDevice physicalDevice,
11480 uint32_t* pPropertyCount,
11481 VkDisplayPropertiesKHR* pProperties)
11482{
11483 auto stream = mImpl->stream();
11484 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011485 auto resources = mImpl->resources();
11486 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011487 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011488 VkPhysicalDevice local_physicalDevice;
11489 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011490 countingStream->rewind();
11491 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011492 uint64_t cgen_var_847;
11493 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_847, 1);
11494 countingStream->write((uint64_t*)&cgen_var_847, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011495 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011496 uint64_t cgen_var_848 = (uint64_t)(uintptr_t)pPropertyCount;
11497 countingStream->putBe64(cgen_var_848);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011498 if (pPropertyCount)
11499 {
11500 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11501 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011502 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011503 uint64_t cgen_var_849 = (uint64_t)(uintptr_t)pProperties;
11504 countingStream->putBe64(cgen_var_849);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011505 if (pProperties)
11506 {
11507 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11508 {
11509 marshal_VkDisplayPropertiesKHR(countingStream, (VkDisplayPropertiesKHR*)(pProperties + i));
11510 }
11511 }
11512 }
11513 uint32_t packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11514 countingStream->rewind();
11515 uint32_t opcode_vkGetPhysicalDeviceDisplayPropertiesKHR = OP_vkGetPhysicalDeviceDisplayPropertiesKHR;
11516 stream->write(&opcode_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
11517 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011518 uint64_t cgen_var_850;
11519 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_850, 1);
11520 stream->write((uint64_t*)&cgen_var_850, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011521 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011522 uint64_t cgen_var_851 = (uint64_t)(uintptr_t)pPropertyCount;
11523 stream->putBe64(cgen_var_851);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011524 if (pPropertyCount)
11525 {
11526 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11527 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011528 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011529 uint64_t cgen_var_852 = (uint64_t)(uintptr_t)pProperties;
11530 stream->putBe64(cgen_var_852);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011531 if (pProperties)
11532 {
11533 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11534 {
11535 marshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
11536 }
11537 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011538 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011539 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011540 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011541 if (pPropertyCount)
11542 {
11543 if (!(check_pPropertyCount))
11544 {
11545 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
11546 }
11547 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
11548 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011549 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011550 VkDisplayPropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011551 check_pProperties = (VkDisplayPropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011552 if (pProperties)
11553 {
11554 if (!(check_pProperties))
11555 {
11556 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
11557 }
11558 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11559 {
11560 unmarshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
11561 }
11562 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080011563 if (pProperties)
11564 {
11565 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11566 {
11567 transform_fromhost_VkDisplayPropertiesKHR(mImpl->resources(), (VkDisplayPropertiesKHR*)(pProperties + i));
11568 }
11569 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011570 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
11571 stream->read(&vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011572 countingStream->clearPool();
11573 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011574 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011575 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
11576}
11577
11578VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
11579 VkPhysicalDevice physicalDevice,
11580 uint32_t* pPropertyCount,
11581 VkDisplayPlanePropertiesKHR* pProperties)
11582{
11583 auto stream = mImpl->stream();
11584 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011585 auto resources = mImpl->resources();
11586 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011587 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011588 VkPhysicalDevice local_physicalDevice;
11589 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011590 countingStream->rewind();
11591 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011592 uint64_t cgen_var_855;
11593 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_855, 1);
11594 countingStream->write((uint64_t*)&cgen_var_855, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011595 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011596 uint64_t cgen_var_856 = (uint64_t)(uintptr_t)pPropertyCount;
11597 countingStream->putBe64(cgen_var_856);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011598 if (pPropertyCount)
11599 {
11600 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11601 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011602 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011603 uint64_t cgen_var_857 = (uint64_t)(uintptr_t)pProperties;
11604 countingStream->putBe64(cgen_var_857);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011605 if (pProperties)
11606 {
11607 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11608 {
11609 marshal_VkDisplayPlanePropertiesKHR(countingStream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
11610 }
11611 }
11612 }
11613 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11614 countingStream->rewind();
11615 uint32_t opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = OP_vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
11616 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
11617 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011618 uint64_t cgen_var_858;
11619 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_858, 1);
11620 stream->write((uint64_t*)&cgen_var_858, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011621 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011622 uint64_t cgen_var_859 = (uint64_t)(uintptr_t)pPropertyCount;
11623 stream->putBe64(cgen_var_859);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011624 if (pPropertyCount)
11625 {
11626 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11627 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011628 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011629 uint64_t cgen_var_860 = (uint64_t)(uintptr_t)pProperties;
11630 stream->putBe64(cgen_var_860);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011631 if (pProperties)
11632 {
11633 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11634 {
11635 marshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
11636 }
11637 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011638 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011639 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011640 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011641 if (pPropertyCount)
11642 {
11643 if (!(check_pPropertyCount))
11644 {
11645 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
11646 }
11647 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
11648 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011649 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011650 VkDisplayPlanePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011651 check_pProperties = (VkDisplayPlanePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011652 if (pProperties)
11653 {
11654 if (!(check_pProperties))
11655 {
11656 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
11657 }
11658 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11659 {
11660 unmarshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
11661 }
11662 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080011663 if (pProperties)
11664 {
11665 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11666 {
11667 transform_fromhost_VkDisplayPlanePropertiesKHR(mImpl->resources(), (VkDisplayPlanePropertiesKHR*)(pProperties + i));
11668 }
11669 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011670 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
11671 stream->read(&vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011672 countingStream->clearPool();
11673 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011674 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011675 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
11676}
11677
11678VkResult VkEncoder::vkGetDisplayPlaneSupportedDisplaysKHR(
11679 VkPhysicalDevice physicalDevice,
11680 uint32_t planeIndex,
11681 uint32_t* pDisplayCount,
11682 VkDisplayKHR* pDisplays)
11683{
11684 auto stream = mImpl->stream();
11685 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011686 auto resources = mImpl->resources();
11687 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011688 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011689 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011690 uint32_t local_planeIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011691 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011692 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011693 countingStream->rewind();
11694 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011695 uint64_t cgen_var_863;
11696 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_863, 1);
11697 countingStream->write((uint64_t*)&cgen_var_863, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011698 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011699 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011700 uint64_t cgen_var_864 = (uint64_t)(uintptr_t)pDisplayCount;
11701 countingStream->putBe64(cgen_var_864);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011702 if (pDisplayCount)
11703 {
11704 countingStream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
11705 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011706 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011707 uint64_t cgen_var_865 = (uint64_t)(uintptr_t)pDisplays;
11708 countingStream->putBe64(cgen_var_865);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011709 if (pDisplays)
11710 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080011711 if ((*(pDisplayCount)))
11712 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011713 uint64_t* cgen_var_866;
11714 countingStream->alloc((void**)&cgen_var_866, (*(pDisplayCount)) * 8);
11715 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_866, (*(pDisplayCount)));
11716 countingStream->write((uint64_t*)cgen_var_866, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011717 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011718 }
11719 }
11720 uint32_t packetSize_vkGetDisplayPlaneSupportedDisplaysKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11721 countingStream->rewind();
11722 uint32_t opcode_vkGetDisplayPlaneSupportedDisplaysKHR = OP_vkGetDisplayPlaneSupportedDisplaysKHR;
11723 stream->write(&opcode_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
11724 stream->write(&packetSize_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011725 uint64_t cgen_var_867;
11726 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_867, 1);
11727 stream->write((uint64_t*)&cgen_var_867, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011728 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011729 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011730 uint64_t cgen_var_868 = (uint64_t)(uintptr_t)pDisplayCount;
11731 stream->putBe64(cgen_var_868);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011732 if (pDisplayCount)
11733 {
11734 stream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
11735 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011736 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011737 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011738 uint64_t cgen_var_869 = (uint64_t)(uintptr_t)pDisplays;
11739 stream->putBe64(cgen_var_869);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011740 if (pDisplays)
11741 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080011742 if ((*(pDisplayCount)))
11743 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011744 uint64_t* cgen_var_870;
11745 stream->alloc((void**)&cgen_var_870, (*(pDisplayCount)) * 8);
11746 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_870, (*(pDisplayCount)));
11747 stream->write((uint64_t*)cgen_var_870, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011748 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011749 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011750 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011751 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011752 uint32_t* check_pDisplayCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011753 check_pDisplayCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011754 if (pDisplayCount)
11755 {
11756 if (!(check_pDisplayCount))
11757 {
11758 fprintf(stderr, "fatal: pDisplayCount inconsistent between guest and host\n");
11759 }
11760 stream->read((uint32_t*)pDisplayCount, sizeof(uint32_t));
11761 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011762 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011763 VkDisplayKHR* check_pDisplays;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011764 check_pDisplays = (VkDisplayKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011765 if (pDisplays)
11766 {
11767 if (!(check_pDisplays))
11768 {
11769 fprintf(stderr, "fatal: pDisplays inconsistent between guest and host\n");
11770 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080011771 if ((*(pDisplayCount)))
11772 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011773 uint64_t* cgen_var_873;
11774 stream->alloc((void**)&cgen_var_873, (*(pDisplayCount)) * 8);
11775 stream->read((uint64_t*)cgen_var_873, (*(pDisplayCount)) * 8);
11776 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(cgen_var_873, (VkDisplayKHR*)pDisplays, (*(pDisplayCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011777 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011778 }
11779 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
11780 stream->read(&vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011781 countingStream->clearPool();
11782 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011783 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011784 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
11785}
11786
11787VkResult VkEncoder::vkGetDisplayModePropertiesKHR(
11788 VkPhysicalDevice physicalDevice,
11789 VkDisplayKHR display,
11790 uint32_t* pPropertyCount,
11791 VkDisplayModePropertiesKHR* pProperties)
11792{
11793 auto stream = mImpl->stream();
11794 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011795 auto resources = mImpl->resources();
11796 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011797 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011798 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011799 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011800 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011801 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011802 countingStream->rewind();
11803 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011804 uint64_t cgen_var_874;
11805 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_874, 1);
11806 countingStream->write((uint64_t*)&cgen_var_874, 1 * 8);
11807 uint64_t cgen_var_875;
11808 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_875, 1);
11809 countingStream->write((uint64_t*)&cgen_var_875, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011810 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011811 uint64_t cgen_var_876 = (uint64_t)(uintptr_t)pPropertyCount;
11812 countingStream->putBe64(cgen_var_876);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011813 if (pPropertyCount)
11814 {
11815 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11816 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011817 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011818 uint64_t cgen_var_877 = (uint64_t)(uintptr_t)pProperties;
11819 countingStream->putBe64(cgen_var_877);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011820 if (pProperties)
11821 {
11822 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11823 {
11824 marshal_VkDisplayModePropertiesKHR(countingStream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11825 }
11826 }
11827 }
11828 uint32_t packetSize_vkGetDisplayModePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11829 countingStream->rewind();
11830 uint32_t opcode_vkGetDisplayModePropertiesKHR = OP_vkGetDisplayModePropertiesKHR;
11831 stream->write(&opcode_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
11832 stream->write(&packetSize_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011833 uint64_t cgen_var_878;
11834 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_878, 1);
11835 stream->write((uint64_t*)&cgen_var_878, 1 * 8);
11836 uint64_t cgen_var_879;
11837 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_879, 1);
11838 stream->write((uint64_t*)&cgen_var_879, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011839 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011840 uint64_t cgen_var_880 = (uint64_t)(uintptr_t)pPropertyCount;
11841 stream->putBe64(cgen_var_880);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011842 if (pPropertyCount)
11843 {
11844 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11845 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011846 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011847 uint64_t cgen_var_881 = (uint64_t)(uintptr_t)pProperties;
11848 stream->putBe64(cgen_var_881);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011849 if (pProperties)
11850 {
11851 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11852 {
11853 marshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11854 }
11855 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011856 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011857 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011858 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011859 if (pPropertyCount)
11860 {
11861 if (!(check_pPropertyCount))
11862 {
11863 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
11864 }
11865 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
11866 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011867 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011868 VkDisplayModePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011869 check_pProperties = (VkDisplayModePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011870 if (pProperties)
11871 {
11872 if (!(check_pProperties))
11873 {
11874 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
11875 }
11876 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11877 {
11878 unmarshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11879 }
11880 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080011881 if (pProperties)
11882 {
11883 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11884 {
11885 transform_fromhost_VkDisplayModePropertiesKHR(mImpl->resources(), (VkDisplayModePropertiesKHR*)(pProperties + i));
11886 }
11887 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011888 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
11889 stream->read(&vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011890 countingStream->clearPool();
11891 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011892 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011893 return vkGetDisplayModePropertiesKHR_VkResult_return;
11894}
11895
11896VkResult VkEncoder::vkCreateDisplayModeKHR(
11897 VkPhysicalDevice physicalDevice,
11898 VkDisplayKHR display,
11899 const VkDisplayModeCreateInfoKHR* pCreateInfo,
11900 const VkAllocationCallbacks* pAllocator,
11901 VkDisplayModeKHR* pMode)
11902{
11903 auto stream = mImpl->stream();
11904 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011905 auto resources = mImpl->resources();
11906 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011907 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011908 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011909 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011910 VkDisplayModeCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011911 VkAllocationCallbacks* local_pAllocator;
11912 local_physicalDevice = physicalDevice;
11913 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011914 local_pCreateInfo = nullptr;
11915 if (pCreateInfo)
11916 {
11917 local_pCreateInfo = (VkDisplayModeCreateInfoKHR*)pool->alloc(sizeof(const VkDisplayModeCreateInfoKHR));
11918 deepcopy_VkDisplayModeCreateInfoKHR(pool, pCreateInfo, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
11919 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011920 local_pAllocator = nullptr;
11921 if (pAllocator)
11922 {
11923 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11924 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11925 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011926 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080011927 if (local_pCreateInfo)
11928 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011929 transform_tohost_VkDisplayModeCreateInfoKHR(mImpl->resources(), (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011930 }
11931 if (local_pAllocator)
11932 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011933 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011934 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011935 countingStream->rewind();
11936 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011937 uint64_t cgen_var_884;
11938 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_884, 1);
11939 countingStream->write((uint64_t*)&cgen_var_884, 1 * 8);
11940 uint64_t cgen_var_885;
11941 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_885, 1);
11942 countingStream->write((uint64_t*)&cgen_var_885, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011943 marshal_VkDisplayModeCreateInfoKHR(countingStream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011944 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011945 uint64_t cgen_var_886 = (uint64_t)(uintptr_t)local_pAllocator;
11946 countingStream->putBe64(cgen_var_886);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011947 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011948 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011949 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011950 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011951 uint64_t cgen_var_887;
11952 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_887, 1);
11953 countingStream->write((uint64_t*)&cgen_var_887, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011954 }
11955 uint32_t packetSize_vkCreateDisplayModeKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11956 countingStream->rewind();
11957 uint32_t opcode_vkCreateDisplayModeKHR = OP_vkCreateDisplayModeKHR;
11958 stream->write(&opcode_vkCreateDisplayModeKHR, sizeof(uint32_t));
11959 stream->write(&packetSize_vkCreateDisplayModeKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011960 uint64_t cgen_var_888;
11961 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_888, 1);
11962 stream->write((uint64_t*)&cgen_var_888, 1 * 8);
11963 uint64_t cgen_var_889;
11964 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_889, 1);
11965 stream->write((uint64_t*)&cgen_var_889, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011966 marshal_VkDisplayModeCreateInfoKHR(stream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011967 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011968 uint64_t cgen_var_890 = (uint64_t)(uintptr_t)local_pAllocator;
11969 stream->putBe64(cgen_var_890);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011970 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011971 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011972 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011973 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011974 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011975 uint64_t cgen_var_891;
11976 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_891, 1);
11977 stream->write((uint64_t*)&cgen_var_891, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011978 stream->setHandleMapping(resources->unwrapMapping());
11979 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011980 uint64_t cgen_var_892;
11981 stream->read((uint64_t*)&cgen_var_892, 8);
11982 stream->handleMapping()->mapHandles_u64_VkDisplayModeKHR(&cgen_var_892, (VkDisplayModeKHR*)pMode, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011983 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011984 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
11985 stream->read(&vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011986 countingStream->clearPool();
11987 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011988 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011989 return vkCreateDisplayModeKHR_VkResult_return;
11990}
11991
11992VkResult VkEncoder::vkGetDisplayPlaneCapabilitiesKHR(
11993 VkPhysicalDevice physicalDevice,
11994 VkDisplayModeKHR mode,
11995 uint32_t planeIndex,
11996 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
11997{
11998 auto stream = mImpl->stream();
11999 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012000 auto resources = mImpl->resources();
12001 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012002 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012003 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012004 VkDisplayModeKHR local_mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012005 uint32_t local_planeIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012006 local_physicalDevice = physicalDevice;
12007 local_mode = mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012008 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012009 countingStream->rewind();
12010 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012011 uint64_t cgen_var_893;
12012 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_893, 1);
12013 countingStream->write((uint64_t*)&cgen_var_893, 1 * 8);
12014 uint64_t cgen_var_894;
12015 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_894, 1);
12016 countingStream->write((uint64_t*)&cgen_var_894, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012017 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012018 marshal_VkDisplayPlaneCapabilitiesKHR(countingStream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
12019 }
12020 uint32_t packetSize_vkGetDisplayPlaneCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12021 countingStream->rewind();
12022 uint32_t opcode_vkGetDisplayPlaneCapabilitiesKHR = OP_vkGetDisplayPlaneCapabilitiesKHR;
12023 stream->write(&opcode_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
12024 stream->write(&packetSize_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012025 uint64_t cgen_var_895;
12026 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_895, 1);
12027 stream->write((uint64_t*)&cgen_var_895, 1 * 8);
12028 uint64_t cgen_var_896;
12029 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_896, 1);
12030 stream->write((uint64_t*)&cgen_var_896, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012031 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012032 marshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
12033 unmarshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080012034 if (pCapabilities)
12035 {
12036 transform_fromhost_VkDisplayPlaneCapabilitiesKHR(mImpl->resources(), (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
12037 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012038 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
12039 stream->read(&vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012040 countingStream->clearPool();
12041 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012042 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012043 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
12044}
12045
12046VkResult VkEncoder::vkCreateDisplayPlaneSurfaceKHR(
12047 VkInstance instance,
12048 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
12049 const VkAllocationCallbacks* pAllocator,
12050 VkSurfaceKHR* pSurface)
12051{
12052 auto stream = mImpl->stream();
12053 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012054 auto resources = mImpl->resources();
12055 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012056 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012057 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012058 VkDisplaySurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012059 VkAllocationCallbacks* local_pAllocator;
12060 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012061 local_pCreateInfo = nullptr;
12062 if (pCreateInfo)
12063 {
12064 local_pCreateInfo = (VkDisplaySurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkDisplaySurfaceCreateInfoKHR));
12065 deepcopy_VkDisplaySurfaceCreateInfoKHR(pool, pCreateInfo, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
12066 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012067 local_pAllocator = nullptr;
12068 if (pAllocator)
12069 {
12070 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12071 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12072 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012073 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012074 if (local_pCreateInfo)
12075 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012076 transform_tohost_VkDisplaySurfaceCreateInfoKHR(mImpl->resources(), (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012077 }
12078 if (local_pAllocator)
12079 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012080 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012081 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012082 countingStream->rewind();
12083 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012084 uint64_t cgen_var_897;
12085 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_897, 1);
12086 countingStream->write((uint64_t*)&cgen_var_897, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012087 marshal_VkDisplaySurfaceCreateInfoKHR(countingStream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012088 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012089 uint64_t cgen_var_898 = (uint64_t)(uintptr_t)local_pAllocator;
12090 countingStream->putBe64(cgen_var_898);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012091 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012092 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012093 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012094 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012095 uint64_t cgen_var_899;
12096 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_899, 1);
12097 countingStream->write((uint64_t*)&cgen_var_899, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012098 }
12099 uint32_t packetSize_vkCreateDisplayPlaneSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12100 countingStream->rewind();
12101 uint32_t opcode_vkCreateDisplayPlaneSurfaceKHR = OP_vkCreateDisplayPlaneSurfaceKHR;
12102 stream->write(&opcode_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
12103 stream->write(&packetSize_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012104 uint64_t cgen_var_900;
12105 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_900, 1);
12106 stream->write((uint64_t*)&cgen_var_900, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012107 marshal_VkDisplaySurfaceCreateInfoKHR(stream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012108 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012109 uint64_t cgen_var_901 = (uint64_t)(uintptr_t)local_pAllocator;
12110 stream->putBe64(cgen_var_901);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012111 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012112 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012113 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012114 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012115 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012116 uint64_t cgen_var_902;
12117 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_902, 1);
12118 stream->write((uint64_t*)&cgen_var_902, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012119 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012120 uint64_t cgen_var_903;
12121 stream->read((uint64_t*)&cgen_var_903, 8);
12122 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_903, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012123 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
12124 stream->read(&vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012125 countingStream->clearPool();
12126 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012127 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012128 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
12129}
12130
12131#endif
12132#ifdef VK_KHR_display_swapchain
12133VkResult VkEncoder::vkCreateSharedSwapchainsKHR(
12134 VkDevice device,
12135 uint32_t swapchainCount,
12136 const VkSwapchainCreateInfoKHR* pCreateInfos,
12137 const VkAllocationCallbacks* pAllocator,
12138 VkSwapchainKHR* pSwapchains)
12139{
12140 auto stream = mImpl->stream();
12141 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012142 auto resources = mImpl->resources();
12143 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012144 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012145 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012146 uint32_t local_swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012147 VkSwapchainCreateInfoKHR* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012148 VkAllocationCallbacks* local_pAllocator;
12149 local_device = device;
12150 local_swapchainCount = swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012151 local_pCreateInfos = nullptr;
12152 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012153 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012154 local_pCreateInfos = (VkSwapchainCreateInfoKHR*)pool->alloc(((swapchainCount)) * sizeof(const VkSwapchainCreateInfoKHR));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012155 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
12156 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012157 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfos + i, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012158 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012159 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012160 local_pAllocator = nullptr;
12161 if (pAllocator)
12162 {
12163 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12164 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12165 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012166 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012167 if (local_pCreateInfos)
12168 {
12169 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
12170 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012171 transform_tohost_VkSwapchainCreateInfoKHR(mImpl->resources(), (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012172 }
12173 }
12174 if (local_pAllocator)
12175 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012176 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012177 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012178 countingStream->rewind();
12179 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012180 uint64_t cgen_var_904;
12181 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_904, 1);
12182 countingStream->write((uint64_t*)&cgen_var_904, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012183 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
12184 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
12185 {
12186 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
12187 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012188 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012189 uint64_t cgen_var_905 = (uint64_t)(uintptr_t)local_pAllocator;
12190 countingStream->putBe64(cgen_var_905);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012191 if (local_pAllocator)
12192 {
12193 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012194 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080012195 if (((swapchainCount)))
12196 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012197 uint64_t* cgen_var_906;
12198 countingStream->alloc((void**)&cgen_var_906, ((swapchainCount)) * 8);
12199 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_906, ((swapchainCount)));
12200 countingStream->write((uint64_t*)cgen_var_906, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012201 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012202 }
12203 uint32_t packetSize_vkCreateSharedSwapchainsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12204 countingStream->rewind();
12205 uint32_t opcode_vkCreateSharedSwapchainsKHR = OP_vkCreateSharedSwapchainsKHR;
12206 stream->write(&opcode_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
12207 stream->write(&packetSize_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012208 uint64_t cgen_var_907;
12209 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_907, 1);
12210 stream->write((uint64_t*)&cgen_var_907, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012211 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012212 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
12213 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012214 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012215 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012216 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012217 uint64_t cgen_var_908 = (uint64_t)(uintptr_t)local_pAllocator;
12218 stream->putBe64(cgen_var_908);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012219 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012220 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012221 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012222 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012223 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -080012224 if (((swapchainCount)))
12225 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012226 uint64_t* cgen_var_909;
12227 stream->alloc((void**)&cgen_var_909, ((swapchainCount)) * 8);
12228 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_909, ((swapchainCount)));
12229 stream->write((uint64_t*)cgen_var_909, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012230 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012231 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -080012232 if (((swapchainCount)))
12233 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012234 uint64_t* cgen_var_910;
12235 stream->alloc((void**)&cgen_var_910, ((swapchainCount)) * 8);
12236 stream->read((uint64_t*)cgen_var_910, ((swapchainCount)) * 8);
12237 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(cgen_var_910, (VkSwapchainKHR*)pSwapchains, ((swapchainCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012238 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012239 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
12240 stream->read(&vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012241 countingStream->clearPool();
12242 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012243 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012244 return vkCreateSharedSwapchainsKHR_VkResult_return;
12245}
12246
12247#endif
12248#ifdef VK_KHR_xlib_surface
12249VkResult VkEncoder::vkCreateXlibSurfaceKHR(
12250 VkInstance instance,
12251 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
12252 const VkAllocationCallbacks* pAllocator,
12253 VkSurfaceKHR* pSurface)
12254{
12255 auto stream = mImpl->stream();
12256 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012257 auto resources = mImpl->resources();
12258 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012259 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012260 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012261 VkXlibSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012262 VkAllocationCallbacks* local_pAllocator;
12263 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012264 local_pCreateInfo = nullptr;
12265 if (pCreateInfo)
12266 {
12267 local_pCreateInfo = (VkXlibSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXlibSurfaceCreateInfoKHR));
12268 deepcopy_VkXlibSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
12269 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012270 local_pAllocator = nullptr;
12271 if (pAllocator)
12272 {
12273 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12274 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12275 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012276 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012277 if (local_pCreateInfo)
12278 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012279 transform_tohost_VkXlibSurfaceCreateInfoKHR(mImpl->resources(), (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012280 }
12281 if (local_pAllocator)
12282 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012283 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012284 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012285 countingStream->rewind();
12286 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012287 uint64_t cgen_var_911;
12288 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_911, 1);
12289 countingStream->write((uint64_t*)&cgen_var_911, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012290 marshal_VkXlibSurfaceCreateInfoKHR(countingStream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012291 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012292 uint64_t cgen_var_912 = (uint64_t)(uintptr_t)local_pAllocator;
12293 countingStream->putBe64(cgen_var_912);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012294 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012295 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012296 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012297 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012298 uint64_t cgen_var_913;
12299 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_913, 1);
12300 countingStream->write((uint64_t*)&cgen_var_913, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012301 }
12302 uint32_t packetSize_vkCreateXlibSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12303 countingStream->rewind();
12304 uint32_t opcode_vkCreateXlibSurfaceKHR = OP_vkCreateXlibSurfaceKHR;
12305 stream->write(&opcode_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
12306 stream->write(&packetSize_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012307 uint64_t cgen_var_914;
12308 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_914, 1);
12309 stream->write((uint64_t*)&cgen_var_914, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012310 marshal_VkXlibSurfaceCreateInfoKHR(stream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012311 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012312 uint64_t cgen_var_915 = (uint64_t)(uintptr_t)local_pAllocator;
12313 stream->putBe64(cgen_var_915);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012314 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012315 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012316 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012317 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012318 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012319 uint64_t cgen_var_916;
12320 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_916, 1);
12321 stream->write((uint64_t*)&cgen_var_916, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012322 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012323 uint64_t cgen_var_917;
12324 stream->read((uint64_t*)&cgen_var_917, 8);
12325 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_917, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012326 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
12327 stream->read(&vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012328 countingStream->clearPool();
12329 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012330 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012331 return vkCreateXlibSurfaceKHR_VkResult_return;
12332}
12333
12334VkBool32 VkEncoder::vkGetPhysicalDeviceXlibPresentationSupportKHR(
12335 VkPhysicalDevice physicalDevice,
12336 uint32_t queueFamilyIndex,
12337 Display* dpy,
12338 VisualID visualID)
12339{
12340 auto stream = mImpl->stream();
12341 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012342 auto resources = mImpl->resources();
12343 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012344 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012345 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012346 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012347 VisualID local_visualID;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012348 local_physicalDevice = physicalDevice;
12349 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012350 local_visualID = visualID;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012351 countingStream->rewind();
12352 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012353 uint64_t cgen_var_918;
12354 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_918, 1);
12355 countingStream->write((uint64_t*)&cgen_var_918, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012356 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012357 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012358 countingStream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012359 }
12360 uint32_t packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12361 countingStream->rewind();
12362 uint32_t opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR = OP_vkGetPhysicalDeviceXlibPresentationSupportKHR;
12363 stream->write(&opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
12364 stream->write(&packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012365 uint64_t cgen_var_919;
12366 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_919, 1);
12367 stream->write((uint64_t*)&cgen_var_919, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012368 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012369 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012370 stream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012371 stream->read((Display*)dpy, sizeof(Display));
12372 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
12373 stream->read(&vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012374 countingStream->clearPool();
12375 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012376 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012377 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
12378}
12379
12380#endif
12381#ifdef VK_KHR_xcb_surface
12382VkResult VkEncoder::vkCreateXcbSurfaceKHR(
12383 VkInstance instance,
12384 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
12385 const VkAllocationCallbacks* pAllocator,
12386 VkSurfaceKHR* pSurface)
12387{
12388 auto stream = mImpl->stream();
12389 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012390 auto resources = mImpl->resources();
12391 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012392 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012393 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012394 VkXcbSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012395 VkAllocationCallbacks* local_pAllocator;
12396 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012397 local_pCreateInfo = nullptr;
12398 if (pCreateInfo)
12399 {
12400 local_pCreateInfo = (VkXcbSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXcbSurfaceCreateInfoKHR));
12401 deepcopy_VkXcbSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
12402 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012403 local_pAllocator = nullptr;
12404 if (pAllocator)
12405 {
12406 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12407 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12408 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012409 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012410 if (local_pCreateInfo)
12411 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012412 transform_tohost_VkXcbSurfaceCreateInfoKHR(mImpl->resources(), (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012413 }
12414 if (local_pAllocator)
12415 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012416 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012417 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012418 countingStream->rewind();
12419 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012420 uint64_t cgen_var_920;
12421 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_920, 1);
12422 countingStream->write((uint64_t*)&cgen_var_920, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012423 marshal_VkXcbSurfaceCreateInfoKHR(countingStream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012424 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012425 uint64_t cgen_var_921 = (uint64_t)(uintptr_t)local_pAllocator;
12426 countingStream->putBe64(cgen_var_921);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012427 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012428 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012429 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012430 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012431 uint64_t cgen_var_922;
12432 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_922, 1);
12433 countingStream->write((uint64_t*)&cgen_var_922, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012434 }
12435 uint32_t packetSize_vkCreateXcbSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12436 countingStream->rewind();
12437 uint32_t opcode_vkCreateXcbSurfaceKHR = OP_vkCreateXcbSurfaceKHR;
12438 stream->write(&opcode_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
12439 stream->write(&packetSize_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012440 uint64_t cgen_var_923;
12441 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_923, 1);
12442 stream->write((uint64_t*)&cgen_var_923, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012443 marshal_VkXcbSurfaceCreateInfoKHR(stream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012444 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012445 uint64_t cgen_var_924 = (uint64_t)(uintptr_t)local_pAllocator;
12446 stream->putBe64(cgen_var_924);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012447 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012448 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012449 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012450 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012451 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012452 uint64_t cgen_var_925;
12453 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_925, 1);
12454 stream->write((uint64_t*)&cgen_var_925, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012455 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012456 uint64_t cgen_var_926;
12457 stream->read((uint64_t*)&cgen_var_926, 8);
12458 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_926, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012459 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
12460 stream->read(&vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012461 countingStream->clearPool();
12462 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012463 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012464 return vkCreateXcbSurfaceKHR_VkResult_return;
12465}
12466
12467VkBool32 VkEncoder::vkGetPhysicalDeviceXcbPresentationSupportKHR(
12468 VkPhysicalDevice physicalDevice,
12469 uint32_t queueFamilyIndex,
12470 xcb_connection_t* connection,
12471 xcb_visualid_t visual_id)
12472{
12473 auto stream = mImpl->stream();
12474 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012475 auto resources = mImpl->resources();
12476 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012477 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012478 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012479 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012480 xcb_visualid_t local_visual_id;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012481 local_physicalDevice = physicalDevice;
12482 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012483 local_visual_id = visual_id;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012484 countingStream->rewind();
12485 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012486 uint64_t cgen_var_927;
12487 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_927, 1);
12488 countingStream->write((uint64_t*)&cgen_var_927, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012489 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012490 countingStream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012491 countingStream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012492 }
12493 uint32_t packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12494 countingStream->rewind();
12495 uint32_t opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR = OP_vkGetPhysicalDeviceXcbPresentationSupportKHR;
12496 stream->write(&opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
12497 stream->write(&packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012498 uint64_t cgen_var_928;
12499 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_928, 1);
12500 stream->write((uint64_t*)&cgen_var_928, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012501 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012502 stream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012503 stream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012504 stream->read((xcb_connection_t*)connection, sizeof(xcb_connection_t));
12505 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
12506 stream->read(&vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012507 countingStream->clearPool();
12508 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012509 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012510 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
12511}
12512
12513#endif
12514#ifdef VK_KHR_wayland_surface
12515VkResult VkEncoder::vkCreateWaylandSurfaceKHR(
12516 VkInstance instance,
12517 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
12518 const VkAllocationCallbacks* pAllocator,
12519 VkSurfaceKHR* pSurface)
12520{
12521 auto stream = mImpl->stream();
12522 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012523 auto resources = mImpl->resources();
12524 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012525 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012526 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012527 VkWaylandSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012528 VkAllocationCallbacks* local_pAllocator;
12529 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012530 local_pCreateInfo = nullptr;
12531 if (pCreateInfo)
12532 {
12533 local_pCreateInfo = (VkWaylandSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWaylandSurfaceCreateInfoKHR));
12534 deepcopy_VkWaylandSurfaceCreateInfoKHR(pool, pCreateInfo, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
12535 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012536 local_pAllocator = nullptr;
12537 if (pAllocator)
12538 {
12539 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12540 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12541 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012542 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012543 if (local_pCreateInfo)
12544 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012545 transform_tohost_VkWaylandSurfaceCreateInfoKHR(mImpl->resources(), (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012546 }
12547 if (local_pAllocator)
12548 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012549 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012550 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012551 countingStream->rewind();
12552 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012553 uint64_t cgen_var_929;
12554 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_929, 1);
12555 countingStream->write((uint64_t*)&cgen_var_929, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012556 marshal_VkWaylandSurfaceCreateInfoKHR(countingStream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012557 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012558 uint64_t cgen_var_930 = (uint64_t)(uintptr_t)local_pAllocator;
12559 countingStream->putBe64(cgen_var_930);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012560 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012561 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012562 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012563 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012564 uint64_t cgen_var_931;
12565 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_931, 1);
12566 countingStream->write((uint64_t*)&cgen_var_931, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012567 }
12568 uint32_t packetSize_vkCreateWaylandSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12569 countingStream->rewind();
12570 uint32_t opcode_vkCreateWaylandSurfaceKHR = OP_vkCreateWaylandSurfaceKHR;
12571 stream->write(&opcode_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
12572 stream->write(&packetSize_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012573 uint64_t cgen_var_932;
12574 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_932, 1);
12575 stream->write((uint64_t*)&cgen_var_932, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012576 marshal_VkWaylandSurfaceCreateInfoKHR(stream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012577 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012578 uint64_t cgen_var_933 = (uint64_t)(uintptr_t)local_pAllocator;
12579 stream->putBe64(cgen_var_933);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012580 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012581 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012582 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012583 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012584 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012585 uint64_t cgen_var_934;
12586 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_934, 1);
12587 stream->write((uint64_t*)&cgen_var_934, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012588 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012589 uint64_t cgen_var_935;
12590 stream->read((uint64_t*)&cgen_var_935, 8);
12591 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_935, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012592 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
12593 stream->read(&vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012594 countingStream->clearPool();
12595 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012596 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012597 return vkCreateWaylandSurfaceKHR_VkResult_return;
12598}
12599
12600VkBool32 VkEncoder::vkGetPhysicalDeviceWaylandPresentationSupportKHR(
12601 VkPhysicalDevice physicalDevice,
12602 uint32_t queueFamilyIndex,
12603 wl_display* display)
12604{
12605 auto stream = mImpl->stream();
12606 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012607 auto resources = mImpl->resources();
12608 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012609 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012610 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012611 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012612 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012613 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012614 countingStream->rewind();
12615 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012616 uint64_t cgen_var_936;
12617 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_936, 1);
12618 countingStream->write((uint64_t*)&cgen_var_936, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012619 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012620 countingStream->write((wl_display*)display, sizeof(wl_display));
12621 }
12622 uint32_t packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12623 countingStream->rewind();
12624 uint32_t opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR = OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR;
12625 stream->write(&opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
12626 stream->write(&packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012627 uint64_t cgen_var_937;
12628 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_937, 1);
12629 stream->write((uint64_t*)&cgen_var_937, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012630 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012631 stream->write((wl_display*)display, sizeof(wl_display));
12632 stream->read((wl_display*)display, sizeof(wl_display));
12633 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
12634 stream->read(&vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012635 countingStream->clearPool();
12636 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012637 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012638 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
12639}
12640
12641#endif
12642#ifdef VK_KHR_mir_surface
12643VkResult VkEncoder::vkCreateMirSurfaceKHR(
12644 VkInstance instance,
12645 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
12646 const VkAllocationCallbacks* pAllocator,
12647 VkSurfaceKHR* pSurface)
12648{
12649 auto stream = mImpl->stream();
12650 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012651 auto resources = mImpl->resources();
12652 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012653 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012654 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012655 VkMirSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012656 VkAllocationCallbacks* local_pAllocator;
12657 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012658 local_pCreateInfo = nullptr;
12659 if (pCreateInfo)
12660 {
12661 local_pCreateInfo = (VkMirSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkMirSurfaceCreateInfoKHR));
12662 deepcopy_VkMirSurfaceCreateInfoKHR(pool, pCreateInfo, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
12663 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012664 local_pAllocator = nullptr;
12665 if (pAllocator)
12666 {
12667 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12668 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12669 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012670 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012671 if (local_pCreateInfo)
12672 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012673 transform_tohost_VkMirSurfaceCreateInfoKHR(mImpl->resources(), (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012674 }
12675 if (local_pAllocator)
12676 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012677 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012678 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012679 countingStream->rewind();
12680 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012681 uint64_t cgen_var_938;
12682 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_938, 1);
12683 countingStream->write((uint64_t*)&cgen_var_938, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012684 marshal_VkMirSurfaceCreateInfoKHR(countingStream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012685 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012686 uint64_t cgen_var_939 = (uint64_t)(uintptr_t)local_pAllocator;
12687 countingStream->putBe64(cgen_var_939);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012688 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012689 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012690 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012691 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012692 uint64_t cgen_var_940;
12693 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_940, 1);
12694 countingStream->write((uint64_t*)&cgen_var_940, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012695 }
12696 uint32_t packetSize_vkCreateMirSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12697 countingStream->rewind();
12698 uint32_t opcode_vkCreateMirSurfaceKHR = OP_vkCreateMirSurfaceKHR;
12699 stream->write(&opcode_vkCreateMirSurfaceKHR, sizeof(uint32_t));
12700 stream->write(&packetSize_vkCreateMirSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012701 uint64_t cgen_var_941;
12702 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_941, 1);
12703 stream->write((uint64_t*)&cgen_var_941, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012704 marshal_VkMirSurfaceCreateInfoKHR(stream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012705 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012706 uint64_t cgen_var_942 = (uint64_t)(uintptr_t)local_pAllocator;
12707 stream->putBe64(cgen_var_942);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012708 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012709 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012710 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012711 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012712 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012713 uint64_t cgen_var_943;
12714 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_943, 1);
12715 stream->write((uint64_t*)&cgen_var_943, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012716 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012717 uint64_t cgen_var_944;
12718 stream->read((uint64_t*)&cgen_var_944, 8);
12719 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_944, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012720 VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
12721 stream->read(&vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012722 countingStream->clearPool();
12723 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012724 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012725 return vkCreateMirSurfaceKHR_VkResult_return;
12726}
12727
12728VkBool32 VkEncoder::vkGetPhysicalDeviceMirPresentationSupportKHR(
12729 VkPhysicalDevice physicalDevice,
12730 uint32_t queueFamilyIndex,
12731 MirConnection* connection)
12732{
12733 auto stream = mImpl->stream();
12734 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012735 auto resources = mImpl->resources();
12736 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012737 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012738 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012739 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012740 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012741 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012742 countingStream->rewind();
12743 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012744 uint64_t cgen_var_945;
12745 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_945, 1);
12746 countingStream->write((uint64_t*)&cgen_var_945, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012747 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012748 countingStream->write((MirConnection*)connection, sizeof(MirConnection));
12749 }
12750 uint32_t packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12751 countingStream->rewind();
12752 uint32_t opcode_vkGetPhysicalDeviceMirPresentationSupportKHR = OP_vkGetPhysicalDeviceMirPresentationSupportKHR;
12753 stream->write(&opcode_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
12754 stream->write(&packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012755 uint64_t cgen_var_946;
12756 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_946, 1);
12757 stream->write((uint64_t*)&cgen_var_946, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012758 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012759 stream->write((MirConnection*)connection, sizeof(MirConnection));
12760 stream->read((MirConnection*)connection, sizeof(MirConnection));
12761 VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
12762 stream->read(&vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012763 countingStream->clearPool();
12764 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012765 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012766 return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
12767}
12768
12769#endif
12770#ifdef VK_KHR_android_surface
12771VkResult VkEncoder::vkCreateAndroidSurfaceKHR(
12772 VkInstance instance,
12773 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
12774 const VkAllocationCallbacks* pAllocator,
12775 VkSurfaceKHR* pSurface)
12776{
12777 auto stream = mImpl->stream();
12778 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012779 auto resources = mImpl->resources();
12780 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012781 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012782 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012783 VkAndroidSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012784 VkAllocationCallbacks* local_pAllocator;
12785 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012786 local_pCreateInfo = nullptr;
12787 if (pCreateInfo)
12788 {
12789 local_pCreateInfo = (VkAndroidSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkAndroidSurfaceCreateInfoKHR));
12790 deepcopy_VkAndroidSurfaceCreateInfoKHR(pool, pCreateInfo, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
12791 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012792 local_pAllocator = nullptr;
12793 if (pAllocator)
12794 {
12795 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12796 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12797 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012798 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012799 if (local_pCreateInfo)
12800 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012801 transform_tohost_VkAndroidSurfaceCreateInfoKHR(mImpl->resources(), (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012802 }
12803 if (local_pAllocator)
12804 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012805 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012806 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012807 countingStream->rewind();
12808 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012809 uint64_t cgen_var_947;
12810 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_947, 1);
12811 countingStream->write((uint64_t*)&cgen_var_947, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012812 marshal_VkAndroidSurfaceCreateInfoKHR(countingStream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012813 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012814 uint64_t cgen_var_948 = (uint64_t)(uintptr_t)local_pAllocator;
12815 countingStream->putBe64(cgen_var_948);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012816 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012817 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012818 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012819 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012820 uint64_t cgen_var_949;
12821 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_949, 1);
12822 countingStream->write((uint64_t*)&cgen_var_949, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012823 }
12824 uint32_t packetSize_vkCreateAndroidSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12825 countingStream->rewind();
12826 uint32_t opcode_vkCreateAndroidSurfaceKHR = OP_vkCreateAndroidSurfaceKHR;
12827 stream->write(&opcode_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
12828 stream->write(&packetSize_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012829 uint64_t cgen_var_950;
12830 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_950, 1);
12831 stream->write((uint64_t*)&cgen_var_950, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012832 marshal_VkAndroidSurfaceCreateInfoKHR(stream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012833 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012834 uint64_t cgen_var_951 = (uint64_t)(uintptr_t)local_pAllocator;
12835 stream->putBe64(cgen_var_951);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012836 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012837 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012838 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012839 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012840 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012841 uint64_t cgen_var_952;
12842 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_952, 1);
12843 stream->write((uint64_t*)&cgen_var_952, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012844 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012845 uint64_t cgen_var_953;
12846 stream->read((uint64_t*)&cgen_var_953, 8);
12847 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_953, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012848 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
12849 stream->read(&vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012850 countingStream->clearPool();
12851 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012852 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012853 return vkCreateAndroidSurfaceKHR_VkResult_return;
12854}
12855
12856#endif
12857#ifdef VK_KHR_win32_surface
12858VkResult VkEncoder::vkCreateWin32SurfaceKHR(
12859 VkInstance instance,
12860 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
12861 const VkAllocationCallbacks* pAllocator,
12862 VkSurfaceKHR* pSurface)
12863{
12864 auto stream = mImpl->stream();
12865 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012866 auto resources = mImpl->resources();
12867 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012868 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012869 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012870 VkWin32SurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012871 VkAllocationCallbacks* local_pAllocator;
12872 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012873 local_pCreateInfo = nullptr;
12874 if (pCreateInfo)
12875 {
12876 local_pCreateInfo = (VkWin32SurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWin32SurfaceCreateInfoKHR));
12877 deepcopy_VkWin32SurfaceCreateInfoKHR(pool, pCreateInfo, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
12878 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012879 local_pAllocator = nullptr;
12880 if (pAllocator)
12881 {
12882 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12883 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12884 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012885 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012886 if (local_pCreateInfo)
12887 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012888 transform_tohost_VkWin32SurfaceCreateInfoKHR(mImpl->resources(), (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012889 }
12890 if (local_pAllocator)
12891 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012892 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012893 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012894 countingStream->rewind();
12895 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012896 uint64_t cgen_var_954;
12897 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_954, 1);
12898 countingStream->write((uint64_t*)&cgen_var_954, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012899 marshal_VkWin32SurfaceCreateInfoKHR(countingStream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012900 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012901 uint64_t cgen_var_955 = (uint64_t)(uintptr_t)local_pAllocator;
12902 countingStream->putBe64(cgen_var_955);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012903 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012904 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012905 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012906 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012907 uint64_t cgen_var_956;
12908 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_956, 1);
12909 countingStream->write((uint64_t*)&cgen_var_956, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012910 }
12911 uint32_t packetSize_vkCreateWin32SurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12912 countingStream->rewind();
12913 uint32_t opcode_vkCreateWin32SurfaceKHR = OP_vkCreateWin32SurfaceKHR;
12914 stream->write(&opcode_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
12915 stream->write(&packetSize_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012916 uint64_t cgen_var_957;
12917 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_957, 1);
12918 stream->write((uint64_t*)&cgen_var_957, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012919 marshal_VkWin32SurfaceCreateInfoKHR(stream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012920 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012921 uint64_t cgen_var_958 = (uint64_t)(uintptr_t)local_pAllocator;
12922 stream->putBe64(cgen_var_958);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012923 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012924 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012925 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012926 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012927 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012928 uint64_t cgen_var_959;
12929 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_959, 1);
12930 stream->write((uint64_t*)&cgen_var_959, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012931 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012932 uint64_t cgen_var_960;
12933 stream->read((uint64_t*)&cgen_var_960, 8);
12934 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_960, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012935 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
12936 stream->read(&vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012937 countingStream->clearPool();
12938 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012939 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012940 return vkCreateWin32SurfaceKHR_VkResult_return;
12941}
12942
12943VkBool32 VkEncoder::vkGetPhysicalDeviceWin32PresentationSupportKHR(
12944 VkPhysicalDevice physicalDevice,
12945 uint32_t queueFamilyIndex)
12946{
12947 auto stream = mImpl->stream();
12948 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012949 auto resources = mImpl->resources();
12950 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012951 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012952 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012953 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012954 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012955 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012956 countingStream->rewind();
12957 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012958 uint64_t cgen_var_961;
12959 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_961, 1);
12960 countingStream->write((uint64_t*)&cgen_var_961, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012961 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012962 }
12963 uint32_t packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12964 countingStream->rewind();
12965 uint32_t opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR = OP_vkGetPhysicalDeviceWin32PresentationSupportKHR;
12966 stream->write(&opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
12967 stream->write(&packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012968 uint64_t cgen_var_962;
12969 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_962, 1);
12970 stream->write((uint64_t*)&cgen_var_962, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012971 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012972 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
12973 stream->read(&vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012974 countingStream->clearPool();
12975 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012976 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012977 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
12978}
12979
12980#endif
12981#ifdef VK_KHR_sampler_mirror_clamp_to_edge
12982#endif
12983#ifdef VK_KHR_multiview
12984#endif
12985#ifdef VK_KHR_get_physical_device_properties2
12986void VkEncoder::vkGetPhysicalDeviceFeatures2KHR(
12987 VkPhysicalDevice physicalDevice,
12988 VkPhysicalDeviceFeatures2* pFeatures)
12989{
12990 auto stream = mImpl->stream();
12991 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012992 auto resources = mImpl->resources();
12993 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012994 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012995 VkPhysicalDevice local_physicalDevice;
12996 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012997 countingStream->rewind();
12998 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012999 uint64_t cgen_var_963;
13000 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_963, 1);
13001 countingStream->write((uint64_t*)&cgen_var_963, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013002 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
13003 }
13004 uint32_t packetSize_vkGetPhysicalDeviceFeatures2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13005 countingStream->rewind();
13006 uint32_t opcode_vkGetPhysicalDeviceFeatures2KHR = OP_vkGetPhysicalDeviceFeatures2KHR;
13007 stream->write(&opcode_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
13008 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013009 uint64_t cgen_var_964;
13010 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_964, 1);
13011 stream->write((uint64_t*)&cgen_var_964, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013012 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
13013 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013014 if (pFeatures)
13015 {
13016 transform_fromhost_VkPhysicalDeviceFeatures2(mImpl->resources(), (VkPhysicalDeviceFeatures2*)(pFeatures));
13017 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013018}
13019
13020void VkEncoder::vkGetPhysicalDeviceProperties2KHR(
13021 VkPhysicalDevice physicalDevice,
13022 VkPhysicalDeviceProperties2* pProperties)
13023{
13024 auto stream = mImpl->stream();
13025 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013026 auto resources = mImpl->resources();
13027 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013028 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013029 VkPhysicalDevice local_physicalDevice;
13030 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013031 countingStream->rewind();
13032 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013033 uint64_t cgen_var_965;
13034 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_965, 1);
13035 countingStream->write((uint64_t*)&cgen_var_965, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013036 marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
13037 }
13038 uint32_t packetSize_vkGetPhysicalDeviceProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13039 countingStream->rewind();
13040 uint32_t opcode_vkGetPhysicalDeviceProperties2KHR = OP_vkGetPhysicalDeviceProperties2KHR;
13041 stream->write(&opcode_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
13042 stream->write(&packetSize_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013043 uint64_t cgen_var_966;
13044 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_966, 1);
13045 stream->write((uint64_t*)&cgen_var_966, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013046 marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
13047 unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013048 if (pProperties)
13049 {
13050 transform_fromhost_VkPhysicalDeviceProperties2(mImpl->resources(), (VkPhysicalDeviceProperties2*)(pProperties));
13051 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013052}
13053
13054void VkEncoder::vkGetPhysicalDeviceFormatProperties2KHR(
13055 VkPhysicalDevice physicalDevice,
13056 VkFormat format,
13057 VkFormatProperties2* pFormatProperties)
13058{
13059 auto stream = mImpl->stream();
13060 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013061 auto resources = mImpl->resources();
13062 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013063 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013064 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013065 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013066 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013067 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013068 countingStream->rewind();
13069 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013070 uint64_t cgen_var_967;
13071 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_967, 1);
13072 countingStream->write((uint64_t*)&cgen_var_967, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013073 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013074 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
13075 }
13076 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13077 countingStream->rewind();
13078 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2KHR = OP_vkGetPhysicalDeviceFormatProperties2KHR;
13079 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
13080 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013081 uint64_t cgen_var_968;
13082 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_968, 1);
13083 stream->write((uint64_t*)&cgen_var_968, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013084 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013085 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
13086 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013087 if (pFormatProperties)
13088 {
13089 transform_fromhost_VkFormatProperties2(mImpl->resources(), (VkFormatProperties2*)(pFormatProperties));
13090 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013091}
13092
13093VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2KHR(
13094 VkPhysicalDevice physicalDevice,
13095 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
13096 VkImageFormatProperties2* pImageFormatProperties)
13097{
13098 auto stream = mImpl->stream();
13099 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013100 auto resources = mImpl->resources();
13101 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013102 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013103 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013104 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013105 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013106 local_pImageFormatInfo = nullptr;
13107 if (pImageFormatInfo)
13108 {
13109 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
13110 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
13111 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013112 if (local_pImageFormatInfo)
13113 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013114 transform_tohost_VkPhysicalDeviceImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013115 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013116 countingStream->rewind();
13117 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013118 uint64_t cgen_var_969;
13119 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_969, 1);
13120 countingStream->write((uint64_t*)&cgen_var_969, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013121 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013122 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
13123 }
13124 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13125 countingStream->rewind();
13126 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2KHR = OP_vkGetPhysicalDeviceImageFormatProperties2KHR;
13127 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
13128 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013129 uint64_t cgen_var_970;
13130 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_970, 1);
13131 stream->write((uint64_t*)&cgen_var_970, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013132 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013133 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
13134 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013135 if (pImageFormatProperties)
13136 {
13137 transform_fromhost_VkImageFormatProperties2(mImpl->resources(), (VkImageFormatProperties2*)(pImageFormatProperties));
13138 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013139 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
13140 stream->read(&vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013141 countingStream->clearPool();
13142 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013143 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013144 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
13145}
13146
13147void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2KHR(
13148 VkPhysicalDevice physicalDevice,
13149 uint32_t* pQueueFamilyPropertyCount,
13150 VkQueueFamilyProperties2* pQueueFamilyProperties)
13151{
13152 auto stream = mImpl->stream();
13153 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013154 auto resources = mImpl->resources();
13155 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013156 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013157 VkPhysicalDevice local_physicalDevice;
13158 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013159 countingStream->rewind();
13160 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013161 uint64_t cgen_var_971;
13162 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_971, 1);
13163 countingStream->write((uint64_t*)&cgen_var_971, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013164 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013165 uint64_t cgen_var_972 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
13166 countingStream->putBe64(cgen_var_972);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013167 if (pQueueFamilyPropertyCount)
13168 {
13169 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
13170 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013171 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013172 uint64_t cgen_var_973 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
13173 countingStream->putBe64(cgen_var_973);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013174 if (pQueueFamilyProperties)
13175 {
13176 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
13177 {
13178 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
13179 }
13180 }
13181 }
13182 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13183 countingStream->rewind();
13184 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR = OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR;
13185 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
13186 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013187 uint64_t cgen_var_974;
13188 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_974, 1);
13189 stream->write((uint64_t*)&cgen_var_974, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013190 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013191 uint64_t cgen_var_975 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
13192 stream->putBe64(cgen_var_975);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013193 if (pQueueFamilyPropertyCount)
13194 {
13195 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
13196 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013197 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013198 uint64_t cgen_var_976 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
13199 stream->putBe64(cgen_var_976);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013200 if (pQueueFamilyProperties)
13201 {
13202 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
13203 {
13204 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
13205 }
13206 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013207 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013208 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013209 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013210 if (pQueueFamilyPropertyCount)
13211 {
13212 if (!(check_pQueueFamilyPropertyCount))
13213 {
13214 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
13215 }
13216 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
13217 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013218 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013219 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013220 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013221 if (pQueueFamilyProperties)
13222 {
13223 if (!(check_pQueueFamilyProperties))
13224 {
13225 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
13226 }
13227 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
13228 {
13229 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
13230 }
13231 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080013232 if (pQueueFamilyProperties)
13233 {
13234 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
13235 {
13236 transform_fromhost_VkQueueFamilyProperties2(mImpl->resources(), (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
13237 }
13238 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013239}
13240
13241void VkEncoder::vkGetPhysicalDeviceMemoryProperties2KHR(
13242 VkPhysicalDevice physicalDevice,
13243 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
13244{
13245 auto stream = mImpl->stream();
13246 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013247 auto resources = mImpl->resources();
13248 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013249 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013250 VkPhysicalDevice local_physicalDevice;
13251 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013252 countingStream->rewind();
13253 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013254 uint64_t cgen_var_979;
13255 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_979, 1);
13256 countingStream->write((uint64_t*)&cgen_var_979, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013257 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
13258 }
13259 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13260 countingStream->rewind();
13261 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2KHR = OP_vkGetPhysicalDeviceMemoryProperties2KHR;
13262 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
13263 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013264 uint64_t cgen_var_980;
13265 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_980, 1);
13266 stream->write((uint64_t*)&cgen_var_980, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013267 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
13268 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013269 if (pMemoryProperties)
13270 {
13271 transform_fromhost_VkPhysicalDeviceMemoryProperties2(mImpl->resources(), (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
13272 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013273}
13274
13275void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
13276 VkPhysicalDevice physicalDevice,
13277 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
13278 uint32_t* pPropertyCount,
13279 VkSparseImageFormatProperties2* pProperties)
13280{
13281 auto stream = mImpl->stream();
13282 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013283 auto resources = mImpl->resources();
13284 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013285 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013286 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013287 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013288 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013289 local_pFormatInfo = nullptr;
13290 if (pFormatInfo)
13291 {
13292 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
13293 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
13294 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013295 if (local_pFormatInfo)
13296 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013297 transform_tohost_VkPhysicalDeviceSparseImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013298 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013299 countingStream->rewind();
13300 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013301 uint64_t cgen_var_981;
13302 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_981, 1);
13303 countingStream->write((uint64_t*)&cgen_var_981, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013304 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013305 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013306 uint64_t cgen_var_982 = (uint64_t)(uintptr_t)pPropertyCount;
13307 countingStream->putBe64(cgen_var_982);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013308 if (pPropertyCount)
13309 {
13310 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
13311 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013312 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013313 uint64_t cgen_var_983 = (uint64_t)(uintptr_t)pProperties;
13314 countingStream->putBe64(cgen_var_983);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013315 if (pProperties)
13316 {
13317 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13318 {
13319 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
13320 }
13321 }
13322 }
13323 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13324 countingStream->rewind();
13325 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
13326 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
13327 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013328 uint64_t cgen_var_984;
13329 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_984, 1);
13330 stream->write((uint64_t*)&cgen_var_984, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013331 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013332 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013333 uint64_t cgen_var_985 = (uint64_t)(uintptr_t)pPropertyCount;
13334 stream->putBe64(cgen_var_985);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013335 if (pPropertyCount)
13336 {
13337 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
13338 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013339 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013340 uint64_t cgen_var_986 = (uint64_t)(uintptr_t)pProperties;
13341 stream->putBe64(cgen_var_986);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013342 if (pProperties)
13343 {
13344 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13345 {
13346 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
13347 }
13348 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013349 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013350 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013351 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013352 if (pPropertyCount)
13353 {
13354 if (!(check_pPropertyCount))
13355 {
13356 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
13357 }
13358 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
13359 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013360 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013361 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013362 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013363 if (pProperties)
13364 {
13365 if (!(check_pProperties))
13366 {
13367 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
13368 }
13369 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13370 {
13371 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
13372 }
13373 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080013374 if (pProperties)
13375 {
13376 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13377 {
13378 transform_fromhost_VkSparseImageFormatProperties2(mImpl->resources(), (VkSparseImageFormatProperties2*)(pProperties + i));
13379 }
13380 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013381}
13382
13383#endif
13384#ifdef VK_KHR_device_group
13385void VkEncoder::vkGetDeviceGroupPeerMemoryFeaturesKHR(
13386 VkDevice device,
13387 uint32_t heapIndex,
13388 uint32_t localDeviceIndex,
13389 uint32_t remoteDeviceIndex,
13390 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
13391{
13392 auto stream = mImpl->stream();
13393 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013394 auto resources = mImpl->resources();
13395 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013396 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013397 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013398 uint32_t local_heapIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013399 uint32_t local_localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013400 uint32_t local_remoteDeviceIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013401 local_device = device;
13402 local_heapIndex = heapIndex;
13403 local_localDeviceIndex = localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013404 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013405 countingStream->rewind();
13406 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013407 uint64_t cgen_var_989;
13408 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_989, 1);
13409 countingStream->write((uint64_t*)&cgen_var_989, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013410 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
13411 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
13412 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013413 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
13414 }
13415 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13416 countingStream->rewind();
13417 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR = OP_vkGetDeviceGroupPeerMemoryFeaturesKHR;
13418 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
13419 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013420 uint64_t cgen_var_990;
13421 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_990, 1);
13422 stream->write((uint64_t*)&cgen_var_990, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013423 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
13424 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
13425 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013426 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
13427 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
13428}
13429
13430void VkEncoder::vkCmdSetDeviceMaskKHR(
13431 VkCommandBuffer commandBuffer,
13432 uint32_t deviceMask)
13433{
13434 auto stream = mImpl->stream();
13435 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013436 auto resources = mImpl->resources();
13437 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013438 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013439 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013440 uint32_t local_deviceMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013441 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013442 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013443 countingStream->rewind();
13444 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013445 uint64_t cgen_var_991;
13446 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_991, 1);
13447 countingStream->write((uint64_t*)&cgen_var_991, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013448 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013449 }
13450 uint32_t packetSize_vkCmdSetDeviceMaskKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13451 countingStream->rewind();
13452 uint32_t opcode_vkCmdSetDeviceMaskKHR = OP_vkCmdSetDeviceMaskKHR;
13453 stream->write(&opcode_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
13454 stream->write(&packetSize_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013455 uint64_t cgen_var_992;
13456 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_992, 1);
13457 stream->write((uint64_t*)&cgen_var_992, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013458 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013459}
13460
13461void VkEncoder::vkCmdDispatchBaseKHR(
13462 VkCommandBuffer commandBuffer,
13463 uint32_t baseGroupX,
13464 uint32_t baseGroupY,
13465 uint32_t baseGroupZ,
13466 uint32_t groupCountX,
13467 uint32_t groupCountY,
13468 uint32_t groupCountZ)
13469{
13470 auto stream = mImpl->stream();
13471 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013472 auto resources = mImpl->resources();
13473 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013474 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013475 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013476 uint32_t local_baseGroupX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013477 uint32_t local_baseGroupY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013478 uint32_t local_baseGroupZ;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013479 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013480 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013481 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013482 local_commandBuffer = commandBuffer;
13483 local_baseGroupX = baseGroupX;
13484 local_baseGroupY = baseGroupY;
13485 local_baseGroupZ = baseGroupZ;
13486 local_groupCountX = groupCountX;
13487 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013488 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013489 countingStream->rewind();
13490 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013491 uint64_t cgen_var_993;
13492 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_993, 1);
13493 countingStream->write((uint64_t*)&cgen_var_993, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013494 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
13495 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
13496 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
13497 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
13498 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
13499 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013500 }
13501 uint32_t packetSize_vkCmdDispatchBaseKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13502 countingStream->rewind();
13503 uint32_t opcode_vkCmdDispatchBaseKHR = OP_vkCmdDispatchBaseKHR;
13504 stream->write(&opcode_vkCmdDispatchBaseKHR, sizeof(uint32_t));
13505 stream->write(&packetSize_vkCmdDispatchBaseKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013506 uint64_t cgen_var_994;
13507 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_994, 1);
13508 stream->write((uint64_t*)&cgen_var_994, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013509 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
13510 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
13511 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
13512 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
13513 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
13514 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013515}
13516
13517#endif
13518#ifdef VK_KHR_shader_draw_parameters
13519#endif
13520#ifdef VK_KHR_maintenance1
13521void VkEncoder::vkTrimCommandPoolKHR(
13522 VkDevice device,
13523 VkCommandPool commandPool,
13524 VkCommandPoolTrimFlags flags)
13525{
13526 auto stream = mImpl->stream();
13527 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013528 auto resources = mImpl->resources();
13529 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013530 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013531 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013532 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013533 VkCommandPoolTrimFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013534 local_device = device;
13535 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013536 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013537 countingStream->rewind();
13538 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013539 uint64_t cgen_var_995;
13540 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_995, 1);
13541 countingStream->write((uint64_t*)&cgen_var_995, 1 * 8);
13542 uint64_t cgen_var_996;
13543 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_996, 1);
13544 countingStream->write((uint64_t*)&cgen_var_996, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013545 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013546 }
13547 uint32_t packetSize_vkTrimCommandPoolKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13548 countingStream->rewind();
13549 uint32_t opcode_vkTrimCommandPoolKHR = OP_vkTrimCommandPoolKHR;
13550 stream->write(&opcode_vkTrimCommandPoolKHR, sizeof(uint32_t));
13551 stream->write(&packetSize_vkTrimCommandPoolKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013552 uint64_t cgen_var_997;
13553 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_997, 1);
13554 stream->write((uint64_t*)&cgen_var_997, 1 * 8);
13555 uint64_t cgen_var_998;
13556 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_998, 1);
13557 stream->write((uint64_t*)&cgen_var_998, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013558 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013559}
13560
13561#endif
13562#ifdef VK_KHR_device_group_creation
13563VkResult VkEncoder::vkEnumeratePhysicalDeviceGroupsKHR(
13564 VkInstance instance,
13565 uint32_t* pPhysicalDeviceGroupCount,
13566 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
13567{
13568 auto stream = mImpl->stream();
13569 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013570 auto resources = mImpl->resources();
13571 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013572 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013573 VkInstance local_instance;
13574 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013575 countingStream->rewind();
13576 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013577 uint64_t cgen_var_999;
13578 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_999, 1);
13579 countingStream->write((uint64_t*)&cgen_var_999, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013580 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013581 uint64_t cgen_var_1000 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
13582 countingStream->putBe64(cgen_var_1000);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013583 if (pPhysicalDeviceGroupCount)
13584 {
13585 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
13586 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013587 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013588 uint64_t cgen_var_1001 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
13589 countingStream->putBe64(cgen_var_1001);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013590 if (pPhysicalDeviceGroupProperties)
13591 {
13592 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
13593 {
13594 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
13595 }
13596 }
13597 }
13598 uint32_t packetSize_vkEnumeratePhysicalDeviceGroupsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13599 countingStream->rewind();
13600 uint32_t opcode_vkEnumeratePhysicalDeviceGroupsKHR = OP_vkEnumeratePhysicalDeviceGroupsKHR;
13601 stream->write(&opcode_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
13602 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013603 uint64_t cgen_var_1002;
13604 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1002, 1);
13605 stream->write((uint64_t*)&cgen_var_1002, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013606 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013607 uint64_t cgen_var_1003 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
13608 stream->putBe64(cgen_var_1003);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013609 if (pPhysicalDeviceGroupCount)
13610 {
13611 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
13612 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013613 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013614 uint64_t cgen_var_1004 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
13615 stream->putBe64(cgen_var_1004);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013616 if (pPhysicalDeviceGroupProperties)
13617 {
13618 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
13619 {
13620 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
13621 }
13622 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013623 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013624 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013625 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013626 if (pPhysicalDeviceGroupCount)
13627 {
13628 if (!(check_pPhysicalDeviceGroupCount))
13629 {
13630 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
13631 }
13632 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
13633 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013634 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013635 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013636 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013637 if (pPhysicalDeviceGroupProperties)
13638 {
13639 if (!(check_pPhysicalDeviceGroupProperties))
13640 {
13641 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
13642 }
13643 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
13644 {
13645 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
13646 }
13647 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080013648 if (pPhysicalDeviceGroupProperties)
13649 {
13650 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
13651 {
13652 transform_fromhost_VkPhysicalDeviceGroupProperties(mImpl->resources(), (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
13653 }
13654 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013655 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
13656 stream->read(&vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013657 countingStream->clearPool();
13658 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013659 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013660 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
13661}
13662
13663#endif
13664#ifdef VK_KHR_external_memory_capabilities
13665void VkEncoder::vkGetPhysicalDeviceExternalBufferPropertiesKHR(
13666 VkPhysicalDevice physicalDevice,
13667 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
13668 VkExternalBufferProperties* pExternalBufferProperties)
13669{
13670 auto stream = mImpl->stream();
13671 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013672 auto resources = mImpl->resources();
13673 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013674 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013675 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013676 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013677 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013678 local_pExternalBufferInfo = nullptr;
13679 if (pExternalBufferInfo)
13680 {
13681 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
13682 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
13683 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013684 if (local_pExternalBufferInfo)
13685 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013686 transform_tohost_VkPhysicalDeviceExternalBufferInfo(mImpl->resources(), (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013687 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013688 countingStream->rewind();
13689 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013690 uint64_t cgen_var_1007;
13691 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1007, 1);
13692 countingStream->write((uint64_t*)&cgen_var_1007, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013693 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013694 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
13695 }
13696 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13697 countingStream->rewind();
13698 uint32_t opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR = OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR;
13699 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
13700 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013701 uint64_t cgen_var_1008;
13702 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1008, 1);
13703 stream->write((uint64_t*)&cgen_var_1008, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013704 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013705 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
13706 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013707 if (pExternalBufferProperties)
13708 {
13709 transform_fromhost_VkExternalBufferProperties(mImpl->resources(), (VkExternalBufferProperties*)(pExternalBufferProperties));
13710 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013711}
13712
13713#endif
13714#ifdef VK_KHR_external_memory
13715#endif
13716#ifdef VK_KHR_external_memory_win32
13717VkResult VkEncoder::vkGetMemoryWin32HandleKHR(
13718 VkDevice device,
13719 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
13720 HANDLE* pHandle)
13721{
13722 auto stream = mImpl->stream();
13723 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013724 auto resources = mImpl->resources();
13725 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013726 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013727 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013728 VkMemoryGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013729 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013730 local_pGetWin32HandleInfo = nullptr;
13731 if (pGetWin32HandleInfo)
13732 {
13733 local_pGetWin32HandleInfo = (VkMemoryGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkMemoryGetWin32HandleInfoKHR));
13734 deepcopy_VkMemoryGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
13735 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013736 if (local_pGetWin32HandleInfo)
13737 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013738 transform_tohost_VkMemoryGetWin32HandleInfoKHR(mImpl->resources(), (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013739 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013740 countingStream->rewind();
13741 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013742 uint64_t cgen_var_1009;
13743 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1009, 1);
13744 countingStream->write((uint64_t*)&cgen_var_1009, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013745 marshal_VkMemoryGetWin32HandleInfoKHR(countingStream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013746 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
13747 }
13748 uint32_t packetSize_vkGetMemoryWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13749 countingStream->rewind();
13750 uint32_t opcode_vkGetMemoryWin32HandleKHR = OP_vkGetMemoryWin32HandleKHR;
13751 stream->write(&opcode_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
13752 stream->write(&packetSize_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013753 uint64_t cgen_var_1010;
13754 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1010, 1);
13755 stream->write((uint64_t*)&cgen_var_1010, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013756 marshal_VkMemoryGetWin32HandleInfoKHR(stream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013757 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
13758 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
13759 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
13760 stream->read(&vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013761 countingStream->clearPool();
13762 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013763 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013764 return vkGetMemoryWin32HandleKHR_VkResult_return;
13765}
13766
13767VkResult VkEncoder::vkGetMemoryWin32HandlePropertiesKHR(
13768 VkDevice device,
13769 VkExternalMemoryHandleTypeFlagBits handleType,
13770 HANDLE handle,
13771 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
13772{
13773 auto stream = mImpl->stream();
13774 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013775 auto resources = mImpl->resources();
13776 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013777 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013778 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013779 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013780 HANDLE local_handle;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013781 local_device = device;
13782 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013783 local_handle = handle;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013784 countingStream->rewind();
13785 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013786 uint64_t cgen_var_1011;
13787 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1011, 1);
13788 countingStream->write((uint64_t*)&cgen_var_1011, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013789 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
13790 countingStream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013791 marshal_VkMemoryWin32HandlePropertiesKHR(countingStream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
13792 }
13793 uint32_t packetSize_vkGetMemoryWin32HandlePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13794 countingStream->rewind();
13795 uint32_t opcode_vkGetMemoryWin32HandlePropertiesKHR = OP_vkGetMemoryWin32HandlePropertiesKHR;
13796 stream->write(&opcode_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
13797 stream->write(&packetSize_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013798 uint64_t cgen_var_1012;
13799 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1012, 1);
13800 stream->write((uint64_t*)&cgen_var_1012, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013801 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
13802 stream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013803 marshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
13804 unmarshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013805 if (pMemoryWin32HandleProperties)
13806 {
13807 transform_fromhost_VkMemoryWin32HandlePropertiesKHR(mImpl->resources(), (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
13808 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013809 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
13810 stream->read(&vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013811 countingStream->clearPool();
13812 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013813 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013814 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
13815}
13816
13817#endif
13818#ifdef VK_KHR_external_memory_fd
13819VkResult VkEncoder::vkGetMemoryFdKHR(
13820 VkDevice device,
13821 const VkMemoryGetFdInfoKHR* pGetFdInfo,
13822 int* pFd)
13823{
13824 auto stream = mImpl->stream();
13825 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013826 auto resources = mImpl->resources();
13827 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013828 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013829 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013830 VkMemoryGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013831 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013832 local_pGetFdInfo = nullptr;
13833 if (pGetFdInfo)
13834 {
13835 local_pGetFdInfo = (VkMemoryGetFdInfoKHR*)pool->alloc(sizeof(const VkMemoryGetFdInfoKHR));
13836 deepcopy_VkMemoryGetFdInfoKHR(pool, pGetFdInfo, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
13837 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013838 if (local_pGetFdInfo)
13839 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013840 transform_tohost_VkMemoryGetFdInfoKHR(mImpl->resources(), (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013841 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013842 countingStream->rewind();
13843 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013844 uint64_t cgen_var_1013;
13845 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1013, 1);
13846 countingStream->write((uint64_t*)&cgen_var_1013, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013847 marshal_VkMemoryGetFdInfoKHR(countingStream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013848 countingStream->write((int*)pFd, sizeof(int));
13849 }
13850 uint32_t packetSize_vkGetMemoryFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13851 countingStream->rewind();
13852 uint32_t opcode_vkGetMemoryFdKHR = OP_vkGetMemoryFdKHR;
13853 stream->write(&opcode_vkGetMemoryFdKHR, sizeof(uint32_t));
13854 stream->write(&packetSize_vkGetMemoryFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013855 uint64_t cgen_var_1014;
13856 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1014, 1);
13857 stream->write((uint64_t*)&cgen_var_1014, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013858 marshal_VkMemoryGetFdInfoKHR(stream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013859 stream->write((int*)pFd, sizeof(int));
13860 stream->read((int*)pFd, sizeof(int));
13861 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
13862 stream->read(&vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013863 countingStream->clearPool();
13864 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013865 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013866 return vkGetMemoryFdKHR_VkResult_return;
13867}
13868
13869VkResult VkEncoder::vkGetMemoryFdPropertiesKHR(
13870 VkDevice device,
13871 VkExternalMemoryHandleTypeFlagBits handleType,
13872 int fd,
13873 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
13874{
13875 auto stream = mImpl->stream();
13876 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013877 auto resources = mImpl->resources();
13878 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013879 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013880 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013881 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013882 int local_fd;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013883 local_device = device;
13884 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013885 local_fd = fd;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013886 countingStream->rewind();
13887 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013888 uint64_t cgen_var_1015;
13889 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1015, 1);
13890 countingStream->write((uint64_t*)&cgen_var_1015, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013891 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
13892 countingStream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013893 marshal_VkMemoryFdPropertiesKHR(countingStream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
13894 }
13895 uint32_t packetSize_vkGetMemoryFdPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13896 countingStream->rewind();
13897 uint32_t opcode_vkGetMemoryFdPropertiesKHR = OP_vkGetMemoryFdPropertiesKHR;
13898 stream->write(&opcode_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
13899 stream->write(&packetSize_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013900 uint64_t cgen_var_1016;
13901 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1016, 1);
13902 stream->write((uint64_t*)&cgen_var_1016, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013903 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
13904 stream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013905 marshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
13906 unmarshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013907 if (pMemoryFdProperties)
13908 {
13909 transform_fromhost_VkMemoryFdPropertiesKHR(mImpl->resources(), (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
13910 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013911 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
13912 stream->read(&vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013913 countingStream->clearPool();
13914 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013915 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013916 return vkGetMemoryFdPropertiesKHR_VkResult_return;
13917}
13918
13919#endif
13920#ifdef VK_KHR_win32_keyed_mutex
13921#endif
13922#ifdef VK_KHR_external_semaphore_capabilities
13923void VkEncoder::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
13924 VkPhysicalDevice physicalDevice,
13925 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
13926 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
13927{
13928 auto stream = mImpl->stream();
13929 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013930 auto resources = mImpl->resources();
13931 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013932 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013933 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013934 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013935 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013936 local_pExternalSemaphoreInfo = nullptr;
13937 if (pExternalSemaphoreInfo)
13938 {
13939 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
13940 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
13941 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013942 if (local_pExternalSemaphoreInfo)
13943 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013944 transform_tohost_VkPhysicalDeviceExternalSemaphoreInfo(mImpl->resources(), (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013945 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013946 countingStream->rewind();
13947 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013948 uint64_t cgen_var_1017;
13949 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1017, 1);
13950 countingStream->write((uint64_t*)&cgen_var_1017, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013951 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013952 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13953 }
13954 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13955 countingStream->rewind();
13956 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
13957 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
13958 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013959 uint64_t cgen_var_1018;
13960 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1018, 1);
13961 stream->write((uint64_t*)&cgen_var_1018, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013962 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013963 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13964 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013965 if (pExternalSemaphoreProperties)
13966 {
13967 transform_fromhost_VkExternalSemaphoreProperties(mImpl->resources(), (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13968 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013969}
13970
13971#endif
13972#ifdef VK_KHR_external_semaphore
13973#endif
13974#ifdef VK_KHR_external_semaphore_win32
13975VkResult VkEncoder::vkImportSemaphoreWin32HandleKHR(
13976 VkDevice device,
13977 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
13978{
13979 auto stream = mImpl->stream();
13980 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013981 auto resources = mImpl->resources();
13982 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013983 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013984 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013985 VkImportSemaphoreWin32HandleInfoKHR* local_pImportSemaphoreWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013986 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013987 local_pImportSemaphoreWin32HandleInfo = nullptr;
13988 if (pImportSemaphoreWin32HandleInfo)
13989 {
13990 local_pImportSemaphoreWin32HandleInfo = (VkImportSemaphoreWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreWin32HandleInfoKHR));
13991 deepcopy_VkImportSemaphoreWin32HandleInfoKHR(pool, pImportSemaphoreWin32HandleInfo, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
13992 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013993 if (local_pImportSemaphoreWin32HandleInfo)
13994 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013995 transform_tohost_VkImportSemaphoreWin32HandleInfoKHR(mImpl->resources(), (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013996 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013997 countingStream->rewind();
13998 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013999 uint64_t cgen_var_1019;
14000 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1019, 1);
14001 countingStream->write((uint64_t*)&cgen_var_1019, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014002 marshal_VkImportSemaphoreWin32HandleInfoKHR(countingStream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014003 }
14004 uint32_t packetSize_vkImportSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14005 countingStream->rewind();
14006 uint32_t opcode_vkImportSemaphoreWin32HandleKHR = OP_vkImportSemaphoreWin32HandleKHR;
14007 stream->write(&opcode_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
14008 stream->write(&packetSize_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014009 uint64_t cgen_var_1020;
14010 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1020, 1);
14011 stream->write((uint64_t*)&cgen_var_1020, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014012 marshal_VkImportSemaphoreWin32HandleInfoKHR(stream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014013 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
14014 stream->read(&vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014015 countingStream->clearPool();
14016 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014017 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014018 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
14019}
14020
14021VkResult VkEncoder::vkGetSemaphoreWin32HandleKHR(
14022 VkDevice device,
14023 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
14024 HANDLE* pHandle)
14025{
14026 auto stream = mImpl->stream();
14027 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014028 auto resources = mImpl->resources();
14029 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014030 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014031 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014032 VkSemaphoreGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014033 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014034 local_pGetWin32HandleInfo = nullptr;
14035 if (pGetWin32HandleInfo)
14036 {
14037 local_pGetWin32HandleInfo = (VkSemaphoreGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetWin32HandleInfoKHR));
14038 deepcopy_VkSemaphoreGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
14039 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014040 if (local_pGetWin32HandleInfo)
14041 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014042 transform_tohost_VkSemaphoreGetWin32HandleInfoKHR(mImpl->resources(), (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014043 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014044 countingStream->rewind();
14045 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014046 uint64_t cgen_var_1021;
14047 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1021, 1);
14048 countingStream->write((uint64_t*)&cgen_var_1021, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014049 marshal_VkSemaphoreGetWin32HandleInfoKHR(countingStream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014050 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
14051 }
14052 uint32_t packetSize_vkGetSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14053 countingStream->rewind();
14054 uint32_t opcode_vkGetSemaphoreWin32HandleKHR = OP_vkGetSemaphoreWin32HandleKHR;
14055 stream->write(&opcode_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
14056 stream->write(&packetSize_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014057 uint64_t cgen_var_1022;
14058 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1022, 1);
14059 stream->write((uint64_t*)&cgen_var_1022, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014060 marshal_VkSemaphoreGetWin32HandleInfoKHR(stream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014061 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
14062 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
14063 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
14064 stream->read(&vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014065 countingStream->clearPool();
14066 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014067 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014068 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
14069}
14070
14071#endif
14072#ifdef VK_KHR_external_semaphore_fd
14073VkResult VkEncoder::vkImportSemaphoreFdKHR(
14074 VkDevice device,
14075 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
14076{
14077 auto stream = mImpl->stream();
14078 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014079 auto resources = mImpl->resources();
14080 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014081 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014082 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014083 VkImportSemaphoreFdInfoKHR* local_pImportSemaphoreFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014084 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014085 local_pImportSemaphoreFdInfo = nullptr;
14086 if (pImportSemaphoreFdInfo)
14087 {
14088 local_pImportSemaphoreFdInfo = (VkImportSemaphoreFdInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreFdInfoKHR));
14089 deepcopy_VkImportSemaphoreFdInfoKHR(pool, pImportSemaphoreFdInfo, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
14090 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014091 if (local_pImportSemaphoreFdInfo)
14092 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014093 transform_tohost_VkImportSemaphoreFdInfoKHR(mImpl->resources(), (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014094 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014095 countingStream->rewind();
14096 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014097 uint64_t cgen_var_1023;
14098 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1023, 1);
14099 countingStream->write((uint64_t*)&cgen_var_1023, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014100 marshal_VkImportSemaphoreFdInfoKHR(countingStream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014101 }
14102 uint32_t packetSize_vkImportSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14103 countingStream->rewind();
14104 uint32_t opcode_vkImportSemaphoreFdKHR = OP_vkImportSemaphoreFdKHR;
14105 stream->write(&opcode_vkImportSemaphoreFdKHR, sizeof(uint32_t));
14106 stream->write(&packetSize_vkImportSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014107 uint64_t cgen_var_1024;
14108 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1024, 1);
14109 stream->write((uint64_t*)&cgen_var_1024, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014110 marshal_VkImportSemaphoreFdInfoKHR(stream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014111 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
14112 stream->read(&vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014113 countingStream->clearPool();
14114 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014115 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014116 return vkImportSemaphoreFdKHR_VkResult_return;
14117}
14118
14119VkResult VkEncoder::vkGetSemaphoreFdKHR(
14120 VkDevice device,
14121 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
14122 int* pFd)
14123{
14124 auto stream = mImpl->stream();
14125 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014126 auto resources = mImpl->resources();
14127 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014128 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014129 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014130 VkSemaphoreGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014131 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014132 local_pGetFdInfo = nullptr;
14133 if (pGetFdInfo)
14134 {
14135 local_pGetFdInfo = (VkSemaphoreGetFdInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetFdInfoKHR));
14136 deepcopy_VkSemaphoreGetFdInfoKHR(pool, pGetFdInfo, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
14137 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014138 if (local_pGetFdInfo)
14139 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014140 transform_tohost_VkSemaphoreGetFdInfoKHR(mImpl->resources(), (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014141 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014142 countingStream->rewind();
14143 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014144 uint64_t cgen_var_1025;
14145 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1025, 1);
14146 countingStream->write((uint64_t*)&cgen_var_1025, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014147 marshal_VkSemaphoreGetFdInfoKHR(countingStream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014148 countingStream->write((int*)pFd, sizeof(int));
14149 }
14150 uint32_t packetSize_vkGetSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14151 countingStream->rewind();
14152 uint32_t opcode_vkGetSemaphoreFdKHR = OP_vkGetSemaphoreFdKHR;
14153 stream->write(&opcode_vkGetSemaphoreFdKHR, sizeof(uint32_t));
14154 stream->write(&packetSize_vkGetSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014155 uint64_t cgen_var_1026;
14156 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1026, 1);
14157 stream->write((uint64_t*)&cgen_var_1026, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014158 marshal_VkSemaphoreGetFdInfoKHR(stream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014159 stream->write((int*)pFd, sizeof(int));
14160 stream->read((int*)pFd, sizeof(int));
14161 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
14162 stream->read(&vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014163 countingStream->clearPool();
14164 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014165 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014166 return vkGetSemaphoreFdKHR_VkResult_return;
14167}
14168
14169#endif
14170#ifdef VK_KHR_push_descriptor
14171void VkEncoder::vkCmdPushDescriptorSetKHR(
14172 VkCommandBuffer commandBuffer,
14173 VkPipelineBindPoint pipelineBindPoint,
14174 VkPipelineLayout layout,
14175 uint32_t set,
14176 uint32_t descriptorWriteCount,
14177 const VkWriteDescriptorSet* pDescriptorWrites)
14178{
14179 auto stream = mImpl->stream();
14180 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014181 auto resources = mImpl->resources();
14182 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014183 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014184 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014185 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014186 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014187 uint32_t local_set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014188 uint32_t local_descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014189 VkWriteDescriptorSet* local_pDescriptorWrites;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014190 local_commandBuffer = commandBuffer;
14191 local_pipelineBindPoint = pipelineBindPoint;
14192 local_layout = layout;
14193 local_set = set;
14194 local_descriptorWriteCount = descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014195 local_pDescriptorWrites = nullptr;
14196 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014197 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014198 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014199 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
14200 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014201 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
14202 }
14203 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014204 if (local_pDescriptorWrites)
14205 {
14206 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
14207 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014208 transform_tohost_VkWriteDescriptorSet(mImpl->resources(), (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014209 }
14210 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014211 countingStream->rewind();
14212 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014213 uint64_t cgen_var_1027;
14214 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1027, 1);
14215 countingStream->write((uint64_t*)&cgen_var_1027, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014216 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014217 uint64_t cgen_var_1028;
14218 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1028, 1);
14219 countingStream->write((uint64_t*)&cgen_var_1028, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014220 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
14221 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
14222 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
14223 {
14224 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014225 }
14226 }
14227 uint32_t packetSize_vkCmdPushDescriptorSetKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14228 countingStream->rewind();
14229 uint32_t opcode_vkCmdPushDescriptorSetKHR = OP_vkCmdPushDescriptorSetKHR;
14230 stream->write(&opcode_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
14231 stream->write(&packetSize_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014232 uint64_t cgen_var_1029;
14233 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1029, 1);
14234 stream->write((uint64_t*)&cgen_var_1029, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014235 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014236 uint64_t cgen_var_1030;
14237 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1030, 1);
14238 stream->write((uint64_t*)&cgen_var_1030, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014239 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
14240 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014241 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
14242 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014243 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014244 }
14245}
14246
14247void VkEncoder::vkCmdPushDescriptorSetWithTemplateKHR(
14248 VkCommandBuffer commandBuffer,
14249 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
14250 VkPipelineLayout layout,
14251 uint32_t set,
14252 const void* pData)
14253{
14254 auto stream = mImpl->stream();
14255 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014256 auto resources = mImpl->resources();
14257 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014258 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014259 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014260 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014261 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014262 uint32_t local_set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014263 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014264 local_commandBuffer = commandBuffer;
14265 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
14266 local_layout = layout;
14267 local_set = set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014268 local_pData = nullptr;
14269 if (pData)
14270 {
14271 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
14272 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014273 countingStream->rewind();
14274 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014275 uint64_t cgen_var_1031;
14276 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1031, 1);
14277 countingStream->write((uint64_t*)&cgen_var_1031, 1 * 8);
14278 uint64_t cgen_var_1032;
14279 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1032, 1);
14280 countingStream->write((uint64_t*)&cgen_var_1032, 1 * 8);
14281 uint64_t cgen_var_1033;
14282 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1033, 1);
14283 countingStream->write((uint64_t*)&cgen_var_1033, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014284 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014285 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014286 uint64_t cgen_var_1034 = (uint64_t)(uintptr_t)local_pData;
14287 countingStream->putBe64(cgen_var_1034);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014288 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014289 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014290 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014291 }
14292 }
14293 uint32_t packetSize_vkCmdPushDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14294 countingStream->rewind();
14295 uint32_t opcode_vkCmdPushDescriptorSetWithTemplateKHR = OP_vkCmdPushDescriptorSetWithTemplateKHR;
14296 stream->write(&opcode_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
14297 stream->write(&packetSize_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014298 uint64_t cgen_var_1035;
14299 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1035, 1);
14300 stream->write((uint64_t*)&cgen_var_1035, 1 * 8);
14301 uint64_t cgen_var_1036;
14302 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1036, 1);
14303 stream->write((uint64_t*)&cgen_var_1036, 1 * 8);
14304 uint64_t cgen_var_1037;
14305 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1037, 1);
14306 stream->write((uint64_t*)&cgen_var_1037, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014307 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014308 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014309 uint64_t cgen_var_1038 = (uint64_t)(uintptr_t)local_pData;
14310 stream->putBe64(cgen_var_1038);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014311 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014312 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014313 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014314 }
14315}
14316
14317#endif
14318#ifdef VK_KHR_16bit_storage
14319#endif
14320#ifdef VK_KHR_incremental_present
14321#endif
14322#ifdef VK_KHR_descriptor_update_template
14323VkResult VkEncoder::vkCreateDescriptorUpdateTemplateKHR(
14324 VkDevice device,
14325 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
14326 const VkAllocationCallbacks* pAllocator,
14327 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
14328{
14329 auto stream = mImpl->stream();
14330 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014331 auto resources = mImpl->resources();
14332 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014333 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014334 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014335 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014336 VkAllocationCallbacks* local_pAllocator;
14337 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014338 local_pCreateInfo = nullptr;
14339 if (pCreateInfo)
14340 {
14341 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
14342 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
14343 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014344 local_pAllocator = nullptr;
14345 if (pAllocator)
14346 {
14347 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14348 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14349 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014350 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080014351 if (local_pCreateInfo)
14352 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014353 transform_tohost_VkDescriptorUpdateTemplateCreateInfo(mImpl->resources(), (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014354 }
14355 if (local_pAllocator)
14356 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014357 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014358 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014359 countingStream->rewind();
14360 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014361 uint64_t cgen_var_1039;
14362 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1039, 1);
14363 countingStream->write((uint64_t*)&cgen_var_1039, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014364 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014365 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014366 uint64_t cgen_var_1040 = (uint64_t)(uintptr_t)local_pAllocator;
14367 countingStream->putBe64(cgen_var_1040);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014368 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014369 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014370 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014371 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014372 uint64_t cgen_var_1041;
14373 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1041, 1);
14374 countingStream->write((uint64_t*)&cgen_var_1041, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014375 }
14376 uint32_t packetSize_vkCreateDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14377 countingStream->rewind();
14378 uint32_t opcode_vkCreateDescriptorUpdateTemplateKHR = OP_vkCreateDescriptorUpdateTemplateKHR;
14379 stream->write(&opcode_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
14380 stream->write(&packetSize_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014381 uint64_t cgen_var_1042;
14382 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1042, 1);
14383 stream->write((uint64_t*)&cgen_var_1042, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014384 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014385 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014386 uint64_t cgen_var_1043 = (uint64_t)(uintptr_t)local_pAllocator;
14387 stream->putBe64(cgen_var_1043);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014388 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014389 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014390 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014391 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080014392 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014393 uint64_t cgen_var_1044;
14394 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1044, 1);
14395 stream->write((uint64_t*)&cgen_var_1044, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080014396 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014397 uint64_t cgen_var_1045;
14398 stream->read((uint64_t*)&cgen_var_1045, 8);
14399 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_1045, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014400 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
14401 stream->read(&vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014402 countingStream->clearPool();
14403 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014404 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014405 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
14406}
14407
14408void VkEncoder::vkDestroyDescriptorUpdateTemplateKHR(
14409 VkDevice device,
14410 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
14411 const VkAllocationCallbacks* pAllocator)
14412{
14413 auto stream = mImpl->stream();
14414 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014415 auto resources = mImpl->resources();
14416 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014417 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014418 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014419 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014420 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014421 local_device = device;
14422 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014423 local_pAllocator = nullptr;
14424 if (pAllocator)
14425 {
14426 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14427 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14428 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014429 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080014430 if (local_pAllocator)
14431 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014432 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014433 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014434 countingStream->rewind();
14435 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014436 uint64_t cgen_var_1046;
14437 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1046, 1);
14438 countingStream->write((uint64_t*)&cgen_var_1046, 1 * 8);
14439 uint64_t cgen_var_1047;
14440 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1047, 1);
14441 countingStream->write((uint64_t*)&cgen_var_1047, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014442 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014443 uint64_t cgen_var_1048 = (uint64_t)(uintptr_t)local_pAllocator;
14444 countingStream->putBe64(cgen_var_1048);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014445 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014446 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014447 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014448 }
14449 }
14450 uint32_t packetSize_vkDestroyDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14451 countingStream->rewind();
14452 uint32_t opcode_vkDestroyDescriptorUpdateTemplateKHR = OP_vkDestroyDescriptorUpdateTemplateKHR;
14453 stream->write(&opcode_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
14454 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014455 uint64_t cgen_var_1049;
14456 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1049, 1);
14457 stream->write((uint64_t*)&cgen_var_1049, 1 * 8);
14458 uint64_t cgen_var_1050;
14459 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1050, 1);
14460 stream->write((uint64_t*)&cgen_var_1050, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014461 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014462 uint64_t cgen_var_1051 = (uint64_t)(uintptr_t)local_pAllocator;
14463 stream->putBe64(cgen_var_1051);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014464 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014465 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014466 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014467 }
14468}
14469
14470void VkEncoder::vkUpdateDescriptorSetWithTemplateKHR(
14471 VkDevice device,
14472 VkDescriptorSet descriptorSet,
14473 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
14474 const void* pData)
14475{
14476 auto stream = mImpl->stream();
14477 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014478 auto resources = mImpl->resources();
14479 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014480 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014481 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014482 VkDescriptorSet local_descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014483 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014484 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014485 local_device = device;
14486 local_descriptorSet = descriptorSet;
14487 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014488 local_pData = nullptr;
14489 if (pData)
14490 {
14491 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
14492 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014493 countingStream->rewind();
14494 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014495 uint64_t cgen_var_1052;
14496 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1052, 1);
14497 countingStream->write((uint64_t*)&cgen_var_1052, 1 * 8);
14498 uint64_t cgen_var_1053;
14499 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1053, 1);
14500 countingStream->write((uint64_t*)&cgen_var_1053, 1 * 8);
14501 uint64_t cgen_var_1054;
14502 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1054, 1);
14503 countingStream->write((uint64_t*)&cgen_var_1054, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014504 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014505 uint64_t cgen_var_1055 = (uint64_t)(uintptr_t)local_pData;
14506 countingStream->putBe64(cgen_var_1055);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014507 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014508 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014509 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014510 }
14511 }
14512 uint32_t packetSize_vkUpdateDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14513 countingStream->rewind();
14514 uint32_t opcode_vkUpdateDescriptorSetWithTemplateKHR = OP_vkUpdateDescriptorSetWithTemplateKHR;
14515 stream->write(&opcode_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
14516 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014517 uint64_t cgen_var_1056;
14518 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1056, 1);
14519 stream->write((uint64_t*)&cgen_var_1056, 1 * 8);
14520 uint64_t cgen_var_1057;
14521 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1057, 1);
14522 stream->write((uint64_t*)&cgen_var_1057, 1 * 8);
14523 uint64_t cgen_var_1058;
14524 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1058, 1);
14525 stream->write((uint64_t*)&cgen_var_1058, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014526 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014527 uint64_t cgen_var_1059 = (uint64_t)(uintptr_t)local_pData;
14528 stream->putBe64(cgen_var_1059);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014529 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014530 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014531 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014532 }
14533}
14534
14535#endif
14536#ifdef VK_KHR_create_renderpass2
14537VkResult VkEncoder::vkCreateRenderPass2KHR(
14538 VkDevice device,
14539 const VkRenderPassCreateInfo2KHR* pCreateInfo,
14540 const VkAllocationCallbacks* pAllocator,
14541 VkRenderPass* pRenderPass)
14542{
14543 auto stream = mImpl->stream();
14544 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014545 auto resources = mImpl->resources();
14546 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014547 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014548 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014549 VkRenderPassCreateInfo2KHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014550 VkAllocationCallbacks* local_pAllocator;
14551 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014552 local_pCreateInfo = nullptr;
14553 if (pCreateInfo)
14554 {
14555 local_pCreateInfo = (VkRenderPassCreateInfo2KHR*)pool->alloc(sizeof(const VkRenderPassCreateInfo2KHR));
14556 deepcopy_VkRenderPassCreateInfo2KHR(pool, pCreateInfo, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
14557 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014558 local_pAllocator = nullptr;
14559 if (pAllocator)
14560 {
14561 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14562 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14563 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014564 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080014565 if (local_pCreateInfo)
14566 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014567 transform_tohost_VkRenderPassCreateInfo2KHR(mImpl->resources(), (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014568 }
14569 if (local_pAllocator)
14570 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014571 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014572 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014573 countingStream->rewind();
14574 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014575 uint64_t cgen_var_1060;
14576 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1060, 1);
14577 countingStream->write((uint64_t*)&cgen_var_1060, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014578 marshal_VkRenderPassCreateInfo2KHR(countingStream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014579 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014580 uint64_t cgen_var_1061 = (uint64_t)(uintptr_t)local_pAllocator;
14581 countingStream->putBe64(cgen_var_1061);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014582 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014583 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014584 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014585 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014586 uint64_t cgen_var_1062;
14587 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1062, 1);
14588 countingStream->write((uint64_t*)&cgen_var_1062, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014589 }
14590 uint32_t packetSize_vkCreateRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14591 countingStream->rewind();
14592 uint32_t opcode_vkCreateRenderPass2KHR = OP_vkCreateRenderPass2KHR;
14593 stream->write(&opcode_vkCreateRenderPass2KHR, sizeof(uint32_t));
14594 stream->write(&packetSize_vkCreateRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014595 uint64_t cgen_var_1063;
14596 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1063, 1);
14597 stream->write((uint64_t*)&cgen_var_1063, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014598 marshal_VkRenderPassCreateInfo2KHR(stream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014599 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014600 uint64_t cgen_var_1064 = (uint64_t)(uintptr_t)local_pAllocator;
14601 stream->putBe64(cgen_var_1064);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014602 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014603 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014604 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014605 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080014606 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014607 uint64_t cgen_var_1065;
14608 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1065, 1);
14609 stream->write((uint64_t*)&cgen_var_1065, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080014610 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014611 uint64_t cgen_var_1066;
14612 stream->read((uint64_t*)&cgen_var_1066, 8);
14613 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_1066, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014614 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
14615 stream->read(&vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014616 countingStream->clearPool();
14617 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014618 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014619 return vkCreateRenderPass2KHR_VkResult_return;
14620}
14621
14622void VkEncoder::vkCmdBeginRenderPass2KHR(
14623 VkCommandBuffer commandBuffer,
14624 const VkRenderPassBeginInfo* pRenderPassBegin,
14625 const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
14626{
14627 auto stream = mImpl->stream();
14628 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014629 auto resources = mImpl->resources();
14630 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014631 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014632 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014633 VkRenderPassBeginInfo* local_pRenderPassBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014634 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
14635 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014636 local_pRenderPassBegin = nullptr;
14637 if (pRenderPassBegin)
14638 {
14639 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
14640 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
14641 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014642 local_pSubpassBeginInfo = nullptr;
14643 if (pSubpassBeginInfo)
14644 {
14645 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
14646 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
14647 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014648 if (local_pRenderPassBegin)
14649 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014650 transform_tohost_VkRenderPassBeginInfo(mImpl->resources(), (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014651 }
14652 if (local_pSubpassBeginInfo)
14653 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014654 transform_tohost_VkSubpassBeginInfoKHR(mImpl->resources(), (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014655 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014656 countingStream->rewind();
14657 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014658 uint64_t cgen_var_1067;
14659 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1067, 1);
14660 countingStream->write((uint64_t*)&cgen_var_1067, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014661 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
14662 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014663 }
14664 uint32_t packetSize_vkCmdBeginRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14665 countingStream->rewind();
14666 uint32_t opcode_vkCmdBeginRenderPass2KHR = OP_vkCmdBeginRenderPass2KHR;
14667 stream->write(&opcode_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
14668 stream->write(&packetSize_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014669 uint64_t cgen_var_1068;
14670 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1068, 1);
14671 stream->write((uint64_t*)&cgen_var_1068, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014672 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
14673 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014674}
14675
14676void VkEncoder::vkCmdNextSubpass2KHR(
14677 VkCommandBuffer commandBuffer,
14678 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
14679 const VkSubpassEndInfoKHR* pSubpassEndInfo)
14680{
14681 auto stream = mImpl->stream();
14682 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014683 auto resources = mImpl->resources();
14684 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014685 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014686 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014687 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014688 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
14689 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014690 local_pSubpassBeginInfo = nullptr;
14691 if (pSubpassBeginInfo)
14692 {
14693 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
14694 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
14695 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014696 local_pSubpassEndInfo = nullptr;
14697 if (pSubpassEndInfo)
14698 {
14699 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
14700 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
14701 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014702 if (local_pSubpassBeginInfo)
14703 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014704 transform_tohost_VkSubpassBeginInfoKHR(mImpl->resources(), (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014705 }
14706 if (local_pSubpassEndInfo)
14707 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014708 transform_tohost_VkSubpassEndInfoKHR(mImpl->resources(), (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014709 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014710 countingStream->rewind();
14711 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014712 uint64_t cgen_var_1069;
14713 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1069, 1);
14714 countingStream->write((uint64_t*)&cgen_var_1069, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014715 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
14716 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014717 }
14718 uint32_t packetSize_vkCmdNextSubpass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14719 countingStream->rewind();
14720 uint32_t opcode_vkCmdNextSubpass2KHR = OP_vkCmdNextSubpass2KHR;
14721 stream->write(&opcode_vkCmdNextSubpass2KHR, sizeof(uint32_t));
14722 stream->write(&packetSize_vkCmdNextSubpass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014723 uint64_t cgen_var_1070;
14724 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1070, 1);
14725 stream->write((uint64_t*)&cgen_var_1070, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014726 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
14727 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014728}
14729
14730void VkEncoder::vkCmdEndRenderPass2KHR(
14731 VkCommandBuffer commandBuffer,
14732 const VkSubpassEndInfoKHR* pSubpassEndInfo)
14733{
14734 auto stream = mImpl->stream();
14735 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014736 auto resources = mImpl->resources();
14737 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014738 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014739 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014740 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014741 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014742 local_pSubpassEndInfo = nullptr;
14743 if (pSubpassEndInfo)
14744 {
14745 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
14746 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
14747 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014748 if (local_pSubpassEndInfo)
14749 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014750 transform_tohost_VkSubpassEndInfoKHR(mImpl->resources(), (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014751 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014752 countingStream->rewind();
14753 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014754 uint64_t cgen_var_1071;
14755 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1071, 1);
14756 countingStream->write((uint64_t*)&cgen_var_1071, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014757 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014758 }
14759 uint32_t packetSize_vkCmdEndRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14760 countingStream->rewind();
14761 uint32_t opcode_vkCmdEndRenderPass2KHR = OP_vkCmdEndRenderPass2KHR;
14762 stream->write(&opcode_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
14763 stream->write(&packetSize_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014764 uint64_t cgen_var_1072;
14765 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1072, 1);
14766 stream->write((uint64_t*)&cgen_var_1072, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014767 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014768}
14769
14770#endif
14771#ifdef VK_KHR_shared_presentable_image
14772VkResult VkEncoder::vkGetSwapchainStatusKHR(
14773 VkDevice device,
14774 VkSwapchainKHR swapchain)
14775{
14776 auto stream = mImpl->stream();
14777 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014778 auto resources = mImpl->resources();
14779 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014780 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014781 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014782 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014783 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014784 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014785 countingStream->rewind();
14786 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014787 uint64_t cgen_var_1073;
14788 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1073, 1);
14789 countingStream->write((uint64_t*)&cgen_var_1073, 1 * 8);
14790 uint64_t cgen_var_1074;
14791 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1074, 1);
14792 countingStream->write((uint64_t*)&cgen_var_1074, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014793 }
14794 uint32_t packetSize_vkGetSwapchainStatusKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14795 countingStream->rewind();
14796 uint32_t opcode_vkGetSwapchainStatusKHR = OP_vkGetSwapchainStatusKHR;
14797 stream->write(&opcode_vkGetSwapchainStatusKHR, sizeof(uint32_t));
14798 stream->write(&packetSize_vkGetSwapchainStatusKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014799 uint64_t cgen_var_1075;
14800 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1075, 1);
14801 stream->write((uint64_t*)&cgen_var_1075, 1 * 8);
14802 uint64_t cgen_var_1076;
14803 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1076, 1);
14804 stream->write((uint64_t*)&cgen_var_1076, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014805 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
14806 stream->read(&vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014807 countingStream->clearPool();
14808 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014809 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014810 return vkGetSwapchainStatusKHR_VkResult_return;
14811}
14812
14813#endif
14814#ifdef VK_KHR_external_fence_capabilities
14815void VkEncoder::vkGetPhysicalDeviceExternalFencePropertiesKHR(
14816 VkPhysicalDevice physicalDevice,
14817 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
14818 VkExternalFenceProperties* pExternalFenceProperties)
14819{
14820 auto stream = mImpl->stream();
14821 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014822 auto resources = mImpl->resources();
14823 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014824 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014825 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014826 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014827 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014828 local_pExternalFenceInfo = nullptr;
14829 if (pExternalFenceInfo)
14830 {
14831 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
14832 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
14833 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014834 if (local_pExternalFenceInfo)
14835 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014836 transform_tohost_VkPhysicalDeviceExternalFenceInfo(mImpl->resources(), (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014837 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014838 countingStream->rewind();
14839 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014840 uint64_t cgen_var_1077;
14841 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1077, 1);
14842 countingStream->write((uint64_t*)&cgen_var_1077, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014843 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014844 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
14845 }
14846 uint32_t packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14847 countingStream->rewind();
14848 uint32_t opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR = OP_vkGetPhysicalDeviceExternalFencePropertiesKHR;
14849 stream->write(&opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
14850 stream->write(&packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014851 uint64_t cgen_var_1078;
14852 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1078, 1);
14853 stream->write((uint64_t*)&cgen_var_1078, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014854 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014855 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
14856 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014857 if (pExternalFenceProperties)
14858 {
14859 transform_fromhost_VkExternalFenceProperties(mImpl->resources(), (VkExternalFenceProperties*)(pExternalFenceProperties));
14860 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014861}
14862
14863#endif
14864#ifdef VK_KHR_external_fence
14865#endif
14866#ifdef VK_KHR_external_fence_win32
14867VkResult VkEncoder::vkImportFenceWin32HandleKHR(
14868 VkDevice device,
14869 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
14870{
14871 auto stream = mImpl->stream();
14872 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014873 auto resources = mImpl->resources();
14874 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014875 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014876 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014877 VkImportFenceWin32HandleInfoKHR* local_pImportFenceWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014878 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014879 local_pImportFenceWin32HandleInfo = nullptr;
14880 if (pImportFenceWin32HandleInfo)
14881 {
14882 local_pImportFenceWin32HandleInfo = (VkImportFenceWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportFenceWin32HandleInfoKHR));
14883 deepcopy_VkImportFenceWin32HandleInfoKHR(pool, pImportFenceWin32HandleInfo, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
14884 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014885 if (local_pImportFenceWin32HandleInfo)
14886 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014887 transform_tohost_VkImportFenceWin32HandleInfoKHR(mImpl->resources(), (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014888 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014889 countingStream->rewind();
14890 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014891 uint64_t cgen_var_1079;
14892 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1079, 1);
14893 countingStream->write((uint64_t*)&cgen_var_1079, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014894 marshal_VkImportFenceWin32HandleInfoKHR(countingStream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014895 }
14896 uint32_t packetSize_vkImportFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14897 countingStream->rewind();
14898 uint32_t opcode_vkImportFenceWin32HandleKHR = OP_vkImportFenceWin32HandleKHR;
14899 stream->write(&opcode_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
14900 stream->write(&packetSize_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014901 uint64_t cgen_var_1080;
14902 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1080, 1);
14903 stream->write((uint64_t*)&cgen_var_1080, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014904 marshal_VkImportFenceWin32HandleInfoKHR(stream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014905 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
14906 stream->read(&vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014907 countingStream->clearPool();
14908 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014909 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014910 return vkImportFenceWin32HandleKHR_VkResult_return;
14911}
14912
14913VkResult VkEncoder::vkGetFenceWin32HandleKHR(
14914 VkDevice device,
14915 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
14916 HANDLE* pHandle)
14917{
14918 auto stream = mImpl->stream();
14919 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014920 auto resources = mImpl->resources();
14921 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014922 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014923 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014924 VkFenceGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014925 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014926 local_pGetWin32HandleInfo = nullptr;
14927 if (pGetWin32HandleInfo)
14928 {
14929 local_pGetWin32HandleInfo = (VkFenceGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkFenceGetWin32HandleInfoKHR));
14930 deepcopy_VkFenceGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
14931 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014932 if (local_pGetWin32HandleInfo)
14933 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014934 transform_tohost_VkFenceGetWin32HandleInfoKHR(mImpl->resources(), (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014935 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014936 countingStream->rewind();
14937 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014938 uint64_t cgen_var_1081;
14939 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1081, 1);
14940 countingStream->write((uint64_t*)&cgen_var_1081, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014941 marshal_VkFenceGetWin32HandleInfoKHR(countingStream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014942 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
14943 }
14944 uint32_t packetSize_vkGetFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14945 countingStream->rewind();
14946 uint32_t opcode_vkGetFenceWin32HandleKHR = OP_vkGetFenceWin32HandleKHR;
14947 stream->write(&opcode_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
14948 stream->write(&packetSize_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014949 uint64_t cgen_var_1082;
14950 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1082, 1);
14951 stream->write((uint64_t*)&cgen_var_1082, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014952 marshal_VkFenceGetWin32HandleInfoKHR(stream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014953 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
14954 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
14955 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
14956 stream->read(&vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014957 countingStream->clearPool();
14958 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014959 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014960 return vkGetFenceWin32HandleKHR_VkResult_return;
14961}
14962
14963#endif
14964#ifdef VK_KHR_external_fence_fd
14965VkResult VkEncoder::vkImportFenceFdKHR(
14966 VkDevice device,
14967 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
14968{
14969 auto stream = mImpl->stream();
14970 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014971 auto resources = mImpl->resources();
14972 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014973 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014974 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014975 VkImportFenceFdInfoKHR* local_pImportFenceFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014976 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014977 local_pImportFenceFdInfo = nullptr;
14978 if (pImportFenceFdInfo)
14979 {
14980 local_pImportFenceFdInfo = (VkImportFenceFdInfoKHR*)pool->alloc(sizeof(const VkImportFenceFdInfoKHR));
14981 deepcopy_VkImportFenceFdInfoKHR(pool, pImportFenceFdInfo, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
14982 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014983 if (local_pImportFenceFdInfo)
14984 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014985 transform_tohost_VkImportFenceFdInfoKHR(mImpl->resources(), (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014986 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014987 countingStream->rewind();
14988 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014989 uint64_t cgen_var_1083;
14990 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1083, 1);
14991 countingStream->write((uint64_t*)&cgen_var_1083, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014992 marshal_VkImportFenceFdInfoKHR(countingStream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014993 }
14994 uint32_t packetSize_vkImportFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14995 countingStream->rewind();
14996 uint32_t opcode_vkImportFenceFdKHR = OP_vkImportFenceFdKHR;
14997 stream->write(&opcode_vkImportFenceFdKHR, sizeof(uint32_t));
14998 stream->write(&packetSize_vkImportFenceFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014999 uint64_t cgen_var_1084;
15000 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1084, 1);
15001 stream->write((uint64_t*)&cgen_var_1084, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015002 marshal_VkImportFenceFdInfoKHR(stream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015003 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
15004 stream->read(&vkImportFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015005 countingStream->clearPool();
15006 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015007 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015008 return vkImportFenceFdKHR_VkResult_return;
15009}
15010
15011VkResult VkEncoder::vkGetFenceFdKHR(
15012 VkDevice device,
15013 const VkFenceGetFdInfoKHR* pGetFdInfo,
15014 int* pFd)
15015{
15016 auto stream = mImpl->stream();
15017 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015018 auto resources = mImpl->resources();
15019 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015020 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015021 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015022 VkFenceGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015023 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015024 local_pGetFdInfo = nullptr;
15025 if (pGetFdInfo)
15026 {
15027 local_pGetFdInfo = (VkFenceGetFdInfoKHR*)pool->alloc(sizeof(const VkFenceGetFdInfoKHR));
15028 deepcopy_VkFenceGetFdInfoKHR(pool, pGetFdInfo, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
15029 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015030 if (local_pGetFdInfo)
15031 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015032 transform_tohost_VkFenceGetFdInfoKHR(mImpl->resources(), (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015033 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015034 countingStream->rewind();
15035 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015036 uint64_t cgen_var_1085;
15037 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1085, 1);
15038 countingStream->write((uint64_t*)&cgen_var_1085, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015039 marshal_VkFenceGetFdInfoKHR(countingStream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015040 countingStream->write((int*)pFd, sizeof(int));
15041 }
15042 uint32_t packetSize_vkGetFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15043 countingStream->rewind();
15044 uint32_t opcode_vkGetFenceFdKHR = OP_vkGetFenceFdKHR;
15045 stream->write(&opcode_vkGetFenceFdKHR, sizeof(uint32_t));
15046 stream->write(&packetSize_vkGetFenceFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015047 uint64_t cgen_var_1086;
15048 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1086, 1);
15049 stream->write((uint64_t*)&cgen_var_1086, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015050 marshal_VkFenceGetFdInfoKHR(stream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015051 stream->write((int*)pFd, sizeof(int));
15052 stream->read((int*)pFd, sizeof(int));
15053 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
15054 stream->read(&vkGetFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015055 countingStream->clearPool();
15056 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015057 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015058 return vkGetFenceFdKHR_VkResult_return;
15059}
15060
15061#endif
15062#ifdef VK_KHR_maintenance2
15063#endif
15064#ifdef VK_KHR_get_surface_capabilities2
15065VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2KHR(
15066 VkPhysicalDevice physicalDevice,
15067 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
15068 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
15069{
15070 auto stream = mImpl->stream();
15071 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015072 auto resources = mImpl->resources();
15073 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015074 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015075 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015076 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015077 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015078 local_pSurfaceInfo = nullptr;
15079 if (pSurfaceInfo)
15080 {
15081 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
15082 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
15083 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015084 if (local_pSurfaceInfo)
15085 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015086 transform_tohost_VkPhysicalDeviceSurfaceInfo2KHR(mImpl->resources(), (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015087 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015088 countingStream->rewind();
15089 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015090 uint64_t cgen_var_1087;
15091 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1087, 1);
15092 countingStream->write((uint64_t*)&cgen_var_1087, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015093 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015094 marshal_VkSurfaceCapabilities2KHR(countingStream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
15095 }
15096 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15097 countingStream->rewind();
15098 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR = OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR;
15099 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
15100 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015101 uint64_t cgen_var_1088;
15102 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1088, 1);
15103 stream->write((uint64_t*)&cgen_var_1088, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015104 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015105 marshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
15106 unmarshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080015107 if (pSurfaceCapabilities)
15108 {
15109 transform_fromhost_VkSurfaceCapabilities2KHR(mImpl->resources(), (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
15110 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015111 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
15112 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015113 countingStream->clearPool();
15114 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015115 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015116 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
15117}
15118
15119VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormats2KHR(
15120 VkPhysicalDevice physicalDevice,
15121 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
15122 uint32_t* pSurfaceFormatCount,
15123 VkSurfaceFormat2KHR* pSurfaceFormats)
15124{
15125 auto stream = mImpl->stream();
15126 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015127 auto resources = mImpl->resources();
15128 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015129 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015130 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015131 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015132 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015133 local_pSurfaceInfo = nullptr;
15134 if (pSurfaceInfo)
15135 {
15136 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
15137 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
15138 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015139 if (local_pSurfaceInfo)
15140 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015141 transform_tohost_VkPhysicalDeviceSurfaceInfo2KHR(mImpl->resources(), (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015142 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015143 countingStream->rewind();
15144 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015145 uint64_t cgen_var_1089;
15146 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1089, 1);
15147 countingStream->write((uint64_t*)&cgen_var_1089, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015148 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015149 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015150 uint64_t cgen_var_1090 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
15151 countingStream->putBe64(cgen_var_1090);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015152 if (pSurfaceFormatCount)
15153 {
15154 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
15155 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015156 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015157 uint64_t cgen_var_1091 = (uint64_t)(uintptr_t)pSurfaceFormats;
15158 countingStream->putBe64(cgen_var_1091);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015159 if (pSurfaceFormats)
15160 {
15161 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
15162 {
15163 marshal_VkSurfaceFormat2KHR(countingStream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
15164 }
15165 }
15166 }
15167 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15168 countingStream->rewind();
15169 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormats2KHR = OP_vkGetPhysicalDeviceSurfaceFormats2KHR;
15170 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
15171 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015172 uint64_t cgen_var_1092;
15173 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1092, 1);
15174 stream->write((uint64_t*)&cgen_var_1092, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015175 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015176 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015177 uint64_t cgen_var_1093 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
15178 stream->putBe64(cgen_var_1093);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015179 if (pSurfaceFormatCount)
15180 {
15181 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
15182 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015183 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015184 uint64_t cgen_var_1094 = (uint64_t)(uintptr_t)pSurfaceFormats;
15185 stream->putBe64(cgen_var_1094);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015186 if (pSurfaceFormats)
15187 {
15188 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
15189 {
15190 marshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
15191 }
15192 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015193 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015194 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015195 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015196 if (pSurfaceFormatCount)
15197 {
15198 if (!(check_pSurfaceFormatCount))
15199 {
15200 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
15201 }
15202 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
15203 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015204 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015205 VkSurfaceFormat2KHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015206 check_pSurfaceFormats = (VkSurfaceFormat2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015207 if (pSurfaceFormats)
15208 {
15209 if (!(check_pSurfaceFormats))
15210 {
15211 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
15212 }
15213 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
15214 {
15215 unmarshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
15216 }
15217 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080015218 if (pSurfaceFormats)
15219 {
15220 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
15221 {
15222 transform_fromhost_VkSurfaceFormat2KHR(mImpl->resources(), (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
15223 }
15224 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015225 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
15226 stream->read(&vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015227 countingStream->clearPool();
15228 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015229 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015230 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
15231}
15232
15233#endif
15234#ifdef VK_KHR_variable_pointers
15235#endif
15236#ifdef VK_KHR_get_display_properties2
15237VkResult VkEncoder::vkGetPhysicalDeviceDisplayProperties2KHR(
15238 VkPhysicalDevice physicalDevice,
15239 uint32_t* pPropertyCount,
15240 VkDisplayProperties2KHR* pProperties)
15241{
15242 auto stream = mImpl->stream();
15243 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015244 auto resources = mImpl->resources();
15245 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015246 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015247 VkPhysicalDevice local_physicalDevice;
15248 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015249 countingStream->rewind();
15250 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015251 uint64_t cgen_var_1097;
15252 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1097, 1);
15253 countingStream->write((uint64_t*)&cgen_var_1097, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015254 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015255 uint64_t cgen_var_1098 = (uint64_t)(uintptr_t)pPropertyCount;
15256 countingStream->putBe64(cgen_var_1098);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015257 if (pPropertyCount)
15258 {
15259 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15260 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015261 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015262 uint64_t cgen_var_1099 = (uint64_t)(uintptr_t)pProperties;
15263 countingStream->putBe64(cgen_var_1099);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015264 if (pProperties)
15265 {
15266 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15267 {
15268 marshal_VkDisplayProperties2KHR(countingStream, (VkDisplayProperties2KHR*)(pProperties + i));
15269 }
15270 }
15271 }
15272 uint32_t packetSize_vkGetPhysicalDeviceDisplayProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15273 countingStream->rewind();
15274 uint32_t opcode_vkGetPhysicalDeviceDisplayProperties2KHR = OP_vkGetPhysicalDeviceDisplayProperties2KHR;
15275 stream->write(&opcode_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
15276 stream->write(&packetSize_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015277 uint64_t cgen_var_1100;
15278 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1100, 1);
15279 stream->write((uint64_t*)&cgen_var_1100, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015280 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015281 uint64_t cgen_var_1101 = (uint64_t)(uintptr_t)pPropertyCount;
15282 stream->putBe64(cgen_var_1101);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015283 if (pPropertyCount)
15284 {
15285 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15286 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015287 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015288 uint64_t cgen_var_1102 = (uint64_t)(uintptr_t)pProperties;
15289 stream->putBe64(cgen_var_1102);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015290 if (pProperties)
15291 {
15292 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15293 {
15294 marshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
15295 }
15296 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015297 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015298 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015299 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015300 if (pPropertyCount)
15301 {
15302 if (!(check_pPropertyCount))
15303 {
15304 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
15305 }
15306 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
15307 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015308 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015309 VkDisplayProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015310 check_pProperties = (VkDisplayProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015311 if (pProperties)
15312 {
15313 if (!(check_pProperties))
15314 {
15315 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
15316 }
15317 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15318 {
15319 unmarshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
15320 }
15321 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080015322 if (pProperties)
15323 {
15324 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15325 {
15326 transform_fromhost_VkDisplayProperties2KHR(mImpl->resources(), (VkDisplayProperties2KHR*)(pProperties + i));
15327 }
15328 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015329 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
15330 stream->read(&vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015331 countingStream->clearPool();
15332 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015333 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015334 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
15335}
15336
15337VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
15338 VkPhysicalDevice physicalDevice,
15339 uint32_t* pPropertyCount,
15340 VkDisplayPlaneProperties2KHR* pProperties)
15341{
15342 auto stream = mImpl->stream();
15343 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015344 auto resources = mImpl->resources();
15345 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015346 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015347 VkPhysicalDevice local_physicalDevice;
15348 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015349 countingStream->rewind();
15350 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015351 uint64_t cgen_var_1105;
15352 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1105, 1);
15353 countingStream->write((uint64_t*)&cgen_var_1105, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015354 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015355 uint64_t cgen_var_1106 = (uint64_t)(uintptr_t)pPropertyCount;
15356 countingStream->putBe64(cgen_var_1106);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015357 if (pPropertyCount)
15358 {
15359 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15360 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015361 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015362 uint64_t cgen_var_1107 = (uint64_t)(uintptr_t)pProperties;
15363 countingStream->putBe64(cgen_var_1107);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015364 if (pProperties)
15365 {
15366 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15367 {
15368 marshal_VkDisplayPlaneProperties2KHR(countingStream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
15369 }
15370 }
15371 }
15372 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15373 countingStream->rewind();
15374 uint32_t opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
15375 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
15376 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015377 uint64_t cgen_var_1108;
15378 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1108, 1);
15379 stream->write((uint64_t*)&cgen_var_1108, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015380 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015381 uint64_t cgen_var_1109 = (uint64_t)(uintptr_t)pPropertyCount;
15382 stream->putBe64(cgen_var_1109);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015383 if (pPropertyCount)
15384 {
15385 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15386 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015387 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015388 uint64_t cgen_var_1110 = (uint64_t)(uintptr_t)pProperties;
15389 stream->putBe64(cgen_var_1110);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015390 if (pProperties)
15391 {
15392 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15393 {
15394 marshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
15395 }
15396 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015397 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015398 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015399 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015400 if (pPropertyCount)
15401 {
15402 if (!(check_pPropertyCount))
15403 {
15404 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
15405 }
15406 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
15407 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015408 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015409 VkDisplayPlaneProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015410 check_pProperties = (VkDisplayPlaneProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015411 if (pProperties)
15412 {
15413 if (!(check_pProperties))
15414 {
15415 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
15416 }
15417 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15418 {
15419 unmarshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
15420 }
15421 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080015422 if (pProperties)
15423 {
15424 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15425 {
15426 transform_fromhost_VkDisplayPlaneProperties2KHR(mImpl->resources(), (VkDisplayPlaneProperties2KHR*)(pProperties + i));
15427 }
15428 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015429 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
15430 stream->read(&vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015431 countingStream->clearPool();
15432 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015433 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015434 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
15435}
15436
15437VkResult VkEncoder::vkGetDisplayModeProperties2KHR(
15438 VkPhysicalDevice physicalDevice,
15439 VkDisplayKHR display,
15440 uint32_t* pPropertyCount,
15441 VkDisplayModeProperties2KHR* pProperties)
15442{
15443 auto stream = mImpl->stream();
15444 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015445 auto resources = mImpl->resources();
15446 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015447 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015448 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015449 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015450 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015451 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015452 countingStream->rewind();
15453 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015454 uint64_t cgen_var_1113;
15455 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1113, 1);
15456 countingStream->write((uint64_t*)&cgen_var_1113, 1 * 8);
15457 uint64_t cgen_var_1114;
15458 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1114, 1);
15459 countingStream->write((uint64_t*)&cgen_var_1114, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015460 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015461 uint64_t cgen_var_1115 = (uint64_t)(uintptr_t)pPropertyCount;
15462 countingStream->putBe64(cgen_var_1115);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015463 if (pPropertyCount)
15464 {
15465 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15466 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015467 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015468 uint64_t cgen_var_1116 = (uint64_t)(uintptr_t)pProperties;
15469 countingStream->putBe64(cgen_var_1116);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015470 if (pProperties)
15471 {
15472 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15473 {
15474 marshal_VkDisplayModeProperties2KHR(countingStream, (VkDisplayModeProperties2KHR*)(pProperties + i));
15475 }
15476 }
15477 }
15478 uint32_t packetSize_vkGetDisplayModeProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15479 countingStream->rewind();
15480 uint32_t opcode_vkGetDisplayModeProperties2KHR = OP_vkGetDisplayModeProperties2KHR;
15481 stream->write(&opcode_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
15482 stream->write(&packetSize_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015483 uint64_t cgen_var_1117;
15484 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1117, 1);
15485 stream->write((uint64_t*)&cgen_var_1117, 1 * 8);
15486 uint64_t cgen_var_1118;
15487 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1118, 1);
15488 stream->write((uint64_t*)&cgen_var_1118, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015489 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015490 uint64_t cgen_var_1119 = (uint64_t)(uintptr_t)pPropertyCount;
15491 stream->putBe64(cgen_var_1119);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015492 if (pPropertyCount)
15493 {
15494 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15495 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015496 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015497 uint64_t cgen_var_1120 = (uint64_t)(uintptr_t)pProperties;
15498 stream->putBe64(cgen_var_1120);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015499 if (pProperties)
15500 {
15501 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15502 {
15503 marshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
15504 }
15505 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015506 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015507 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015508 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015509 if (pPropertyCount)
15510 {
15511 if (!(check_pPropertyCount))
15512 {
15513 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
15514 }
15515 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
15516 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015517 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015518 VkDisplayModeProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015519 check_pProperties = (VkDisplayModeProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015520 if (pProperties)
15521 {
15522 if (!(check_pProperties))
15523 {
15524 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
15525 }
15526 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15527 {
15528 unmarshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
15529 }
15530 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080015531 if (pProperties)
15532 {
15533 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15534 {
15535 transform_fromhost_VkDisplayModeProperties2KHR(mImpl->resources(), (VkDisplayModeProperties2KHR*)(pProperties + i));
15536 }
15537 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015538 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
15539 stream->read(&vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015540 countingStream->clearPool();
15541 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015542 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015543 return vkGetDisplayModeProperties2KHR_VkResult_return;
15544}
15545
15546VkResult VkEncoder::vkGetDisplayPlaneCapabilities2KHR(
15547 VkPhysicalDevice physicalDevice,
15548 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
15549 VkDisplayPlaneCapabilities2KHR* pCapabilities)
15550{
15551 auto stream = mImpl->stream();
15552 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015553 auto resources = mImpl->resources();
15554 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015555 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015556 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015557 VkDisplayPlaneInfo2KHR* local_pDisplayPlaneInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015558 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015559 local_pDisplayPlaneInfo = nullptr;
15560 if (pDisplayPlaneInfo)
15561 {
15562 local_pDisplayPlaneInfo = (VkDisplayPlaneInfo2KHR*)pool->alloc(sizeof(const VkDisplayPlaneInfo2KHR));
15563 deepcopy_VkDisplayPlaneInfo2KHR(pool, pDisplayPlaneInfo, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
15564 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015565 if (local_pDisplayPlaneInfo)
15566 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015567 transform_tohost_VkDisplayPlaneInfo2KHR(mImpl->resources(), (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015568 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015569 countingStream->rewind();
15570 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015571 uint64_t cgen_var_1123;
15572 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1123, 1);
15573 countingStream->write((uint64_t*)&cgen_var_1123, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015574 marshal_VkDisplayPlaneInfo2KHR(countingStream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015575 marshal_VkDisplayPlaneCapabilities2KHR(countingStream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
15576 }
15577 uint32_t packetSize_vkGetDisplayPlaneCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15578 countingStream->rewind();
15579 uint32_t opcode_vkGetDisplayPlaneCapabilities2KHR = OP_vkGetDisplayPlaneCapabilities2KHR;
15580 stream->write(&opcode_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
15581 stream->write(&packetSize_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015582 uint64_t cgen_var_1124;
15583 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1124, 1);
15584 stream->write((uint64_t*)&cgen_var_1124, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015585 marshal_VkDisplayPlaneInfo2KHR(stream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015586 marshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
15587 unmarshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080015588 if (pCapabilities)
15589 {
15590 transform_fromhost_VkDisplayPlaneCapabilities2KHR(mImpl->resources(), (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
15591 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015592 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
15593 stream->read(&vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015594 countingStream->clearPool();
15595 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015596 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015597 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
15598}
15599
15600#endif
15601#ifdef VK_KHR_dedicated_allocation
15602#endif
15603#ifdef VK_KHR_storage_buffer_storage_class
15604#endif
15605#ifdef VK_KHR_relaxed_block_layout
15606#endif
15607#ifdef VK_KHR_get_memory_requirements2
15608void VkEncoder::vkGetImageMemoryRequirements2KHR(
15609 VkDevice device,
15610 const VkImageMemoryRequirementsInfo2* pInfo,
15611 VkMemoryRequirements2* pMemoryRequirements)
15612{
15613 auto stream = mImpl->stream();
15614 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015615 auto resources = mImpl->resources();
15616 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015617 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015618 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015619 VkImageMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015620 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015621 local_pInfo = nullptr;
15622 if (pInfo)
15623 {
15624 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
15625 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
15626 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015627 if (local_pInfo)
15628 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015629 transform_tohost_VkImageMemoryRequirementsInfo2(mImpl->resources(), (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015630 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015631 countingStream->rewind();
15632 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015633 uint64_t cgen_var_1125;
15634 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1125, 1);
15635 countingStream->write((uint64_t*)&cgen_var_1125, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015636 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015637 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
15638 }
15639 uint32_t packetSize_vkGetImageMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15640 countingStream->rewind();
15641 uint32_t opcode_vkGetImageMemoryRequirements2KHR = OP_vkGetImageMemoryRequirements2KHR;
15642 stream->write(&opcode_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
15643 stream->write(&packetSize_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015644 uint64_t cgen_var_1126;
15645 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1126, 1);
15646 stream->write((uint64_t*)&cgen_var_1126, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015647 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015648 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
15649 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -080015650 if (pMemoryRequirements)
15651 {
15652 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
15653 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015654}
15655
15656void VkEncoder::vkGetBufferMemoryRequirements2KHR(
15657 VkDevice device,
15658 const VkBufferMemoryRequirementsInfo2* pInfo,
15659 VkMemoryRequirements2* pMemoryRequirements)
15660{
15661 auto stream = mImpl->stream();
15662 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015663 auto resources = mImpl->resources();
15664 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015665 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015666 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015667 VkBufferMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015668 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015669 local_pInfo = nullptr;
15670 if (pInfo)
15671 {
15672 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
15673 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
15674 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015675 if (local_pInfo)
15676 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015677 transform_tohost_VkBufferMemoryRequirementsInfo2(mImpl->resources(), (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015678 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015679 countingStream->rewind();
15680 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015681 uint64_t cgen_var_1127;
15682 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1127, 1);
15683 countingStream->write((uint64_t*)&cgen_var_1127, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015684 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015685 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
15686 }
15687 uint32_t packetSize_vkGetBufferMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15688 countingStream->rewind();
15689 uint32_t opcode_vkGetBufferMemoryRequirements2KHR = OP_vkGetBufferMemoryRequirements2KHR;
15690 stream->write(&opcode_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
15691 stream->write(&packetSize_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015692 uint64_t cgen_var_1128;
15693 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1128, 1);
15694 stream->write((uint64_t*)&cgen_var_1128, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015695 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015696 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
15697 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -080015698 if (pMemoryRequirements)
15699 {
15700 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
15701 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015702}
15703
15704void VkEncoder::vkGetImageSparseMemoryRequirements2KHR(
15705 VkDevice device,
15706 const VkImageSparseMemoryRequirementsInfo2* pInfo,
15707 uint32_t* pSparseMemoryRequirementCount,
15708 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
15709{
15710 auto stream = mImpl->stream();
15711 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015712 auto resources = mImpl->resources();
15713 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015714 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015715 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015716 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015717 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015718 local_pInfo = nullptr;
15719 if (pInfo)
15720 {
15721 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
15722 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
15723 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015724 if (local_pInfo)
15725 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015726 transform_tohost_VkImageSparseMemoryRequirementsInfo2(mImpl->resources(), (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015727 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015728 countingStream->rewind();
15729 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015730 uint64_t cgen_var_1129;
15731 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1129, 1);
15732 countingStream->write((uint64_t*)&cgen_var_1129, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015733 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015734 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015735 uint64_t cgen_var_1130 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
15736 countingStream->putBe64(cgen_var_1130);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015737 if (pSparseMemoryRequirementCount)
15738 {
15739 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
15740 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015741 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015742 uint64_t cgen_var_1131 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
15743 countingStream->putBe64(cgen_var_1131);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015744 if (pSparseMemoryRequirements)
15745 {
15746 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
15747 {
15748 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
15749 }
15750 }
15751 }
15752 uint32_t packetSize_vkGetImageSparseMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15753 countingStream->rewind();
15754 uint32_t opcode_vkGetImageSparseMemoryRequirements2KHR = OP_vkGetImageSparseMemoryRequirements2KHR;
15755 stream->write(&opcode_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
15756 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015757 uint64_t cgen_var_1132;
15758 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1132, 1);
15759 stream->write((uint64_t*)&cgen_var_1132, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015760 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015761 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015762 uint64_t cgen_var_1133 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
15763 stream->putBe64(cgen_var_1133);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015764 if (pSparseMemoryRequirementCount)
15765 {
15766 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
15767 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015768 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015769 uint64_t cgen_var_1134 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
15770 stream->putBe64(cgen_var_1134);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015771 if (pSparseMemoryRequirements)
15772 {
15773 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
15774 {
15775 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
15776 }
15777 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015778 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015779 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015780 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015781 if (pSparseMemoryRequirementCount)
15782 {
15783 if (!(check_pSparseMemoryRequirementCount))
15784 {
15785 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
15786 }
15787 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
15788 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015789 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015790 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015791 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015792 if (pSparseMemoryRequirements)
15793 {
15794 if (!(check_pSparseMemoryRequirements))
15795 {
15796 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
15797 }
15798 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
15799 {
15800 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
15801 }
15802 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080015803 if (pSparseMemoryRequirements)
15804 {
15805 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
15806 {
15807 transform_fromhost_VkSparseImageMemoryRequirements2(mImpl->resources(), (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
15808 }
15809 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015810}
15811
15812#endif
15813#ifdef VK_KHR_image_format_list
15814#endif
15815#ifdef VK_KHR_sampler_ycbcr_conversion
15816VkResult VkEncoder::vkCreateSamplerYcbcrConversionKHR(
15817 VkDevice device,
15818 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
15819 const VkAllocationCallbacks* pAllocator,
15820 VkSamplerYcbcrConversion* pYcbcrConversion)
15821{
15822 auto stream = mImpl->stream();
15823 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015824 auto resources = mImpl->resources();
15825 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015826 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015827 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015828 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015829 VkAllocationCallbacks* local_pAllocator;
15830 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015831 local_pCreateInfo = nullptr;
15832 if (pCreateInfo)
15833 {
15834 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
15835 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
15836 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015837 local_pAllocator = nullptr;
15838 if (pAllocator)
15839 {
15840 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15841 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15842 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015843 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080015844 if (local_pCreateInfo)
15845 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015846 transform_tohost_VkSamplerYcbcrConversionCreateInfo(mImpl->resources(), (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015847 }
15848 if (local_pAllocator)
15849 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015850 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015851 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015852 countingStream->rewind();
15853 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015854 uint64_t cgen_var_1137;
15855 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1137, 1);
15856 countingStream->write((uint64_t*)&cgen_var_1137, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015857 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015858 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015859 uint64_t cgen_var_1138 = (uint64_t)(uintptr_t)local_pAllocator;
15860 countingStream->putBe64(cgen_var_1138);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015861 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015862 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015863 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015864 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015865 uint64_t cgen_var_1139;
15866 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1139, 1);
15867 countingStream->write((uint64_t*)&cgen_var_1139, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015868 }
15869 uint32_t packetSize_vkCreateSamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15870 countingStream->rewind();
15871 uint32_t opcode_vkCreateSamplerYcbcrConversionKHR = OP_vkCreateSamplerYcbcrConversionKHR;
15872 stream->write(&opcode_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
15873 stream->write(&packetSize_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015874 uint64_t cgen_var_1140;
15875 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1140, 1);
15876 stream->write((uint64_t*)&cgen_var_1140, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015877 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015878 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015879 uint64_t cgen_var_1141 = (uint64_t)(uintptr_t)local_pAllocator;
15880 stream->putBe64(cgen_var_1141);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015881 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015882 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015883 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015884 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080015885 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015886 uint64_t cgen_var_1142;
15887 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1142, 1);
15888 stream->write((uint64_t*)&cgen_var_1142, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015889 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015890 uint64_t cgen_var_1143;
15891 stream->read((uint64_t*)&cgen_var_1143, 8);
15892 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_1143, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015893 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
15894 stream->read(&vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015895 countingStream->clearPool();
15896 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015897 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015898 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
15899}
15900
15901void VkEncoder::vkDestroySamplerYcbcrConversionKHR(
15902 VkDevice device,
15903 VkSamplerYcbcrConversion ycbcrConversion,
15904 const VkAllocationCallbacks* pAllocator)
15905{
15906 auto stream = mImpl->stream();
15907 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015908 auto resources = mImpl->resources();
15909 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015910 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015911 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015912 VkSamplerYcbcrConversion local_ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015913 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015914 local_device = device;
15915 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015916 local_pAllocator = nullptr;
15917 if (pAllocator)
15918 {
15919 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15920 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15921 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015922 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080015923 if (local_pAllocator)
15924 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015925 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015926 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015927 countingStream->rewind();
15928 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015929 uint64_t cgen_var_1144;
15930 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1144, 1);
15931 countingStream->write((uint64_t*)&cgen_var_1144, 1 * 8);
15932 uint64_t cgen_var_1145;
15933 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1145, 1);
15934 countingStream->write((uint64_t*)&cgen_var_1145, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015935 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015936 uint64_t cgen_var_1146 = (uint64_t)(uintptr_t)local_pAllocator;
15937 countingStream->putBe64(cgen_var_1146);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015938 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015939 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015940 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015941 }
15942 }
15943 uint32_t packetSize_vkDestroySamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15944 countingStream->rewind();
15945 uint32_t opcode_vkDestroySamplerYcbcrConversionKHR = OP_vkDestroySamplerYcbcrConversionKHR;
15946 stream->write(&opcode_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
15947 stream->write(&packetSize_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015948 uint64_t cgen_var_1147;
15949 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1147, 1);
15950 stream->write((uint64_t*)&cgen_var_1147, 1 * 8);
15951 uint64_t cgen_var_1148;
15952 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1148, 1);
15953 stream->write((uint64_t*)&cgen_var_1148, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015954 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015955 uint64_t cgen_var_1149 = (uint64_t)(uintptr_t)local_pAllocator;
15956 stream->putBe64(cgen_var_1149);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015957 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015958 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015959 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015960 }
15961}
15962
15963#endif
15964#ifdef VK_KHR_bind_memory2
15965VkResult VkEncoder::vkBindBufferMemory2KHR(
15966 VkDevice device,
15967 uint32_t bindInfoCount,
15968 const VkBindBufferMemoryInfo* pBindInfos)
15969{
15970 auto stream = mImpl->stream();
15971 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015972 auto resources = mImpl->resources();
15973 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015974 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015975 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015976 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015977 VkBindBufferMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015978 local_device = device;
15979 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015980 local_pBindInfos = nullptr;
15981 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015982 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015983 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015984 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
15985 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015986 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
15987 }
15988 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015989 if (local_pBindInfos)
15990 {
15991 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
15992 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015993 transform_tohost_VkBindBufferMemoryInfo(mImpl->resources(), (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015994 }
15995 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015996 countingStream->rewind();
15997 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015998 uint64_t cgen_var_1150;
15999 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1150, 1);
16000 countingStream->write((uint64_t*)&cgen_var_1150, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016001 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
16002 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16003 {
16004 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016005 }
16006 }
16007 uint32_t packetSize_vkBindBufferMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16008 countingStream->rewind();
16009 uint32_t opcode_vkBindBufferMemory2KHR = OP_vkBindBufferMemory2KHR;
16010 stream->write(&opcode_vkBindBufferMemory2KHR, sizeof(uint32_t));
16011 stream->write(&packetSize_vkBindBufferMemory2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016012 uint64_t cgen_var_1151;
16013 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1151, 1);
16014 stream->write((uint64_t*)&cgen_var_1151, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016015 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016016 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16017 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016018 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016019 }
16020 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
16021 stream->read(&vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016022 countingStream->clearPool();
16023 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016024 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016025 return vkBindBufferMemory2KHR_VkResult_return;
16026}
16027
16028VkResult VkEncoder::vkBindImageMemory2KHR(
16029 VkDevice device,
16030 uint32_t bindInfoCount,
16031 const VkBindImageMemoryInfo* pBindInfos)
16032{
16033 auto stream = mImpl->stream();
16034 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016035 auto resources = mImpl->resources();
16036 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016037 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016038 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016039 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016040 VkBindImageMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016041 local_device = device;
16042 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016043 local_pBindInfos = nullptr;
16044 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016045 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016046 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016047 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16048 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016049 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
16050 }
16051 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016052 if (local_pBindInfos)
16053 {
16054 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16055 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016056 transform_tohost_VkBindImageMemoryInfo(mImpl->resources(), (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016057 }
16058 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016059 countingStream->rewind();
16060 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016061 uint64_t cgen_var_1152;
16062 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1152, 1);
16063 countingStream->write((uint64_t*)&cgen_var_1152, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016064 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
16065 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16066 {
16067 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016068 }
16069 }
16070 uint32_t packetSize_vkBindImageMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16071 countingStream->rewind();
16072 uint32_t opcode_vkBindImageMemory2KHR = OP_vkBindImageMemory2KHR;
16073 stream->write(&opcode_vkBindImageMemory2KHR, sizeof(uint32_t));
16074 stream->write(&packetSize_vkBindImageMemory2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016075 uint64_t cgen_var_1153;
16076 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1153, 1);
16077 stream->write((uint64_t*)&cgen_var_1153, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016078 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016079 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16080 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016081 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016082 }
16083 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
16084 stream->read(&vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016085 countingStream->clearPool();
16086 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016087 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016088 return vkBindImageMemory2KHR_VkResult_return;
16089}
16090
16091#endif
16092#ifdef VK_KHR_maintenance3
16093void VkEncoder::vkGetDescriptorSetLayoutSupportKHR(
16094 VkDevice device,
16095 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
16096 VkDescriptorSetLayoutSupport* pSupport)
16097{
16098 auto stream = mImpl->stream();
16099 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016100 auto resources = mImpl->resources();
16101 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016102 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016103 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016104 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016105 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016106 local_pCreateInfo = nullptr;
16107 if (pCreateInfo)
16108 {
16109 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
16110 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
16111 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016112 if (local_pCreateInfo)
16113 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016114 transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016115 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016116 countingStream->rewind();
16117 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016118 uint64_t cgen_var_1154;
16119 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1154, 1);
16120 countingStream->write((uint64_t*)&cgen_var_1154, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016121 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016122 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
16123 }
16124 uint32_t packetSize_vkGetDescriptorSetLayoutSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16125 countingStream->rewind();
16126 uint32_t opcode_vkGetDescriptorSetLayoutSupportKHR = OP_vkGetDescriptorSetLayoutSupportKHR;
16127 stream->write(&opcode_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
16128 stream->write(&packetSize_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016129 uint64_t cgen_var_1155;
16130 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1155, 1);
16131 stream->write((uint64_t*)&cgen_var_1155, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016132 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016133 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
16134 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016135 if (pSupport)
16136 {
16137 transform_fromhost_VkDescriptorSetLayoutSupport(mImpl->resources(), (VkDescriptorSetLayoutSupport*)(pSupport));
16138 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016139}
16140
16141#endif
16142#ifdef VK_KHR_draw_indirect_count
16143void VkEncoder::vkCmdDrawIndirectCountKHR(
16144 VkCommandBuffer commandBuffer,
16145 VkBuffer buffer,
16146 VkDeviceSize offset,
16147 VkBuffer countBuffer,
16148 VkDeviceSize countBufferOffset,
16149 uint32_t maxDrawCount,
16150 uint32_t stride)
16151{
16152 auto stream = mImpl->stream();
16153 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016154 auto resources = mImpl->resources();
16155 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016156 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016157 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016158 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016159 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016160 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016161 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016162 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016163 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016164 local_commandBuffer = commandBuffer;
16165 local_buffer = buffer;
16166 local_offset = offset;
16167 local_countBuffer = countBuffer;
16168 local_countBufferOffset = countBufferOffset;
16169 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016170 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016171 countingStream->rewind();
16172 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016173 uint64_t cgen_var_1156;
16174 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1156, 1);
16175 countingStream->write((uint64_t*)&cgen_var_1156, 1 * 8);
16176 uint64_t cgen_var_1157;
16177 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1157, 1);
16178 countingStream->write((uint64_t*)&cgen_var_1157, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016179 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016180 uint64_t cgen_var_1158;
16181 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1158, 1);
16182 countingStream->write((uint64_t*)&cgen_var_1158, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016183 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16184 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16185 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016186 }
16187 uint32_t packetSize_vkCmdDrawIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16188 countingStream->rewind();
16189 uint32_t opcode_vkCmdDrawIndirectCountKHR = OP_vkCmdDrawIndirectCountKHR;
16190 stream->write(&opcode_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
16191 stream->write(&packetSize_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016192 uint64_t cgen_var_1159;
16193 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1159, 1);
16194 stream->write((uint64_t*)&cgen_var_1159, 1 * 8);
16195 uint64_t cgen_var_1160;
16196 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1160, 1);
16197 stream->write((uint64_t*)&cgen_var_1160, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016198 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016199 uint64_t cgen_var_1161;
16200 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1161, 1);
16201 stream->write((uint64_t*)&cgen_var_1161, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016202 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16203 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16204 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016205}
16206
16207void VkEncoder::vkCmdDrawIndexedIndirectCountKHR(
16208 VkCommandBuffer commandBuffer,
16209 VkBuffer buffer,
16210 VkDeviceSize offset,
16211 VkBuffer countBuffer,
16212 VkDeviceSize countBufferOffset,
16213 uint32_t maxDrawCount,
16214 uint32_t stride)
16215{
16216 auto stream = mImpl->stream();
16217 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016218 auto resources = mImpl->resources();
16219 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016220 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016221 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016222 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016223 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016224 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016225 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016226 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016227 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016228 local_commandBuffer = commandBuffer;
16229 local_buffer = buffer;
16230 local_offset = offset;
16231 local_countBuffer = countBuffer;
16232 local_countBufferOffset = countBufferOffset;
16233 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016234 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016235 countingStream->rewind();
16236 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016237 uint64_t cgen_var_1162;
16238 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1162, 1);
16239 countingStream->write((uint64_t*)&cgen_var_1162, 1 * 8);
16240 uint64_t cgen_var_1163;
16241 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1163, 1);
16242 countingStream->write((uint64_t*)&cgen_var_1163, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016243 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016244 uint64_t cgen_var_1164;
16245 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1164, 1);
16246 countingStream->write((uint64_t*)&cgen_var_1164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016247 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16248 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16249 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016250 }
16251 uint32_t packetSize_vkCmdDrawIndexedIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16252 countingStream->rewind();
16253 uint32_t opcode_vkCmdDrawIndexedIndirectCountKHR = OP_vkCmdDrawIndexedIndirectCountKHR;
16254 stream->write(&opcode_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
16255 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016256 uint64_t cgen_var_1165;
16257 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1165, 1);
16258 stream->write((uint64_t*)&cgen_var_1165, 1 * 8);
16259 uint64_t cgen_var_1166;
16260 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1166, 1);
16261 stream->write((uint64_t*)&cgen_var_1166, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016262 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016263 uint64_t cgen_var_1167;
16264 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1167, 1);
16265 stream->write((uint64_t*)&cgen_var_1167, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016266 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16267 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16268 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016269}
16270
16271#endif
16272#ifdef VK_KHR_8bit_storage
16273#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -080016274#ifdef VK_ANDROID_native_buffer
16275VkResult VkEncoder::vkGetSwapchainGrallocUsageANDROID(
16276 VkDevice device,
16277 VkFormat format,
16278 VkImageUsageFlags imageUsage,
16279 int* grallocUsage)
16280{
16281 auto stream = mImpl->stream();
16282 auto countingStream = mImpl->countingStream();
16283 auto resources = mImpl->resources();
16284 auto pool = mImpl->pool();
16285 stream->setHandleMapping(resources->unwrapMapping());
16286 VkDevice local_device;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016287 VkFormat local_format;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016288 VkImageUsageFlags local_imageUsage;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016289 local_device = device;
16290 local_format = format;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016291 local_imageUsage = imageUsage;
16292 countingStream->rewind();
16293 {
16294 uint64_t cgen_var_1168;
16295 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1168, 1);
16296 countingStream->write((uint64_t*)&cgen_var_1168, 1 * 8);
16297 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
16298 countingStream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
16299 countingStream->write((int*)grallocUsage, sizeof(int));
16300 }
16301 uint32_t packetSize_vkGetSwapchainGrallocUsageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16302 countingStream->rewind();
16303 uint32_t opcode_vkGetSwapchainGrallocUsageANDROID = OP_vkGetSwapchainGrallocUsageANDROID;
16304 stream->write(&opcode_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
16305 stream->write(&packetSize_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
16306 uint64_t cgen_var_1169;
16307 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1169, 1);
16308 stream->write((uint64_t*)&cgen_var_1169, 1 * 8);
16309 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
16310 stream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
16311 stream->write((int*)grallocUsage, sizeof(int));
16312 stream->read((int*)grallocUsage, sizeof(int));
16313 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
16314 stream->read(&vkGetSwapchainGrallocUsageANDROID_VkResult_return, sizeof(VkResult));
16315 countingStream->clearPool();
16316 stream->clearPool();
16317 pool->freeAll();
16318 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
16319}
16320
16321VkResult VkEncoder::vkAcquireImageANDROID(
16322 VkDevice device,
16323 VkImage image,
16324 int nativeFenceFd,
16325 VkSemaphore semaphore,
16326 VkFence fence)
16327{
16328 auto stream = mImpl->stream();
16329 auto countingStream = mImpl->countingStream();
16330 auto resources = mImpl->resources();
16331 auto pool = mImpl->pool();
16332 stream->setHandleMapping(resources->unwrapMapping());
16333 VkDevice local_device;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016334 VkImage local_image;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016335 int local_nativeFenceFd;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016336 VkSemaphore local_semaphore;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016337 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016338 local_device = device;
16339 local_image = image;
16340 local_nativeFenceFd = nativeFenceFd;
16341 local_semaphore = semaphore;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016342 local_fence = fence;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -080016343 mImpl->resources()->unwrap_vkAcquireImageANDROID_nativeFenceFd(nativeFenceFd, &local_nativeFenceFd);
Lingfeng Yang808a6312018-11-13 21:06:15 -080016344 countingStream->rewind();
16345 {
16346 uint64_t cgen_var_1170;
16347 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1170, 1);
16348 countingStream->write((uint64_t*)&cgen_var_1170, 1 * 8);
16349 uint64_t cgen_var_1171;
16350 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1171, 1);
16351 countingStream->write((uint64_t*)&cgen_var_1171, 1 * 8);
16352 countingStream->write((int*)&local_nativeFenceFd, sizeof(int));
16353 uint64_t cgen_var_1172;
16354 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1172, 1);
16355 countingStream->write((uint64_t*)&cgen_var_1172, 1 * 8);
16356 uint64_t cgen_var_1173;
16357 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1173, 1);
16358 countingStream->write((uint64_t*)&cgen_var_1173, 1 * 8);
16359 }
16360 uint32_t packetSize_vkAcquireImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16361 countingStream->rewind();
16362 uint32_t opcode_vkAcquireImageANDROID = OP_vkAcquireImageANDROID;
16363 stream->write(&opcode_vkAcquireImageANDROID, sizeof(uint32_t));
16364 stream->write(&packetSize_vkAcquireImageANDROID, sizeof(uint32_t));
16365 uint64_t cgen_var_1174;
16366 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1174, 1);
16367 stream->write((uint64_t*)&cgen_var_1174, 1 * 8);
16368 uint64_t cgen_var_1175;
16369 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1175, 1);
16370 stream->write((uint64_t*)&cgen_var_1175, 1 * 8);
16371 stream->write((int*)&local_nativeFenceFd, sizeof(int));
16372 uint64_t cgen_var_1176;
16373 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1176, 1);
16374 stream->write((uint64_t*)&cgen_var_1176, 1 * 8);
16375 uint64_t cgen_var_1177;
16376 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1177, 1);
16377 stream->write((uint64_t*)&cgen_var_1177, 1 * 8);
16378 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
16379 stream->read(&vkAcquireImageANDROID_VkResult_return, sizeof(VkResult));
16380 countingStream->clearPool();
16381 stream->clearPool();
16382 pool->freeAll();
16383 return vkAcquireImageANDROID_VkResult_return;
16384}
16385
16386VkResult VkEncoder::vkQueueSignalReleaseImageANDROID(
16387 VkQueue queue,
16388 uint32_t waitSemaphoreCount,
16389 const VkSemaphore* pWaitSemaphores,
16390 VkImage image,
16391 int* pNativeFenceFd)
16392{
16393 auto stream = mImpl->stream();
16394 auto countingStream = mImpl->countingStream();
16395 auto resources = mImpl->resources();
16396 auto pool = mImpl->pool();
16397 stream->setHandleMapping(resources->unwrapMapping());
16398 VkQueue local_queue;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016399 uint32_t local_waitSemaphoreCount;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016400 VkSemaphore* local_pWaitSemaphores;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016401 VkImage local_image;
16402 local_queue = queue;
16403 local_waitSemaphoreCount = waitSemaphoreCount;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016404 local_pWaitSemaphores = nullptr;
16405 if (pWaitSemaphores)
16406 {
16407 local_pWaitSemaphores = (VkSemaphore*)pool->dupArray(pWaitSemaphores, sizeof(const VkSemaphore));
16408 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080016409 local_image = image;
16410 countingStream->rewind();
16411 {
16412 uint64_t cgen_var_1178;
16413 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1178, 1);
16414 countingStream->write((uint64_t*)&cgen_var_1178, 1 * 8);
16415 countingStream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
16416 uint64_t cgen_var_1179;
16417 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, &cgen_var_1179, 1);
16418 countingStream->write((uint64_t*)&cgen_var_1179, 8);
16419 uint64_t cgen_var_1180;
16420 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1180, 1);
16421 countingStream->write((uint64_t*)&cgen_var_1180, 1 * 8);
16422 countingStream->write((int*)pNativeFenceFd, sizeof(int));
16423 }
16424 uint32_t packetSize_vkQueueSignalReleaseImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16425 countingStream->rewind();
16426 uint32_t opcode_vkQueueSignalReleaseImageANDROID = OP_vkQueueSignalReleaseImageANDROID;
16427 stream->write(&opcode_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
16428 stream->write(&packetSize_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
16429 uint64_t cgen_var_1181;
16430 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1181, 1);
16431 stream->write((uint64_t*)&cgen_var_1181, 1 * 8);
16432 stream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
16433 uint64_t cgen_var_1182;
16434 stream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, &cgen_var_1182, 1);
16435 stream->write((uint64_t*)&cgen_var_1182, 8);
16436 uint64_t cgen_var_1183;
16437 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1183, 1);
16438 stream->write((uint64_t*)&cgen_var_1183, 1 * 8);
16439 stream->write((int*)pNativeFenceFd, sizeof(int));
16440 stream->read((int*)pNativeFenceFd, sizeof(int));
16441 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
16442 stream->read(&vkQueueSignalReleaseImageANDROID_VkResult_return, sizeof(VkResult));
16443 countingStream->clearPool();
16444 stream->clearPool();
16445 pool->freeAll();
16446 return vkQueueSignalReleaseImageANDROID_VkResult_return;
16447}
16448
16449#endif
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016450#ifdef VK_EXT_debug_report
16451VkResult VkEncoder::vkCreateDebugReportCallbackEXT(
16452 VkInstance instance,
16453 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
16454 const VkAllocationCallbacks* pAllocator,
16455 VkDebugReportCallbackEXT* pCallback)
16456{
16457 auto stream = mImpl->stream();
16458 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016459 auto resources = mImpl->resources();
16460 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016461 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016462 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016463 VkDebugReportCallbackCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016464 VkAllocationCallbacks* local_pAllocator;
16465 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016466 local_pCreateInfo = nullptr;
16467 if (pCreateInfo)
16468 {
16469 local_pCreateInfo = (VkDebugReportCallbackCreateInfoEXT*)pool->alloc(sizeof(const VkDebugReportCallbackCreateInfoEXT));
16470 deepcopy_VkDebugReportCallbackCreateInfoEXT(pool, pCreateInfo, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
16471 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016472 local_pAllocator = nullptr;
16473 if (pAllocator)
16474 {
16475 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16476 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16477 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016478 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080016479 if (local_pCreateInfo)
16480 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016481 transform_tohost_VkDebugReportCallbackCreateInfoEXT(mImpl->resources(), (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016482 }
16483 if (local_pAllocator)
16484 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016485 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016486 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016487 countingStream->rewind();
16488 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016489 uint64_t cgen_var_1184;
16490 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1184, 1);
16491 countingStream->write((uint64_t*)&cgen_var_1184, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016492 marshal_VkDebugReportCallbackCreateInfoEXT(countingStream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016493 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016494 uint64_t cgen_var_1185 = (uint64_t)(uintptr_t)local_pAllocator;
16495 countingStream->putBe64(cgen_var_1185);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016496 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016497 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016498 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016499 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080016500 uint64_t cgen_var_1186;
16501 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1186, 1);
16502 countingStream->write((uint64_t*)&cgen_var_1186, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016503 }
16504 uint32_t packetSize_vkCreateDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16505 countingStream->rewind();
16506 uint32_t opcode_vkCreateDebugReportCallbackEXT = OP_vkCreateDebugReportCallbackEXT;
16507 stream->write(&opcode_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
16508 stream->write(&packetSize_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016509 uint64_t cgen_var_1187;
16510 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1187, 1);
16511 stream->write((uint64_t*)&cgen_var_1187, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016512 marshal_VkDebugReportCallbackCreateInfoEXT(stream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016513 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016514 uint64_t cgen_var_1188 = (uint64_t)(uintptr_t)local_pAllocator;
16515 stream->putBe64(cgen_var_1188);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016516 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016517 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016518 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016519 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016520 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016521 uint64_t cgen_var_1189;
16522 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1189, 1);
16523 stream->write((uint64_t*)&cgen_var_1189, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016524 stream->setHandleMapping(resources->unwrapMapping());
16525 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080016526 uint64_t cgen_var_1190;
16527 stream->read((uint64_t*)&cgen_var_1190, 8);
16528 stream->handleMapping()->mapHandles_u64_VkDebugReportCallbackEXT(&cgen_var_1190, (VkDebugReportCallbackEXT*)pCallback, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016529 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016530 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
16531 stream->read(&vkCreateDebugReportCallbackEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016532 countingStream->clearPool();
16533 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016534 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016535 return vkCreateDebugReportCallbackEXT_VkResult_return;
16536}
16537
16538void VkEncoder::vkDestroyDebugReportCallbackEXT(
16539 VkInstance instance,
16540 VkDebugReportCallbackEXT callback,
16541 const VkAllocationCallbacks* pAllocator)
16542{
16543 auto stream = mImpl->stream();
16544 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016545 auto resources = mImpl->resources();
16546 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016547 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016548 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016549 VkDebugReportCallbackEXT local_callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016550 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016551 local_instance = instance;
16552 local_callback = callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016553 local_pAllocator = nullptr;
16554 if (pAllocator)
16555 {
16556 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16557 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16558 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016559 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080016560 if (local_pAllocator)
16561 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016562 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016563 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016564 countingStream->rewind();
16565 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016566 uint64_t cgen_var_1191;
16567 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1191, 1);
16568 countingStream->write((uint64_t*)&cgen_var_1191, 1 * 8);
16569 uint64_t cgen_var_1192;
16570 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1192, 1);
16571 countingStream->write((uint64_t*)&cgen_var_1192, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016572 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016573 uint64_t cgen_var_1193 = (uint64_t)(uintptr_t)local_pAllocator;
16574 countingStream->putBe64(cgen_var_1193);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016575 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016576 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016577 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016578 }
16579 }
16580 uint32_t packetSize_vkDestroyDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16581 countingStream->rewind();
16582 uint32_t opcode_vkDestroyDebugReportCallbackEXT = OP_vkDestroyDebugReportCallbackEXT;
16583 stream->write(&opcode_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
16584 stream->write(&packetSize_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016585 uint64_t cgen_var_1194;
16586 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1194, 1);
16587 stream->write((uint64_t*)&cgen_var_1194, 1 * 8);
16588 uint64_t cgen_var_1195;
16589 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1195, 1);
16590 stream->write((uint64_t*)&cgen_var_1195, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016591 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016592 uint64_t cgen_var_1196 = (uint64_t)(uintptr_t)local_pAllocator;
16593 stream->putBe64(cgen_var_1196);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016594 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016595 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016596 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016597 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016598 resources->destroyMapping()->mapHandles_VkDebugReportCallbackEXT((VkDebugReportCallbackEXT*)&callback);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016599}
16600
16601void VkEncoder::vkDebugReportMessageEXT(
16602 VkInstance instance,
16603 VkDebugReportFlagsEXT flags,
16604 VkDebugReportObjectTypeEXT objectType,
16605 uint64_t object,
16606 size_t location,
16607 int32_t messageCode,
16608 const char* pLayerPrefix,
16609 const char* pMessage)
16610{
16611 auto stream = mImpl->stream();
16612 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016613 auto resources = mImpl->resources();
16614 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016615 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016616 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016617 VkDebugReportFlagsEXT local_flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016618 VkDebugReportObjectTypeEXT local_objectType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016619 uint64_t local_object;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016620 size_t local_location;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016621 int32_t local_messageCode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016622 char* local_pLayerPrefix;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016623 char* local_pMessage;
16624 local_instance = instance;
16625 local_flags = flags;
16626 local_objectType = objectType;
16627 local_object = object;
16628 local_location = location;
16629 local_messageCode = messageCode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016630 local_pLayerPrefix = nullptr;
16631 if (pLayerPrefix)
16632 {
16633 local_pLayerPrefix = pool->strDup(pLayerPrefix);
16634 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016635 local_pMessage = nullptr;
16636 if (pMessage)
16637 {
16638 local_pMessage = pool->strDup(pMessage);
16639 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016640 countingStream->rewind();
16641 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016642 uint64_t cgen_var_1197;
16643 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1197, 1);
16644 countingStream->write((uint64_t*)&cgen_var_1197, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016645 countingStream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
16646 countingStream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
16647 countingStream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016648 uint64_t cgen_var_1198 = (uint64_t)local_location;
16649 countingStream->putBe64(cgen_var_1198);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016650 countingStream->write((int32_t*)&local_messageCode, sizeof(int32_t));
16651 countingStream->putString(local_pLayerPrefix);
16652 countingStream->putString(local_pMessage);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016653 }
16654 uint32_t packetSize_vkDebugReportMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16655 countingStream->rewind();
16656 uint32_t opcode_vkDebugReportMessageEXT = OP_vkDebugReportMessageEXT;
16657 stream->write(&opcode_vkDebugReportMessageEXT, sizeof(uint32_t));
16658 stream->write(&packetSize_vkDebugReportMessageEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016659 uint64_t cgen_var_1199;
16660 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1199, 1);
16661 stream->write((uint64_t*)&cgen_var_1199, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016662 stream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
16663 stream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
16664 stream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016665 uint64_t cgen_var_1200 = (uint64_t)local_location;
16666 stream->putBe64(cgen_var_1200);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016667 stream->write((int32_t*)&local_messageCode, sizeof(int32_t));
16668 stream->putString(local_pLayerPrefix);
16669 stream->putString(local_pMessage);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016670}
16671
16672#endif
16673#ifdef VK_NV_glsl_shader
16674#endif
16675#ifdef VK_EXT_depth_range_unrestricted
16676#endif
16677#ifdef VK_IMG_filter_cubic
16678#endif
16679#ifdef VK_AMD_rasterization_order
16680#endif
16681#ifdef VK_AMD_shader_trinary_minmax
16682#endif
16683#ifdef VK_AMD_shader_explicit_vertex_parameter
16684#endif
16685#ifdef VK_EXT_debug_marker
16686VkResult VkEncoder::vkDebugMarkerSetObjectTagEXT(
16687 VkDevice device,
16688 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
16689{
16690 auto stream = mImpl->stream();
16691 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016692 auto resources = mImpl->resources();
16693 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016694 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016695 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016696 VkDebugMarkerObjectTagInfoEXT* local_pTagInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016697 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016698 local_pTagInfo = nullptr;
16699 if (pTagInfo)
16700 {
16701 local_pTagInfo = (VkDebugMarkerObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectTagInfoEXT));
16702 deepcopy_VkDebugMarkerObjectTagInfoEXT(pool, pTagInfo, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
16703 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016704 if (local_pTagInfo)
16705 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016706 transform_tohost_VkDebugMarkerObjectTagInfoEXT(mImpl->resources(), (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016707 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016708 countingStream->rewind();
16709 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016710 uint64_t cgen_var_1201;
16711 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1201, 1);
16712 countingStream->write((uint64_t*)&cgen_var_1201, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016713 marshal_VkDebugMarkerObjectTagInfoEXT(countingStream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016714 }
16715 uint32_t packetSize_vkDebugMarkerSetObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16716 countingStream->rewind();
16717 uint32_t opcode_vkDebugMarkerSetObjectTagEXT = OP_vkDebugMarkerSetObjectTagEXT;
16718 stream->write(&opcode_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
16719 stream->write(&packetSize_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016720 uint64_t cgen_var_1202;
16721 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1202, 1);
16722 stream->write((uint64_t*)&cgen_var_1202, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016723 marshal_VkDebugMarkerObjectTagInfoEXT(stream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016724 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
16725 stream->read(&vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016726 countingStream->clearPool();
16727 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016728 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016729 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
16730}
16731
16732VkResult VkEncoder::vkDebugMarkerSetObjectNameEXT(
16733 VkDevice device,
16734 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
16735{
16736 auto stream = mImpl->stream();
16737 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016738 auto resources = mImpl->resources();
16739 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016740 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016741 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016742 VkDebugMarkerObjectNameInfoEXT* local_pNameInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016743 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016744 local_pNameInfo = nullptr;
16745 if (pNameInfo)
16746 {
16747 local_pNameInfo = (VkDebugMarkerObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectNameInfoEXT));
16748 deepcopy_VkDebugMarkerObjectNameInfoEXT(pool, pNameInfo, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
16749 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016750 if (local_pNameInfo)
16751 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016752 transform_tohost_VkDebugMarkerObjectNameInfoEXT(mImpl->resources(), (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016753 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016754 countingStream->rewind();
16755 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016756 uint64_t cgen_var_1203;
16757 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1203, 1);
16758 countingStream->write((uint64_t*)&cgen_var_1203, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016759 marshal_VkDebugMarkerObjectNameInfoEXT(countingStream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016760 }
16761 uint32_t packetSize_vkDebugMarkerSetObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16762 countingStream->rewind();
16763 uint32_t opcode_vkDebugMarkerSetObjectNameEXT = OP_vkDebugMarkerSetObjectNameEXT;
16764 stream->write(&opcode_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
16765 stream->write(&packetSize_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016766 uint64_t cgen_var_1204;
16767 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1204, 1);
16768 stream->write((uint64_t*)&cgen_var_1204, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016769 marshal_VkDebugMarkerObjectNameInfoEXT(stream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016770 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
16771 stream->read(&vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016772 countingStream->clearPool();
16773 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016774 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016775 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
16776}
16777
16778void VkEncoder::vkCmdDebugMarkerBeginEXT(
16779 VkCommandBuffer commandBuffer,
16780 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
16781{
16782 auto stream = mImpl->stream();
16783 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016784 auto resources = mImpl->resources();
16785 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016786 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016787 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016788 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016789 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016790 local_pMarkerInfo = nullptr;
16791 if (pMarkerInfo)
16792 {
16793 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
16794 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
16795 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016796 if (local_pMarkerInfo)
16797 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016798 transform_tohost_VkDebugMarkerMarkerInfoEXT(mImpl->resources(), (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016799 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016800 countingStream->rewind();
16801 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016802 uint64_t cgen_var_1205;
16803 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1205, 1);
16804 countingStream->write((uint64_t*)&cgen_var_1205, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016805 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016806 }
16807 uint32_t packetSize_vkCmdDebugMarkerBeginEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16808 countingStream->rewind();
16809 uint32_t opcode_vkCmdDebugMarkerBeginEXT = OP_vkCmdDebugMarkerBeginEXT;
16810 stream->write(&opcode_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
16811 stream->write(&packetSize_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016812 uint64_t cgen_var_1206;
16813 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1206, 1);
16814 stream->write((uint64_t*)&cgen_var_1206, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016815 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016816}
16817
16818void VkEncoder::vkCmdDebugMarkerEndEXT(
16819 VkCommandBuffer commandBuffer)
16820{
16821 auto stream = mImpl->stream();
16822 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016823 auto resources = mImpl->resources();
16824 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016825 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016826 VkCommandBuffer local_commandBuffer;
16827 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016828 countingStream->rewind();
16829 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016830 uint64_t cgen_var_1207;
16831 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1207, 1);
16832 countingStream->write((uint64_t*)&cgen_var_1207, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016833 }
16834 uint32_t packetSize_vkCmdDebugMarkerEndEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16835 countingStream->rewind();
16836 uint32_t opcode_vkCmdDebugMarkerEndEXT = OP_vkCmdDebugMarkerEndEXT;
16837 stream->write(&opcode_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
16838 stream->write(&packetSize_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016839 uint64_t cgen_var_1208;
16840 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1208, 1);
16841 stream->write((uint64_t*)&cgen_var_1208, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016842}
16843
16844void VkEncoder::vkCmdDebugMarkerInsertEXT(
16845 VkCommandBuffer commandBuffer,
16846 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
16847{
16848 auto stream = mImpl->stream();
16849 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016850 auto resources = mImpl->resources();
16851 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016852 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016853 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016854 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016855 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016856 local_pMarkerInfo = nullptr;
16857 if (pMarkerInfo)
16858 {
16859 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
16860 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
16861 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016862 if (local_pMarkerInfo)
16863 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016864 transform_tohost_VkDebugMarkerMarkerInfoEXT(mImpl->resources(), (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016865 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016866 countingStream->rewind();
16867 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016868 uint64_t cgen_var_1209;
16869 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1209, 1);
16870 countingStream->write((uint64_t*)&cgen_var_1209, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016871 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016872 }
16873 uint32_t packetSize_vkCmdDebugMarkerInsertEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16874 countingStream->rewind();
16875 uint32_t opcode_vkCmdDebugMarkerInsertEXT = OP_vkCmdDebugMarkerInsertEXT;
16876 stream->write(&opcode_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
16877 stream->write(&packetSize_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016878 uint64_t cgen_var_1210;
16879 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1210, 1);
16880 stream->write((uint64_t*)&cgen_var_1210, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016881 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016882}
16883
16884#endif
16885#ifdef VK_AMD_gcn_shader
16886#endif
16887#ifdef VK_NV_dedicated_allocation
16888#endif
16889#ifdef VK_AMD_draw_indirect_count
16890void VkEncoder::vkCmdDrawIndirectCountAMD(
16891 VkCommandBuffer commandBuffer,
16892 VkBuffer buffer,
16893 VkDeviceSize offset,
16894 VkBuffer countBuffer,
16895 VkDeviceSize countBufferOffset,
16896 uint32_t maxDrawCount,
16897 uint32_t stride)
16898{
16899 auto stream = mImpl->stream();
16900 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016901 auto resources = mImpl->resources();
16902 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016903 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016904 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016905 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016906 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016907 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016908 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016909 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016910 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016911 local_commandBuffer = commandBuffer;
16912 local_buffer = buffer;
16913 local_offset = offset;
16914 local_countBuffer = countBuffer;
16915 local_countBufferOffset = countBufferOffset;
16916 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016917 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016918 countingStream->rewind();
16919 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016920 uint64_t cgen_var_1211;
16921 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1211, 1);
16922 countingStream->write((uint64_t*)&cgen_var_1211, 1 * 8);
16923 uint64_t cgen_var_1212;
16924 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1212, 1);
16925 countingStream->write((uint64_t*)&cgen_var_1212, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016926 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016927 uint64_t cgen_var_1213;
16928 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1213, 1);
16929 countingStream->write((uint64_t*)&cgen_var_1213, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016930 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16931 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16932 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016933 }
16934 uint32_t packetSize_vkCmdDrawIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16935 countingStream->rewind();
16936 uint32_t opcode_vkCmdDrawIndirectCountAMD = OP_vkCmdDrawIndirectCountAMD;
16937 stream->write(&opcode_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
16938 stream->write(&packetSize_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016939 uint64_t cgen_var_1214;
16940 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1214, 1);
16941 stream->write((uint64_t*)&cgen_var_1214, 1 * 8);
16942 uint64_t cgen_var_1215;
16943 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1215, 1);
16944 stream->write((uint64_t*)&cgen_var_1215, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016945 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016946 uint64_t cgen_var_1216;
16947 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1216, 1);
16948 stream->write((uint64_t*)&cgen_var_1216, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016949 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16950 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16951 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016952}
16953
16954void VkEncoder::vkCmdDrawIndexedIndirectCountAMD(
16955 VkCommandBuffer commandBuffer,
16956 VkBuffer buffer,
16957 VkDeviceSize offset,
16958 VkBuffer countBuffer,
16959 VkDeviceSize countBufferOffset,
16960 uint32_t maxDrawCount,
16961 uint32_t stride)
16962{
16963 auto stream = mImpl->stream();
16964 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016965 auto resources = mImpl->resources();
16966 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016967 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016968 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016969 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016970 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016971 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016972 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016973 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016974 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016975 local_commandBuffer = commandBuffer;
16976 local_buffer = buffer;
16977 local_offset = offset;
16978 local_countBuffer = countBuffer;
16979 local_countBufferOffset = countBufferOffset;
16980 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016981 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016982 countingStream->rewind();
16983 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016984 uint64_t cgen_var_1217;
16985 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1217, 1);
16986 countingStream->write((uint64_t*)&cgen_var_1217, 1 * 8);
16987 uint64_t cgen_var_1218;
16988 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1218, 1);
16989 countingStream->write((uint64_t*)&cgen_var_1218, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016990 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016991 uint64_t cgen_var_1219;
16992 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1219, 1);
16993 countingStream->write((uint64_t*)&cgen_var_1219, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016994 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16995 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16996 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016997 }
16998 uint32_t packetSize_vkCmdDrawIndexedIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16999 countingStream->rewind();
17000 uint32_t opcode_vkCmdDrawIndexedIndirectCountAMD = OP_vkCmdDrawIndexedIndirectCountAMD;
17001 stream->write(&opcode_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
17002 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017003 uint64_t cgen_var_1220;
17004 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1220, 1);
17005 stream->write((uint64_t*)&cgen_var_1220, 1 * 8);
17006 uint64_t cgen_var_1221;
17007 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1221, 1);
17008 stream->write((uint64_t*)&cgen_var_1221, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017009 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017010 uint64_t cgen_var_1222;
17011 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1222, 1);
17012 stream->write((uint64_t*)&cgen_var_1222, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017013 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17014 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17015 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017016}
17017
17018#endif
17019#ifdef VK_AMD_negative_viewport_height
17020#endif
17021#ifdef VK_AMD_gpu_shader_half_float
17022#endif
17023#ifdef VK_AMD_shader_ballot
17024#endif
17025#ifdef VK_AMD_texture_gather_bias_lod
17026#endif
17027#ifdef VK_AMD_shader_info
17028VkResult VkEncoder::vkGetShaderInfoAMD(
17029 VkDevice device,
17030 VkPipeline pipeline,
17031 VkShaderStageFlagBits shaderStage,
17032 VkShaderInfoTypeAMD infoType,
17033 size_t* pInfoSize,
17034 void* pInfo)
17035{
17036 auto stream = mImpl->stream();
17037 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017038 auto resources = mImpl->resources();
17039 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017040 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017041 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017042 VkPipeline local_pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017043 VkShaderStageFlagBits local_shaderStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017044 VkShaderInfoTypeAMD local_infoType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017045 local_device = device;
17046 local_pipeline = pipeline;
17047 local_shaderStage = shaderStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017048 local_infoType = infoType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017049 countingStream->rewind();
17050 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017051 uint64_t cgen_var_1223;
17052 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1223, 1);
17053 countingStream->write((uint64_t*)&cgen_var_1223, 1 * 8);
17054 uint64_t cgen_var_1224;
17055 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1224, 1);
17056 countingStream->write((uint64_t*)&cgen_var_1224, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017057 countingStream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
17058 countingStream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017059 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017060 uint64_t cgen_var_1225 = (uint64_t)(uintptr_t)pInfoSize;
17061 countingStream->putBe64(cgen_var_1225);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017062 if (pInfoSize)
17063 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017064 uint64_t cgen_var_1226 = (uint64_t)(*pInfoSize);
17065 countingStream->putBe64(cgen_var_1226);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017066 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017067 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017068 uint64_t cgen_var_1227 = (uint64_t)(uintptr_t)pInfo;
17069 countingStream->putBe64(cgen_var_1227);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017070 if (pInfo)
17071 {
17072 countingStream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
17073 }
17074 }
17075 uint32_t packetSize_vkGetShaderInfoAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17076 countingStream->rewind();
17077 uint32_t opcode_vkGetShaderInfoAMD = OP_vkGetShaderInfoAMD;
17078 stream->write(&opcode_vkGetShaderInfoAMD, sizeof(uint32_t));
17079 stream->write(&packetSize_vkGetShaderInfoAMD, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017080 uint64_t cgen_var_1228;
17081 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1228, 1);
17082 stream->write((uint64_t*)&cgen_var_1228, 1 * 8);
17083 uint64_t cgen_var_1229;
17084 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1229, 1);
17085 stream->write((uint64_t*)&cgen_var_1229, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017086 stream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
17087 stream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017088 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017089 uint64_t cgen_var_1230 = (uint64_t)(uintptr_t)pInfoSize;
17090 stream->putBe64(cgen_var_1230);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017091 if (pInfoSize)
17092 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017093 uint64_t cgen_var_1231 = (uint64_t)(*pInfoSize);
17094 stream->putBe64(cgen_var_1231);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017095 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017096 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017097 uint64_t cgen_var_1232 = (uint64_t)(uintptr_t)pInfo;
17098 stream->putBe64(cgen_var_1232);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017099 if (pInfo)
17100 {
17101 stream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
17102 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017103 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017104 size_t* check_pInfoSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017105 check_pInfoSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017106 if (pInfoSize)
17107 {
17108 if (!(check_pInfoSize))
17109 {
17110 fprintf(stderr, "fatal: pInfoSize inconsistent between guest and host\n");
17111 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017112 (*pInfoSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017113 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017114 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017115 void* check_pInfo;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017116 check_pInfo = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017117 if (pInfo)
17118 {
17119 if (!(check_pInfo))
17120 {
17121 fprintf(stderr, "fatal: pInfo inconsistent between guest and host\n");
17122 }
17123 stream->read((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
17124 }
17125 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
17126 stream->read(&vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017127 countingStream->clearPool();
17128 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017129 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017130 return vkGetShaderInfoAMD_VkResult_return;
17131}
17132
17133#endif
17134#ifdef VK_AMD_shader_image_load_store_lod
17135#endif
17136#ifdef VK_IMG_format_pvrtc
17137#endif
17138#ifdef VK_NV_external_memory_capabilities
17139VkResult VkEncoder::vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
17140 VkPhysicalDevice physicalDevice,
17141 VkFormat format,
17142 VkImageType type,
17143 VkImageTiling tiling,
17144 VkImageUsageFlags usage,
17145 VkImageCreateFlags flags,
17146 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
17147 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
17148{
17149 auto stream = mImpl->stream();
17150 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017151 auto resources = mImpl->resources();
17152 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017153 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017154 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017155 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017156 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017157 VkImageTiling local_tiling;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017158 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017159 VkImageCreateFlags local_flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017160 VkExternalMemoryHandleTypeFlagsNV local_externalHandleType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017161 local_physicalDevice = physicalDevice;
17162 local_format = format;
17163 local_type = type;
17164 local_tiling = tiling;
17165 local_usage = usage;
17166 local_flags = flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017167 local_externalHandleType = externalHandleType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017168 countingStream->rewind();
17169 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017170 uint64_t cgen_var_1236;
17171 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1236, 1);
17172 countingStream->write((uint64_t*)&cgen_var_1236, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017173 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
17174 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
17175 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
17176 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
17177 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
17178 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017179 marshal_VkExternalImageFormatPropertiesNV(countingStream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
17180 }
17181 uint32_t packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17182 countingStream->rewind();
17183 uint32_t opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
17184 stream->write(&opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
17185 stream->write(&packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017186 uint64_t cgen_var_1237;
17187 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1237, 1);
17188 stream->write((uint64_t*)&cgen_var_1237, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017189 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
17190 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
17191 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
17192 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
17193 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
17194 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017195 marshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
17196 unmarshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080017197 if (pExternalImageFormatProperties)
17198 {
17199 transform_fromhost_VkExternalImageFormatPropertiesNV(mImpl->resources(), (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
17200 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017201 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
17202 stream->read(&vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017203 countingStream->clearPool();
17204 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017205 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017206 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
17207}
17208
17209#endif
17210#ifdef VK_NV_external_memory
17211#endif
17212#ifdef VK_NV_external_memory_win32
17213VkResult VkEncoder::vkGetMemoryWin32HandleNV(
17214 VkDevice device,
17215 VkDeviceMemory memory,
17216 VkExternalMemoryHandleTypeFlagsNV handleType,
17217 HANDLE* pHandle)
17218{
17219 auto stream = mImpl->stream();
17220 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017221 auto resources = mImpl->resources();
17222 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017223 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017224 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017225 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017226 VkExternalMemoryHandleTypeFlagsNV local_handleType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017227 local_device = device;
17228 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017229 local_handleType = handleType;
Lingfeng Yangafe29d32018-12-25 13:01:52 -080017230 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017231 countingStream->rewind();
17232 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017233 uint64_t cgen_var_1238;
17234 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1238, 1);
17235 countingStream->write((uint64_t*)&cgen_var_1238, 1 * 8);
17236 uint64_t cgen_var_1239;
17237 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1239, 1);
17238 countingStream->write((uint64_t*)&cgen_var_1239, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017239 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017240 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
17241 }
17242 uint32_t packetSize_vkGetMemoryWin32HandleNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17243 countingStream->rewind();
17244 uint32_t opcode_vkGetMemoryWin32HandleNV = OP_vkGetMemoryWin32HandleNV;
17245 stream->write(&opcode_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
17246 stream->write(&packetSize_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017247 uint64_t cgen_var_1240;
17248 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1240, 1);
17249 stream->write((uint64_t*)&cgen_var_1240, 1 * 8);
17250 uint64_t cgen_var_1241;
17251 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1241, 1);
17252 stream->write((uint64_t*)&cgen_var_1241, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017253 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017254 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
17255 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
17256 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
17257 stream->read(&vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017258 countingStream->clearPool();
17259 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017260 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017261 return vkGetMemoryWin32HandleNV_VkResult_return;
17262}
17263
17264#endif
17265#ifdef VK_NV_win32_keyed_mutex
17266#endif
17267#ifdef VK_EXT_validation_flags
17268#endif
17269#ifdef VK_NN_vi_surface
17270VkResult VkEncoder::vkCreateViSurfaceNN(
17271 VkInstance instance,
17272 const VkViSurfaceCreateInfoNN* pCreateInfo,
17273 const VkAllocationCallbacks* pAllocator,
17274 VkSurfaceKHR* pSurface)
17275{
17276 auto stream = mImpl->stream();
17277 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017278 auto resources = mImpl->resources();
17279 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017280 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017281 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017282 VkViSurfaceCreateInfoNN* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017283 VkAllocationCallbacks* local_pAllocator;
17284 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017285 local_pCreateInfo = nullptr;
17286 if (pCreateInfo)
17287 {
17288 local_pCreateInfo = (VkViSurfaceCreateInfoNN*)pool->alloc(sizeof(const VkViSurfaceCreateInfoNN));
17289 deepcopy_VkViSurfaceCreateInfoNN(pool, pCreateInfo, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
17290 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017291 local_pAllocator = nullptr;
17292 if (pAllocator)
17293 {
17294 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17295 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17296 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017297 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017298 if (local_pCreateInfo)
17299 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017300 transform_tohost_VkViSurfaceCreateInfoNN(mImpl->resources(), (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017301 }
17302 if (local_pAllocator)
17303 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017304 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017305 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017306 countingStream->rewind();
17307 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017308 uint64_t cgen_var_1242;
17309 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1242, 1);
17310 countingStream->write((uint64_t*)&cgen_var_1242, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017311 marshal_VkViSurfaceCreateInfoNN(countingStream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017312 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017313 uint64_t cgen_var_1243 = (uint64_t)(uintptr_t)local_pAllocator;
17314 countingStream->putBe64(cgen_var_1243);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017315 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017316 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017317 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017318 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017319 uint64_t cgen_var_1244;
17320 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1244, 1);
17321 countingStream->write((uint64_t*)&cgen_var_1244, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017322 }
17323 uint32_t packetSize_vkCreateViSurfaceNN = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17324 countingStream->rewind();
17325 uint32_t opcode_vkCreateViSurfaceNN = OP_vkCreateViSurfaceNN;
17326 stream->write(&opcode_vkCreateViSurfaceNN, sizeof(uint32_t));
17327 stream->write(&packetSize_vkCreateViSurfaceNN, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017328 uint64_t cgen_var_1245;
17329 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1245, 1);
17330 stream->write((uint64_t*)&cgen_var_1245, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017331 marshal_VkViSurfaceCreateInfoNN(stream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017332 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017333 uint64_t cgen_var_1246 = (uint64_t)(uintptr_t)local_pAllocator;
17334 stream->putBe64(cgen_var_1246);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017335 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017336 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017337 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017338 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017339 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017340 uint64_t cgen_var_1247;
17341 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1247, 1);
17342 stream->write((uint64_t*)&cgen_var_1247, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017343 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080017344 uint64_t cgen_var_1248;
17345 stream->read((uint64_t*)&cgen_var_1248, 8);
17346 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1248, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017347 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
17348 stream->read(&vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017349 countingStream->clearPool();
17350 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017351 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017352 return vkCreateViSurfaceNN_VkResult_return;
17353}
17354
17355#endif
17356#ifdef VK_EXT_shader_subgroup_ballot
17357#endif
17358#ifdef VK_EXT_shader_subgroup_vote
17359#endif
17360#ifdef VK_EXT_conditional_rendering
17361void VkEncoder::vkCmdBeginConditionalRenderingEXT(
17362 VkCommandBuffer commandBuffer,
17363 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
17364{
17365 auto stream = mImpl->stream();
17366 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017367 auto resources = mImpl->resources();
17368 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017369 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017370 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017371 VkConditionalRenderingBeginInfoEXT* local_pConditionalRenderingBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017372 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017373 local_pConditionalRenderingBegin = nullptr;
17374 if (pConditionalRenderingBegin)
17375 {
17376 local_pConditionalRenderingBegin = (VkConditionalRenderingBeginInfoEXT*)pool->alloc(sizeof(const VkConditionalRenderingBeginInfoEXT));
17377 deepcopy_VkConditionalRenderingBeginInfoEXT(pool, pConditionalRenderingBegin, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
17378 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017379 if (local_pConditionalRenderingBegin)
17380 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017381 transform_tohost_VkConditionalRenderingBeginInfoEXT(mImpl->resources(), (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017382 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017383 countingStream->rewind();
17384 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017385 uint64_t cgen_var_1249;
17386 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1249, 1);
17387 countingStream->write((uint64_t*)&cgen_var_1249, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017388 marshal_VkConditionalRenderingBeginInfoEXT(countingStream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017389 }
17390 uint32_t packetSize_vkCmdBeginConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17391 countingStream->rewind();
17392 uint32_t opcode_vkCmdBeginConditionalRenderingEXT = OP_vkCmdBeginConditionalRenderingEXT;
17393 stream->write(&opcode_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
17394 stream->write(&packetSize_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017395 uint64_t cgen_var_1250;
17396 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1250, 1);
17397 stream->write((uint64_t*)&cgen_var_1250, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017398 marshal_VkConditionalRenderingBeginInfoEXT(stream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017399}
17400
17401void VkEncoder::vkCmdEndConditionalRenderingEXT(
17402 VkCommandBuffer commandBuffer)
17403{
17404 auto stream = mImpl->stream();
17405 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017406 auto resources = mImpl->resources();
17407 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017408 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017409 VkCommandBuffer local_commandBuffer;
17410 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017411 countingStream->rewind();
17412 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017413 uint64_t cgen_var_1251;
17414 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1251, 1);
17415 countingStream->write((uint64_t*)&cgen_var_1251, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017416 }
17417 uint32_t packetSize_vkCmdEndConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17418 countingStream->rewind();
17419 uint32_t opcode_vkCmdEndConditionalRenderingEXT = OP_vkCmdEndConditionalRenderingEXT;
17420 stream->write(&opcode_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
17421 stream->write(&packetSize_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017422 uint64_t cgen_var_1252;
17423 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1252, 1);
17424 stream->write((uint64_t*)&cgen_var_1252, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017425}
17426
17427#endif
17428#ifdef VK_NVX_device_generated_commands
17429void VkEncoder::vkCmdProcessCommandsNVX(
17430 VkCommandBuffer commandBuffer,
17431 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
17432{
17433 auto stream = mImpl->stream();
17434 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017435 auto resources = mImpl->resources();
17436 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017437 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017438 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017439 VkCmdProcessCommandsInfoNVX* local_pProcessCommandsInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017440 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017441 local_pProcessCommandsInfo = nullptr;
17442 if (pProcessCommandsInfo)
17443 {
17444 local_pProcessCommandsInfo = (VkCmdProcessCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdProcessCommandsInfoNVX));
17445 deepcopy_VkCmdProcessCommandsInfoNVX(pool, pProcessCommandsInfo, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
17446 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017447 if (local_pProcessCommandsInfo)
17448 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017449 transform_tohost_VkCmdProcessCommandsInfoNVX(mImpl->resources(), (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017450 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017451 countingStream->rewind();
17452 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017453 uint64_t cgen_var_1253;
17454 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1253, 1);
17455 countingStream->write((uint64_t*)&cgen_var_1253, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017456 marshal_VkCmdProcessCommandsInfoNVX(countingStream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017457 }
17458 uint32_t packetSize_vkCmdProcessCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17459 countingStream->rewind();
17460 uint32_t opcode_vkCmdProcessCommandsNVX = OP_vkCmdProcessCommandsNVX;
17461 stream->write(&opcode_vkCmdProcessCommandsNVX, sizeof(uint32_t));
17462 stream->write(&packetSize_vkCmdProcessCommandsNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017463 uint64_t cgen_var_1254;
17464 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1254, 1);
17465 stream->write((uint64_t*)&cgen_var_1254, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017466 marshal_VkCmdProcessCommandsInfoNVX(stream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017467}
17468
17469void VkEncoder::vkCmdReserveSpaceForCommandsNVX(
17470 VkCommandBuffer commandBuffer,
17471 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
17472{
17473 auto stream = mImpl->stream();
17474 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017475 auto resources = mImpl->resources();
17476 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017477 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017478 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017479 VkCmdReserveSpaceForCommandsInfoNVX* local_pReserveSpaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017480 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017481 local_pReserveSpaceInfo = nullptr;
17482 if (pReserveSpaceInfo)
17483 {
17484 local_pReserveSpaceInfo = (VkCmdReserveSpaceForCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdReserveSpaceForCommandsInfoNVX));
17485 deepcopy_VkCmdReserveSpaceForCommandsInfoNVX(pool, pReserveSpaceInfo, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
17486 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017487 if (local_pReserveSpaceInfo)
17488 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017489 transform_tohost_VkCmdReserveSpaceForCommandsInfoNVX(mImpl->resources(), (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017490 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017491 countingStream->rewind();
17492 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017493 uint64_t cgen_var_1255;
17494 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1255, 1);
17495 countingStream->write((uint64_t*)&cgen_var_1255, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017496 marshal_VkCmdReserveSpaceForCommandsInfoNVX(countingStream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017497 }
17498 uint32_t packetSize_vkCmdReserveSpaceForCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17499 countingStream->rewind();
17500 uint32_t opcode_vkCmdReserveSpaceForCommandsNVX = OP_vkCmdReserveSpaceForCommandsNVX;
17501 stream->write(&opcode_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
17502 stream->write(&packetSize_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017503 uint64_t cgen_var_1256;
17504 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1256, 1);
17505 stream->write((uint64_t*)&cgen_var_1256, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017506 marshal_VkCmdReserveSpaceForCommandsInfoNVX(stream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017507}
17508
17509VkResult VkEncoder::vkCreateIndirectCommandsLayoutNVX(
17510 VkDevice device,
17511 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
17512 const VkAllocationCallbacks* pAllocator,
17513 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
17514{
17515 auto stream = mImpl->stream();
17516 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017517 auto resources = mImpl->resources();
17518 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017519 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017520 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017521 VkIndirectCommandsLayoutCreateInfoNVX* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017522 VkAllocationCallbacks* local_pAllocator;
17523 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017524 local_pCreateInfo = nullptr;
17525 if (pCreateInfo)
17526 {
17527 local_pCreateInfo = (VkIndirectCommandsLayoutCreateInfoNVX*)pool->alloc(sizeof(const VkIndirectCommandsLayoutCreateInfoNVX));
17528 deepcopy_VkIndirectCommandsLayoutCreateInfoNVX(pool, pCreateInfo, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
17529 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017530 local_pAllocator = nullptr;
17531 if (pAllocator)
17532 {
17533 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17534 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17535 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017536 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017537 if (local_pCreateInfo)
17538 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017539 transform_tohost_VkIndirectCommandsLayoutCreateInfoNVX(mImpl->resources(), (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017540 }
17541 if (local_pAllocator)
17542 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017543 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017544 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017545 countingStream->rewind();
17546 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017547 uint64_t cgen_var_1257;
17548 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1257, 1);
17549 countingStream->write((uint64_t*)&cgen_var_1257, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017550 marshal_VkIndirectCommandsLayoutCreateInfoNVX(countingStream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017551 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017552 uint64_t cgen_var_1258 = (uint64_t)(uintptr_t)local_pAllocator;
17553 countingStream->putBe64(cgen_var_1258);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017554 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017555 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017556 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017557 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017558 uint64_t cgen_var_1259;
17559 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1259, 1);
17560 countingStream->write((uint64_t*)&cgen_var_1259, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017561 }
17562 uint32_t packetSize_vkCreateIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17563 countingStream->rewind();
17564 uint32_t opcode_vkCreateIndirectCommandsLayoutNVX = OP_vkCreateIndirectCommandsLayoutNVX;
17565 stream->write(&opcode_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
17566 stream->write(&packetSize_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017567 uint64_t cgen_var_1260;
17568 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1260, 1);
17569 stream->write((uint64_t*)&cgen_var_1260, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017570 marshal_VkIndirectCommandsLayoutCreateInfoNVX(stream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017571 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017572 uint64_t cgen_var_1261 = (uint64_t)(uintptr_t)local_pAllocator;
17573 stream->putBe64(cgen_var_1261);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017574 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017575 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017576 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017577 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017578 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017579 uint64_t cgen_var_1262;
17580 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1262, 1);
17581 stream->write((uint64_t*)&cgen_var_1262, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017582 stream->setHandleMapping(resources->unwrapMapping());
17583 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080017584 uint64_t cgen_var_1263;
17585 stream->read((uint64_t*)&cgen_var_1263, 8);
17586 stream->handleMapping()->mapHandles_u64_VkIndirectCommandsLayoutNVX(&cgen_var_1263, (VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017587 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017588 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
17589 stream->read(&vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017590 countingStream->clearPool();
17591 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017592 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017593 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
17594}
17595
17596void VkEncoder::vkDestroyIndirectCommandsLayoutNVX(
17597 VkDevice device,
17598 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
17599 const VkAllocationCallbacks* pAllocator)
17600{
17601 auto stream = mImpl->stream();
17602 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017603 auto resources = mImpl->resources();
17604 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017605 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017606 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017607 VkIndirectCommandsLayoutNVX local_indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017608 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017609 local_device = device;
17610 local_indirectCommandsLayout = indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017611 local_pAllocator = nullptr;
17612 if (pAllocator)
17613 {
17614 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17615 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17616 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017617 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017618 if (local_pAllocator)
17619 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017620 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017621 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017622 countingStream->rewind();
17623 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017624 uint64_t cgen_var_1264;
17625 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1264, 1);
17626 countingStream->write((uint64_t*)&cgen_var_1264, 1 * 8);
17627 uint64_t cgen_var_1265;
17628 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1265, 1);
17629 countingStream->write((uint64_t*)&cgen_var_1265, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017630 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017631 uint64_t cgen_var_1266 = (uint64_t)(uintptr_t)local_pAllocator;
17632 countingStream->putBe64(cgen_var_1266);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017633 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017634 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017635 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017636 }
17637 }
17638 uint32_t packetSize_vkDestroyIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17639 countingStream->rewind();
17640 uint32_t opcode_vkDestroyIndirectCommandsLayoutNVX = OP_vkDestroyIndirectCommandsLayoutNVX;
17641 stream->write(&opcode_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
17642 stream->write(&packetSize_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017643 uint64_t cgen_var_1267;
17644 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1267, 1);
17645 stream->write((uint64_t*)&cgen_var_1267, 1 * 8);
17646 uint64_t cgen_var_1268;
17647 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1268, 1);
17648 stream->write((uint64_t*)&cgen_var_1268, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017649 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017650 uint64_t cgen_var_1269 = (uint64_t)(uintptr_t)local_pAllocator;
17651 stream->putBe64(cgen_var_1269);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017652 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017653 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017654 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017655 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017656 resources->destroyMapping()->mapHandles_VkIndirectCommandsLayoutNVX((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017657}
17658
17659VkResult VkEncoder::vkCreateObjectTableNVX(
17660 VkDevice device,
17661 const VkObjectTableCreateInfoNVX* pCreateInfo,
17662 const VkAllocationCallbacks* pAllocator,
17663 VkObjectTableNVX* pObjectTable)
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 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017671 VkObjectTableCreateInfoNVX* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017672 VkAllocationCallbacks* local_pAllocator;
17673 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017674 local_pCreateInfo = nullptr;
17675 if (pCreateInfo)
17676 {
17677 local_pCreateInfo = (VkObjectTableCreateInfoNVX*)pool->alloc(sizeof(const VkObjectTableCreateInfoNVX));
17678 deepcopy_VkObjectTableCreateInfoNVX(pool, pCreateInfo, (VkObjectTableCreateInfoNVX*)(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 Yang62b23322018-12-24 12:45:47 -080017687 if (local_pCreateInfo)
17688 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017689 transform_tohost_VkObjectTableCreateInfoNVX(mImpl->resources(), (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017690 }
17691 if (local_pAllocator)
17692 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017693 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017694 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017695 countingStream->rewind();
17696 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017697 uint64_t cgen_var_1270;
17698 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1270, 1);
17699 countingStream->write((uint64_t*)&cgen_var_1270, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017700 marshal_VkObjectTableCreateInfoNVX(countingStream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017701 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017702 uint64_t cgen_var_1271 = (uint64_t)(uintptr_t)local_pAllocator;
17703 countingStream->putBe64(cgen_var_1271);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017704 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017705 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017706 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017707 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017708 uint64_t cgen_var_1272;
17709 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1272, 1);
17710 countingStream->write((uint64_t*)&cgen_var_1272, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017711 }
17712 uint32_t packetSize_vkCreateObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17713 countingStream->rewind();
17714 uint32_t opcode_vkCreateObjectTableNVX = OP_vkCreateObjectTableNVX;
17715 stream->write(&opcode_vkCreateObjectTableNVX, sizeof(uint32_t));
17716 stream->write(&packetSize_vkCreateObjectTableNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017717 uint64_t cgen_var_1273;
17718 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1273, 1);
17719 stream->write((uint64_t*)&cgen_var_1273, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017720 marshal_VkObjectTableCreateInfoNVX(stream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017721 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017722 uint64_t cgen_var_1274 = (uint64_t)(uintptr_t)local_pAllocator;
17723 stream->putBe64(cgen_var_1274);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017724 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017725 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017726 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017727 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017728 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017729 uint64_t cgen_var_1275;
17730 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1275, 1);
17731 stream->write((uint64_t*)&cgen_var_1275, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017732 stream->setHandleMapping(resources->unwrapMapping());
17733 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080017734 uint64_t cgen_var_1276;
17735 stream->read((uint64_t*)&cgen_var_1276, 8);
17736 stream->handleMapping()->mapHandles_u64_VkObjectTableNVX(&cgen_var_1276, (VkObjectTableNVX*)pObjectTable, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017737 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017738 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
17739 stream->read(&vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017740 countingStream->clearPool();
17741 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017742 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017743 return vkCreateObjectTableNVX_VkResult_return;
17744}
17745
17746void VkEncoder::vkDestroyObjectTableNVX(
17747 VkDevice device,
17748 VkObjectTableNVX objectTable,
17749 const VkAllocationCallbacks* pAllocator)
17750{
17751 auto stream = mImpl->stream();
17752 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017753 auto resources = mImpl->resources();
17754 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017755 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017756 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017757 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017758 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017759 local_device = device;
17760 local_objectTable = objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017761 local_pAllocator = nullptr;
17762 if (pAllocator)
17763 {
17764 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17765 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17766 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017767 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017768 if (local_pAllocator)
17769 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017770 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017771 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017772 countingStream->rewind();
17773 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017774 uint64_t cgen_var_1277;
17775 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1277, 1);
17776 countingStream->write((uint64_t*)&cgen_var_1277, 1 * 8);
17777 uint64_t cgen_var_1278;
17778 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1278, 1);
17779 countingStream->write((uint64_t*)&cgen_var_1278, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017780 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017781 uint64_t cgen_var_1279 = (uint64_t)(uintptr_t)local_pAllocator;
17782 countingStream->putBe64(cgen_var_1279);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017783 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017784 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017785 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017786 }
17787 }
17788 uint32_t packetSize_vkDestroyObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17789 countingStream->rewind();
17790 uint32_t opcode_vkDestroyObjectTableNVX = OP_vkDestroyObjectTableNVX;
17791 stream->write(&opcode_vkDestroyObjectTableNVX, sizeof(uint32_t));
17792 stream->write(&packetSize_vkDestroyObjectTableNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017793 uint64_t cgen_var_1280;
17794 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1280, 1);
17795 stream->write((uint64_t*)&cgen_var_1280, 1 * 8);
17796 uint64_t cgen_var_1281;
17797 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1281, 1);
17798 stream->write((uint64_t*)&cgen_var_1281, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017799 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017800 uint64_t cgen_var_1282 = (uint64_t)(uintptr_t)local_pAllocator;
17801 stream->putBe64(cgen_var_1282);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017802 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017803 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017804 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017805 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017806 resources->destroyMapping()->mapHandles_VkObjectTableNVX((VkObjectTableNVX*)&objectTable);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017807}
17808
17809VkResult VkEncoder::vkRegisterObjectsNVX(
17810 VkDevice device,
17811 VkObjectTableNVX objectTable,
17812 uint32_t objectCount,
17813 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
17814 const uint32_t* pObjectIndices)
17815{
17816 auto stream = mImpl->stream();
17817 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017818 auto resources = mImpl->resources();
17819 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017820 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017821 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017822 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017823 uint32_t local_objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017824 VkObjectTableEntryNVX** local_ppObjectTableEntries;
17825 uint32_t* local_pObjectIndices;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017826 local_device = device;
17827 local_objectTable = objectTable;
17828 local_objectCount = objectCount;
17829 (void)ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017830 local_pObjectIndices = nullptr;
17831 if (pObjectIndices)
17832 {
17833 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
17834 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017835 (void)local_ppObjectTableEntries;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017836 countingStream->rewind();
17837 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017838 uint64_t cgen_var_1283;
17839 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1283, 1);
17840 countingStream->write((uint64_t*)&cgen_var_1283, 1 * 8);
17841 uint64_t cgen_var_1284;
17842 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1284, 1);
17843 countingStream->write((uint64_t*)&cgen_var_1284, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017844 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080017845 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017846 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017847 }
17848 uint32_t packetSize_vkRegisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17849 countingStream->rewind();
17850 uint32_t opcode_vkRegisterObjectsNVX = OP_vkRegisterObjectsNVX;
17851 stream->write(&opcode_vkRegisterObjectsNVX, sizeof(uint32_t));
17852 stream->write(&packetSize_vkRegisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017853 uint64_t cgen_var_1285;
17854 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1285, 1);
17855 stream->write((uint64_t*)&cgen_var_1285, 1 * 8);
17856 uint64_t cgen_var_1286;
17857 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1286, 1);
17858 stream->write((uint64_t*)&cgen_var_1286, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017859 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080017860 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017861 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017862 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
17863 stream->read(&vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017864 countingStream->clearPool();
17865 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017866 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017867 return vkRegisterObjectsNVX_VkResult_return;
17868}
17869
17870VkResult VkEncoder::vkUnregisterObjectsNVX(
17871 VkDevice device,
17872 VkObjectTableNVX objectTable,
17873 uint32_t objectCount,
17874 const VkObjectEntryTypeNVX* pObjectEntryTypes,
17875 const uint32_t* pObjectIndices)
17876{
17877 auto stream = mImpl->stream();
17878 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017879 auto resources = mImpl->resources();
17880 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017881 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017882 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017883 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017884 uint32_t local_objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017885 VkObjectEntryTypeNVX* local_pObjectEntryTypes;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017886 uint32_t* local_pObjectIndices;
17887 local_device = device;
17888 local_objectTable = objectTable;
17889 local_objectCount = objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017890 local_pObjectEntryTypes = nullptr;
17891 if (pObjectEntryTypes)
17892 {
17893 local_pObjectEntryTypes = (VkObjectEntryTypeNVX*)pool->dupArray(pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
17894 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017895 local_pObjectIndices = nullptr;
17896 if (pObjectIndices)
17897 {
17898 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
17899 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017900 countingStream->rewind();
17901 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017902 uint64_t cgen_var_1287;
17903 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1287, 1);
17904 countingStream->write((uint64_t*)&cgen_var_1287, 1 * 8);
17905 uint64_t cgen_var_1288;
17906 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1288, 1);
17907 countingStream->write((uint64_t*)&cgen_var_1288, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017908 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
17909 countingStream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
17910 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017911 }
17912 uint32_t packetSize_vkUnregisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17913 countingStream->rewind();
17914 uint32_t opcode_vkUnregisterObjectsNVX = OP_vkUnregisterObjectsNVX;
17915 stream->write(&opcode_vkUnregisterObjectsNVX, sizeof(uint32_t));
17916 stream->write(&packetSize_vkUnregisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017917 uint64_t cgen_var_1289;
17918 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1289, 1);
17919 stream->write((uint64_t*)&cgen_var_1289, 1 * 8);
17920 uint64_t cgen_var_1290;
17921 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1290, 1);
17922 stream->write((uint64_t*)&cgen_var_1290, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017923 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
17924 stream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
17925 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017926 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
17927 stream->read(&vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017928 countingStream->clearPool();
17929 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017930 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017931 return vkUnregisterObjectsNVX_VkResult_return;
17932}
17933
17934void VkEncoder::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
17935 VkPhysicalDevice physicalDevice,
17936 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
17937 VkDeviceGeneratedCommandsLimitsNVX* pLimits)
17938{
17939 auto stream = mImpl->stream();
17940 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017941 auto resources = mImpl->resources();
17942 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017943 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017944 VkPhysicalDevice local_physicalDevice;
17945 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017946 countingStream->rewind();
17947 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017948 uint64_t cgen_var_1291;
17949 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1291, 1);
17950 countingStream->write((uint64_t*)&cgen_var_1291, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017951 marshal_VkDeviceGeneratedCommandsFeaturesNVX(countingStream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
17952 marshal_VkDeviceGeneratedCommandsLimitsNVX(countingStream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
17953 }
17954 uint32_t packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17955 countingStream->rewind();
17956 uint32_t opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = OP_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX;
17957 stream->write(&opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
17958 stream->write(&packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017959 uint64_t cgen_var_1292;
17960 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1292, 1);
17961 stream->write((uint64_t*)&cgen_var_1292, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017962 marshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
17963 marshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
17964 unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -080017965 if (pFeatures)
17966 {
17967 transform_fromhost_VkDeviceGeneratedCommandsFeaturesNVX(mImpl->resources(), (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
17968 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017969 unmarshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
Lingfeng Yang97a06702018-12-24 17:02:43 -080017970 if (pLimits)
17971 {
17972 transform_fromhost_VkDeviceGeneratedCommandsLimitsNVX(mImpl->resources(), (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
17973 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017974}
17975
17976#endif
17977#ifdef VK_NV_clip_space_w_scaling
17978void VkEncoder::vkCmdSetViewportWScalingNV(
17979 VkCommandBuffer commandBuffer,
17980 uint32_t firstViewport,
17981 uint32_t viewportCount,
17982 const VkViewportWScalingNV* pViewportWScalings)
17983{
17984 auto stream = mImpl->stream();
17985 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017986 auto resources = mImpl->resources();
17987 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017988 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017989 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017990 uint32_t local_firstViewport;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017991 uint32_t local_viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017992 VkViewportWScalingNV* local_pViewportWScalings;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017993 local_commandBuffer = commandBuffer;
17994 local_firstViewport = firstViewport;
17995 local_viewportCount = viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017996 local_pViewportWScalings = nullptr;
17997 if (pViewportWScalings)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017998 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017999 local_pViewportWScalings = (VkViewportWScalingNV*)pool->alloc(((viewportCount)) * sizeof(const VkViewportWScalingNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018000 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
18001 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018002 deepcopy_VkViewportWScalingNV(pool, pViewportWScalings + i, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
18003 }
18004 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018005 if (local_pViewportWScalings)
18006 {
18007 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
18008 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018009 transform_tohost_VkViewportWScalingNV(mImpl->resources(), (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018010 }
18011 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018012 countingStream->rewind();
18013 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018014 uint64_t cgen_var_1293;
18015 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1293, 1);
18016 countingStream->write((uint64_t*)&cgen_var_1293, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018017 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
18018 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
18019 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
18020 {
18021 marshal_VkViewportWScalingNV(countingStream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018022 }
18023 }
18024 uint32_t packetSize_vkCmdSetViewportWScalingNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18025 countingStream->rewind();
18026 uint32_t opcode_vkCmdSetViewportWScalingNV = OP_vkCmdSetViewportWScalingNV;
18027 stream->write(&opcode_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
18028 stream->write(&packetSize_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018029 uint64_t cgen_var_1294;
18030 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1294, 1);
18031 stream->write((uint64_t*)&cgen_var_1294, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018032 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
18033 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018034 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
18035 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018036 marshal_VkViewportWScalingNV(stream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018037 }
18038}
18039
18040#endif
18041#ifdef VK_EXT_direct_mode_display
18042VkResult VkEncoder::vkReleaseDisplayEXT(
18043 VkPhysicalDevice physicalDevice,
18044 VkDisplayKHR display)
18045{
18046 auto stream = mImpl->stream();
18047 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018048 auto resources = mImpl->resources();
18049 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018050 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018051 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018052 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018053 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018054 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018055 countingStream->rewind();
18056 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018057 uint64_t cgen_var_1295;
18058 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1295, 1);
18059 countingStream->write((uint64_t*)&cgen_var_1295, 1 * 8);
18060 uint64_t cgen_var_1296;
18061 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1296, 1);
18062 countingStream->write((uint64_t*)&cgen_var_1296, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018063 }
18064 uint32_t packetSize_vkReleaseDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18065 countingStream->rewind();
18066 uint32_t opcode_vkReleaseDisplayEXT = OP_vkReleaseDisplayEXT;
18067 stream->write(&opcode_vkReleaseDisplayEXT, sizeof(uint32_t));
18068 stream->write(&packetSize_vkReleaseDisplayEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018069 uint64_t cgen_var_1297;
18070 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1297, 1);
18071 stream->write((uint64_t*)&cgen_var_1297, 1 * 8);
18072 uint64_t cgen_var_1298;
18073 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1298, 1);
18074 stream->write((uint64_t*)&cgen_var_1298, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018075 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
18076 stream->read(&vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018077 countingStream->clearPool();
18078 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018079 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018080 return vkReleaseDisplayEXT_VkResult_return;
18081}
18082
18083#endif
18084#ifdef VK_EXT_acquire_xlib_display
18085VkResult VkEncoder::vkAcquireXlibDisplayEXT(
18086 VkPhysicalDevice physicalDevice,
18087 Display* dpy,
18088 VkDisplayKHR display)
18089{
18090 auto stream = mImpl->stream();
18091 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018092 auto resources = mImpl->resources();
18093 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018094 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018095 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018096 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018097 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018098 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018099 countingStream->rewind();
18100 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018101 uint64_t cgen_var_1299;
18102 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1299, 1);
18103 countingStream->write((uint64_t*)&cgen_var_1299, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018104 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018105 uint64_t cgen_var_1300;
18106 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1300, 1);
18107 countingStream->write((uint64_t*)&cgen_var_1300, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018108 }
18109 uint32_t packetSize_vkAcquireXlibDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18110 countingStream->rewind();
18111 uint32_t opcode_vkAcquireXlibDisplayEXT = OP_vkAcquireXlibDisplayEXT;
18112 stream->write(&opcode_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
18113 stream->write(&packetSize_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018114 uint64_t cgen_var_1301;
18115 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1301, 1);
18116 stream->write((uint64_t*)&cgen_var_1301, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018117 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018118 uint64_t cgen_var_1302;
18119 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1302, 1);
18120 stream->write((uint64_t*)&cgen_var_1302, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018121 stream->read((Display*)dpy, sizeof(Display));
18122 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
18123 stream->read(&vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018124 countingStream->clearPool();
18125 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018126 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018127 return vkAcquireXlibDisplayEXT_VkResult_return;
18128}
18129
18130VkResult VkEncoder::vkGetRandROutputDisplayEXT(
18131 VkPhysicalDevice physicalDevice,
18132 Display* dpy,
18133 RROutput rrOutput,
18134 VkDisplayKHR* pDisplay)
18135{
18136 auto stream = mImpl->stream();
18137 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018138 auto resources = mImpl->resources();
18139 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018140 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018141 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018142 RROutput local_rrOutput;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018143 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018144 local_rrOutput = rrOutput;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018145 countingStream->rewind();
18146 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018147 uint64_t cgen_var_1303;
18148 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1303, 1);
18149 countingStream->write((uint64_t*)&cgen_var_1303, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018150 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018151 countingStream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018152 uint64_t cgen_var_1304;
18153 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1304, 1);
18154 countingStream->write((uint64_t*)&cgen_var_1304, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018155 }
18156 uint32_t packetSize_vkGetRandROutputDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18157 countingStream->rewind();
18158 uint32_t opcode_vkGetRandROutputDisplayEXT = OP_vkGetRandROutputDisplayEXT;
18159 stream->write(&opcode_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
18160 stream->write(&packetSize_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018161 uint64_t cgen_var_1305;
18162 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1305, 1);
18163 stream->write((uint64_t*)&cgen_var_1305, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018164 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018165 stream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yange4008a02018-11-18 12:22:48 -080018166 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080018167 uint64_t cgen_var_1306;
18168 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1306, 1);
18169 stream->write((uint64_t*)&cgen_var_1306, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018170 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018171 stream->read((Display*)dpy, sizeof(Display));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018172 uint64_t cgen_var_1307;
18173 stream->read((uint64_t*)&cgen_var_1307, 8);
18174 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(&cgen_var_1307, (VkDisplayKHR*)pDisplay, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018175 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
18176 stream->read(&vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018177 countingStream->clearPool();
18178 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018179 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018180 return vkGetRandROutputDisplayEXT_VkResult_return;
18181}
18182
18183#endif
18184#ifdef VK_EXT_display_surface_counter
18185VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2EXT(
18186 VkPhysicalDevice physicalDevice,
18187 VkSurfaceKHR surface,
18188 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
18189{
18190 auto stream = mImpl->stream();
18191 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018192 auto resources = mImpl->resources();
18193 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018194 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018195 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018196 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018197 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018198 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018199 countingStream->rewind();
18200 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018201 uint64_t cgen_var_1308;
18202 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1308, 1);
18203 countingStream->write((uint64_t*)&cgen_var_1308, 1 * 8);
18204 uint64_t cgen_var_1309;
18205 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1309, 1);
18206 countingStream->write((uint64_t*)&cgen_var_1309, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018207 marshal_VkSurfaceCapabilities2EXT(countingStream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
18208 }
18209 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18210 countingStream->rewind();
18211 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT = OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT;
18212 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
18213 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018214 uint64_t cgen_var_1310;
18215 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1310, 1);
18216 stream->write((uint64_t*)&cgen_var_1310, 1 * 8);
18217 uint64_t cgen_var_1311;
18218 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1311, 1);
18219 stream->write((uint64_t*)&cgen_var_1311, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018220 marshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
18221 unmarshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080018222 if (pSurfaceCapabilities)
18223 {
18224 transform_fromhost_VkSurfaceCapabilities2EXT(mImpl->resources(), (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
18225 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018226 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
18227 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018228 countingStream->clearPool();
18229 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018230 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018231 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
18232}
18233
18234#endif
18235#ifdef VK_EXT_display_control
18236VkResult VkEncoder::vkDisplayPowerControlEXT(
18237 VkDevice device,
18238 VkDisplayKHR display,
18239 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
18240{
18241 auto stream = mImpl->stream();
18242 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018243 auto resources = mImpl->resources();
18244 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018245 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018246 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018247 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018248 VkDisplayPowerInfoEXT* local_pDisplayPowerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018249 local_device = device;
18250 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018251 local_pDisplayPowerInfo = nullptr;
18252 if (pDisplayPowerInfo)
18253 {
18254 local_pDisplayPowerInfo = (VkDisplayPowerInfoEXT*)pool->alloc(sizeof(const VkDisplayPowerInfoEXT));
18255 deepcopy_VkDisplayPowerInfoEXT(pool, pDisplayPowerInfo, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
18256 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018257 if (local_pDisplayPowerInfo)
18258 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018259 transform_tohost_VkDisplayPowerInfoEXT(mImpl->resources(), (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018260 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018261 countingStream->rewind();
18262 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018263 uint64_t cgen_var_1312;
18264 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1312, 1);
18265 countingStream->write((uint64_t*)&cgen_var_1312, 1 * 8);
18266 uint64_t cgen_var_1313;
18267 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1313, 1);
18268 countingStream->write((uint64_t*)&cgen_var_1313, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018269 marshal_VkDisplayPowerInfoEXT(countingStream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018270 }
18271 uint32_t packetSize_vkDisplayPowerControlEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18272 countingStream->rewind();
18273 uint32_t opcode_vkDisplayPowerControlEXT = OP_vkDisplayPowerControlEXT;
18274 stream->write(&opcode_vkDisplayPowerControlEXT, sizeof(uint32_t));
18275 stream->write(&packetSize_vkDisplayPowerControlEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018276 uint64_t cgen_var_1314;
18277 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1314, 1);
18278 stream->write((uint64_t*)&cgen_var_1314, 1 * 8);
18279 uint64_t cgen_var_1315;
18280 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1315, 1);
18281 stream->write((uint64_t*)&cgen_var_1315, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018282 marshal_VkDisplayPowerInfoEXT(stream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018283 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
18284 stream->read(&vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018285 countingStream->clearPool();
18286 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018287 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018288 return vkDisplayPowerControlEXT_VkResult_return;
18289}
18290
18291VkResult VkEncoder::vkRegisterDeviceEventEXT(
18292 VkDevice device,
18293 const VkDeviceEventInfoEXT* pDeviceEventInfo,
18294 const VkAllocationCallbacks* pAllocator,
18295 VkFence* pFence)
18296{
18297 auto stream = mImpl->stream();
18298 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018299 auto resources = mImpl->resources();
18300 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018301 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018302 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018303 VkDeviceEventInfoEXT* local_pDeviceEventInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018304 VkAllocationCallbacks* local_pAllocator;
18305 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018306 local_pDeviceEventInfo = nullptr;
18307 if (pDeviceEventInfo)
18308 {
18309 local_pDeviceEventInfo = (VkDeviceEventInfoEXT*)pool->alloc(sizeof(const VkDeviceEventInfoEXT));
18310 deepcopy_VkDeviceEventInfoEXT(pool, pDeviceEventInfo, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
18311 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018312 local_pAllocator = nullptr;
18313 if (pAllocator)
18314 {
18315 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18316 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18317 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018318 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018319 if (local_pDeviceEventInfo)
18320 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018321 transform_tohost_VkDeviceEventInfoEXT(mImpl->resources(), (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018322 }
18323 if (local_pAllocator)
18324 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018325 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018326 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018327 countingStream->rewind();
18328 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018329 uint64_t cgen_var_1316;
18330 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1316, 1);
18331 countingStream->write((uint64_t*)&cgen_var_1316, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018332 marshal_VkDeviceEventInfoEXT(countingStream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018333 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018334 uint64_t cgen_var_1317 = (uint64_t)(uintptr_t)local_pAllocator;
18335 countingStream->putBe64(cgen_var_1317);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018336 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018337 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018338 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018339 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080018340 uint64_t cgen_var_1318;
18341 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1318, 1);
18342 countingStream->write((uint64_t*)&cgen_var_1318, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018343 }
18344 uint32_t packetSize_vkRegisterDeviceEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18345 countingStream->rewind();
18346 uint32_t opcode_vkRegisterDeviceEventEXT = OP_vkRegisterDeviceEventEXT;
18347 stream->write(&opcode_vkRegisterDeviceEventEXT, sizeof(uint32_t));
18348 stream->write(&packetSize_vkRegisterDeviceEventEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018349 uint64_t cgen_var_1319;
18350 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1319, 1);
18351 stream->write((uint64_t*)&cgen_var_1319, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018352 marshal_VkDeviceEventInfoEXT(stream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018353 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018354 uint64_t cgen_var_1320 = (uint64_t)(uintptr_t)local_pAllocator;
18355 stream->putBe64(cgen_var_1320);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018356 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018357 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018358 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018359 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018360 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080018361 uint64_t cgen_var_1321;
18362 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1321, 1);
18363 stream->write((uint64_t*)&cgen_var_1321, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018364 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080018365 uint64_t cgen_var_1322;
18366 stream->read((uint64_t*)&cgen_var_1322, 8);
18367 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1322, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018368 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
18369 stream->read(&vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018370 countingStream->clearPool();
18371 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018372 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018373 return vkRegisterDeviceEventEXT_VkResult_return;
18374}
18375
18376VkResult VkEncoder::vkRegisterDisplayEventEXT(
18377 VkDevice device,
18378 VkDisplayKHR display,
18379 const VkDisplayEventInfoEXT* pDisplayEventInfo,
18380 const VkAllocationCallbacks* pAllocator,
18381 VkFence* pFence)
18382{
18383 auto stream = mImpl->stream();
18384 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018385 auto resources = mImpl->resources();
18386 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018387 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018388 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018389 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018390 VkDisplayEventInfoEXT* local_pDisplayEventInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018391 VkAllocationCallbacks* local_pAllocator;
18392 local_device = device;
18393 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018394 local_pDisplayEventInfo = nullptr;
18395 if (pDisplayEventInfo)
18396 {
18397 local_pDisplayEventInfo = (VkDisplayEventInfoEXT*)pool->alloc(sizeof(const VkDisplayEventInfoEXT));
18398 deepcopy_VkDisplayEventInfoEXT(pool, pDisplayEventInfo, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
18399 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018400 local_pAllocator = nullptr;
18401 if (pAllocator)
18402 {
18403 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18404 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18405 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018406 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018407 if (local_pDisplayEventInfo)
18408 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018409 transform_tohost_VkDisplayEventInfoEXT(mImpl->resources(), (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018410 }
18411 if (local_pAllocator)
18412 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018413 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018414 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018415 countingStream->rewind();
18416 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018417 uint64_t cgen_var_1323;
18418 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1323, 1);
18419 countingStream->write((uint64_t*)&cgen_var_1323, 1 * 8);
18420 uint64_t cgen_var_1324;
18421 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1324, 1);
18422 countingStream->write((uint64_t*)&cgen_var_1324, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018423 marshal_VkDisplayEventInfoEXT(countingStream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018424 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018425 uint64_t cgen_var_1325 = (uint64_t)(uintptr_t)local_pAllocator;
18426 countingStream->putBe64(cgen_var_1325);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018427 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018428 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018429 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018430 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080018431 uint64_t cgen_var_1326;
18432 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1326, 1);
18433 countingStream->write((uint64_t*)&cgen_var_1326, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018434 }
18435 uint32_t packetSize_vkRegisterDisplayEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18436 countingStream->rewind();
18437 uint32_t opcode_vkRegisterDisplayEventEXT = OP_vkRegisterDisplayEventEXT;
18438 stream->write(&opcode_vkRegisterDisplayEventEXT, sizeof(uint32_t));
18439 stream->write(&packetSize_vkRegisterDisplayEventEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018440 uint64_t cgen_var_1327;
18441 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1327, 1);
18442 stream->write((uint64_t*)&cgen_var_1327, 1 * 8);
18443 uint64_t cgen_var_1328;
18444 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1328, 1);
18445 stream->write((uint64_t*)&cgen_var_1328, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018446 marshal_VkDisplayEventInfoEXT(stream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018447 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018448 uint64_t cgen_var_1329 = (uint64_t)(uintptr_t)local_pAllocator;
18449 stream->putBe64(cgen_var_1329);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018450 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018451 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018452 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018453 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018454 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080018455 uint64_t cgen_var_1330;
18456 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1330, 1);
18457 stream->write((uint64_t*)&cgen_var_1330, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018458 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080018459 uint64_t cgen_var_1331;
18460 stream->read((uint64_t*)&cgen_var_1331, 8);
18461 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1331, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018462 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
18463 stream->read(&vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018464 countingStream->clearPool();
18465 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018466 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018467 return vkRegisterDisplayEventEXT_VkResult_return;
18468}
18469
18470VkResult VkEncoder::vkGetSwapchainCounterEXT(
18471 VkDevice device,
18472 VkSwapchainKHR swapchain,
18473 VkSurfaceCounterFlagBitsEXT counter,
18474 uint64_t* pCounterValue)
18475{
18476 auto stream = mImpl->stream();
18477 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018478 auto resources = mImpl->resources();
18479 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018480 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018481 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018482 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018483 VkSurfaceCounterFlagBitsEXT local_counter;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018484 local_device = device;
18485 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018486 local_counter = counter;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018487 countingStream->rewind();
18488 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018489 uint64_t cgen_var_1332;
18490 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1332, 1);
18491 countingStream->write((uint64_t*)&cgen_var_1332, 1 * 8);
18492 uint64_t cgen_var_1333;
18493 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1333, 1);
18494 countingStream->write((uint64_t*)&cgen_var_1333, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018495 countingStream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018496 countingStream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
18497 }
18498 uint32_t packetSize_vkGetSwapchainCounterEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18499 countingStream->rewind();
18500 uint32_t opcode_vkGetSwapchainCounterEXT = OP_vkGetSwapchainCounterEXT;
18501 stream->write(&opcode_vkGetSwapchainCounterEXT, sizeof(uint32_t));
18502 stream->write(&packetSize_vkGetSwapchainCounterEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018503 uint64_t cgen_var_1334;
18504 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1334, 1);
18505 stream->write((uint64_t*)&cgen_var_1334, 1 * 8);
18506 uint64_t cgen_var_1335;
18507 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1335, 1);
18508 stream->write((uint64_t*)&cgen_var_1335, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018509 stream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018510 stream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
18511 stream->read((uint64_t*)pCounterValue, sizeof(uint64_t));
18512 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
18513 stream->read(&vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018514 countingStream->clearPool();
18515 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018516 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018517 return vkGetSwapchainCounterEXT_VkResult_return;
18518}
18519
18520#endif
18521#ifdef VK_GOOGLE_display_timing
18522VkResult VkEncoder::vkGetRefreshCycleDurationGOOGLE(
18523 VkDevice device,
18524 VkSwapchainKHR swapchain,
18525 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
18526{
18527 auto stream = mImpl->stream();
18528 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018529 auto resources = mImpl->resources();
18530 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018531 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018532 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018533 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018534 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018535 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018536 countingStream->rewind();
18537 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018538 uint64_t cgen_var_1336;
18539 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1336, 1);
18540 countingStream->write((uint64_t*)&cgen_var_1336, 1 * 8);
18541 uint64_t cgen_var_1337;
18542 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1337, 1);
18543 countingStream->write((uint64_t*)&cgen_var_1337, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018544 marshal_VkRefreshCycleDurationGOOGLE(countingStream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
18545 }
18546 uint32_t packetSize_vkGetRefreshCycleDurationGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18547 countingStream->rewind();
18548 uint32_t opcode_vkGetRefreshCycleDurationGOOGLE = OP_vkGetRefreshCycleDurationGOOGLE;
18549 stream->write(&opcode_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
18550 stream->write(&packetSize_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018551 uint64_t cgen_var_1338;
18552 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1338, 1);
18553 stream->write((uint64_t*)&cgen_var_1338, 1 * 8);
18554 uint64_t cgen_var_1339;
18555 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1339, 1);
18556 stream->write((uint64_t*)&cgen_var_1339, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018557 marshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
18558 unmarshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080018559 if (pDisplayTimingProperties)
18560 {
18561 transform_fromhost_VkRefreshCycleDurationGOOGLE(mImpl->resources(), (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
18562 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018563 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
18564 stream->read(&vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018565 countingStream->clearPool();
18566 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018567 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018568 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
18569}
18570
18571VkResult VkEncoder::vkGetPastPresentationTimingGOOGLE(
18572 VkDevice device,
18573 VkSwapchainKHR swapchain,
18574 uint32_t* pPresentationTimingCount,
18575 VkPastPresentationTimingGOOGLE* pPresentationTimings)
18576{
18577 auto stream = mImpl->stream();
18578 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018579 auto resources = mImpl->resources();
18580 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018581 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018582 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018583 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018584 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018585 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018586 countingStream->rewind();
18587 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018588 uint64_t cgen_var_1340;
18589 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1340, 1);
18590 countingStream->write((uint64_t*)&cgen_var_1340, 1 * 8);
18591 uint64_t cgen_var_1341;
18592 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1341, 1);
18593 countingStream->write((uint64_t*)&cgen_var_1341, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018594 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018595 uint64_t cgen_var_1342 = (uint64_t)(uintptr_t)pPresentationTimingCount;
18596 countingStream->putBe64(cgen_var_1342);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018597 if (pPresentationTimingCount)
18598 {
18599 countingStream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
18600 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018601 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018602 uint64_t cgen_var_1343 = (uint64_t)(uintptr_t)pPresentationTimings;
18603 countingStream->putBe64(cgen_var_1343);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018604 if (pPresentationTimings)
18605 {
18606 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
18607 {
18608 marshal_VkPastPresentationTimingGOOGLE(countingStream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
18609 }
18610 }
18611 }
18612 uint32_t packetSize_vkGetPastPresentationTimingGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18613 countingStream->rewind();
18614 uint32_t opcode_vkGetPastPresentationTimingGOOGLE = OP_vkGetPastPresentationTimingGOOGLE;
18615 stream->write(&opcode_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
18616 stream->write(&packetSize_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018617 uint64_t cgen_var_1344;
18618 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1344, 1);
18619 stream->write((uint64_t*)&cgen_var_1344, 1 * 8);
18620 uint64_t cgen_var_1345;
18621 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1345, 1);
18622 stream->write((uint64_t*)&cgen_var_1345, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018623 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018624 uint64_t cgen_var_1346 = (uint64_t)(uintptr_t)pPresentationTimingCount;
18625 stream->putBe64(cgen_var_1346);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018626 if (pPresentationTimingCount)
18627 {
18628 stream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
18629 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018630 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018631 uint64_t cgen_var_1347 = (uint64_t)(uintptr_t)pPresentationTimings;
18632 stream->putBe64(cgen_var_1347);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018633 if (pPresentationTimings)
18634 {
18635 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
18636 {
18637 marshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
18638 }
18639 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018640 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018641 uint32_t* check_pPresentationTimingCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018642 check_pPresentationTimingCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018643 if (pPresentationTimingCount)
18644 {
18645 if (!(check_pPresentationTimingCount))
18646 {
18647 fprintf(stderr, "fatal: pPresentationTimingCount inconsistent between guest and host\n");
18648 }
18649 stream->read((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
18650 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018651 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018652 VkPastPresentationTimingGOOGLE* check_pPresentationTimings;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018653 check_pPresentationTimings = (VkPastPresentationTimingGOOGLE*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018654 if (pPresentationTimings)
18655 {
18656 if (!(check_pPresentationTimings))
18657 {
18658 fprintf(stderr, "fatal: pPresentationTimings inconsistent between guest and host\n");
18659 }
18660 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
18661 {
18662 unmarshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
18663 }
18664 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080018665 if (pPresentationTimings)
18666 {
18667 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
18668 {
18669 transform_fromhost_VkPastPresentationTimingGOOGLE(mImpl->resources(), (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
18670 }
18671 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018672 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
18673 stream->read(&vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018674 countingStream->clearPool();
18675 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018676 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018677 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
18678}
18679
18680#endif
18681#ifdef VK_NV_sample_mask_override_coverage
18682#endif
18683#ifdef VK_NV_geometry_shader_passthrough
18684#endif
18685#ifdef VK_NV_viewport_array2
18686#endif
18687#ifdef VK_NVX_multiview_per_view_attributes
18688#endif
18689#ifdef VK_NV_viewport_swizzle
18690#endif
18691#ifdef VK_EXT_discard_rectangles
18692void VkEncoder::vkCmdSetDiscardRectangleEXT(
18693 VkCommandBuffer commandBuffer,
18694 uint32_t firstDiscardRectangle,
18695 uint32_t discardRectangleCount,
18696 const VkRect2D* pDiscardRectangles)
18697{
18698 auto stream = mImpl->stream();
18699 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018700 auto resources = mImpl->resources();
18701 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018702 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018703 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018704 uint32_t local_firstDiscardRectangle;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018705 uint32_t local_discardRectangleCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018706 VkRect2D* local_pDiscardRectangles;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018707 local_commandBuffer = commandBuffer;
18708 local_firstDiscardRectangle = firstDiscardRectangle;
18709 local_discardRectangleCount = discardRectangleCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018710 local_pDiscardRectangles = nullptr;
18711 if (pDiscardRectangles)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018712 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018713 local_pDiscardRectangles = (VkRect2D*)pool->alloc(((discardRectangleCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018714 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
18715 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018716 deepcopy_VkRect2D(pool, pDiscardRectangles + i, (VkRect2D*)(local_pDiscardRectangles + i));
18717 }
18718 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018719 if (local_pDiscardRectangles)
18720 {
18721 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
18722 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018723 transform_tohost_VkRect2D(mImpl->resources(), (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018724 }
18725 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018726 countingStream->rewind();
18727 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018728 uint64_t cgen_var_1350;
18729 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1350, 1);
18730 countingStream->write((uint64_t*)&cgen_var_1350, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018731 countingStream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
18732 countingStream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
18733 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
18734 {
18735 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018736 }
18737 }
18738 uint32_t packetSize_vkCmdSetDiscardRectangleEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18739 countingStream->rewind();
18740 uint32_t opcode_vkCmdSetDiscardRectangleEXT = OP_vkCmdSetDiscardRectangleEXT;
18741 stream->write(&opcode_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
18742 stream->write(&packetSize_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018743 uint64_t cgen_var_1351;
18744 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1351, 1);
18745 stream->write((uint64_t*)&cgen_var_1351, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018746 stream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
18747 stream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018748 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
18749 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018750 marshal_VkRect2D(stream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018751 }
18752}
18753
18754#endif
18755#ifdef VK_EXT_conservative_rasterization
18756#endif
18757#ifdef VK_EXT_swapchain_colorspace
18758#endif
18759#ifdef VK_EXT_hdr_metadata
18760void VkEncoder::vkSetHdrMetadataEXT(
18761 VkDevice device,
18762 uint32_t swapchainCount,
18763 const VkSwapchainKHR* pSwapchains,
18764 const VkHdrMetadataEXT* pMetadata)
18765{
18766 auto stream = mImpl->stream();
18767 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018768 auto resources = mImpl->resources();
18769 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018770 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018771 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018772 uint32_t local_swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018773 VkSwapchainKHR* local_pSwapchains;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018774 VkHdrMetadataEXT* local_pMetadata;
18775 local_device = device;
18776 local_swapchainCount = swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018777 local_pSwapchains = nullptr;
18778 if (pSwapchains)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018779 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018780 local_pSwapchains = (VkSwapchainKHR*)pool->dupArray(pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
18781 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018782 local_pMetadata = nullptr;
18783 if (pMetadata)
18784 {
18785 local_pMetadata = (VkHdrMetadataEXT*)pool->alloc(((swapchainCount)) * sizeof(const VkHdrMetadataEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018786 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
18787 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018788 deepcopy_VkHdrMetadataEXT(pool, pMetadata + i, (VkHdrMetadataEXT*)(local_pMetadata + i));
18789 }
18790 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018791 if (local_pMetadata)
18792 {
18793 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
18794 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018795 transform_tohost_VkHdrMetadataEXT(mImpl->resources(), (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018796 }
18797 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018798 countingStream->rewind();
18799 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018800 uint64_t cgen_var_1352;
18801 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1352, 1);
18802 countingStream->write((uint64_t*)&cgen_var_1352, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018803 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018804 if (((swapchainCount)))
18805 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018806 uint64_t* cgen_var_1353;
18807 countingStream->alloc((void**)&cgen_var_1353, ((swapchainCount)) * 8);
18808 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1353, ((swapchainCount)));
18809 countingStream->write((uint64_t*)cgen_var_1353, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080018810 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018811 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
18812 {
18813 marshal_VkHdrMetadataEXT(countingStream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018814 }
18815 }
18816 uint32_t packetSize_vkSetHdrMetadataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18817 countingStream->rewind();
18818 uint32_t opcode_vkSetHdrMetadataEXT = OP_vkSetHdrMetadataEXT;
18819 stream->write(&opcode_vkSetHdrMetadataEXT, sizeof(uint32_t));
18820 stream->write(&packetSize_vkSetHdrMetadataEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018821 uint64_t cgen_var_1354;
18822 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1354, 1);
18823 stream->write((uint64_t*)&cgen_var_1354, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018824 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018825 if (((swapchainCount)))
18826 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018827 uint64_t* cgen_var_1355;
18828 stream->alloc((void**)&cgen_var_1355, ((swapchainCount)) * 8);
18829 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1355, ((swapchainCount)));
18830 stream->write((uint64_t*)cgen_var_1355, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080018831 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018832 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
18833 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018834 marshal_VkHdrMetadataEXT(stream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018835 }
18836}
18837
18838#endif
18839#ifdef VK_MVK_ios_surface
18840VkResult VkEncoder::vkCreateIOSSurfaceMVK(
18841 VkInstance instance,
18842 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
18843 const VkAllocationCallbacks* pAllocator,
18844 VkSurfaceKHR* pSurface)
18845{
18846 auto stream = mImpl->stream();
18847 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018848 auto resources = mImpl->resources();
18849 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018850 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018851 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018852 VkIOSSurfaceCreateInfoMVK* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018853 VkAllocationCallbacks* local_pAllocator;
18854 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018855 local_pCreateInfo = nullptr;
18856 if (pCreateInfo)
18857 {
18858 local_pCreateInfo = (VkIOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkIOSSurfaceCreateInfoMVK));
18859 deepcopy_VkIOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
18860 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018861 local_pAllocator = nullptr;
18862 if (pAllocator)
18863 {
18864 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18865 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18866 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018867 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018868 if (local_pCreateInfo)
18869 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018870 transform_tohost_VkIOSSurfaceCreateInfoMVK(mImpl->resources(), (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018871 }
18872 if (local_pAllocator)
18873 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018874 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018875 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018876 countingStream->rewind();
18877 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018878 uint64_t cgen_var_1356;
18879 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1356, 1);
18880 countingStream->write((uint64_t*)&cgen_var_1356, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018881 marshal_VkIOSSurfaceCreateInfoMVK(countingStream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018882 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018883 uint64_t cgen_var_1357 = (uint64_t)(uintptr_t)local_pAllocator;
18884 countingStream->putBe64(cgen_var_1357);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018885 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018886 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018887 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018888 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080018889 uint64_t cgen_var_1358;
18890 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1358, 1);
18891 countingStream->write((uint64_t*)&cgen_var_1358, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018892 }
18893 uint32_t packetSize_vkCreateIOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18894 countingStream->rewind();
18895 uint32_t opcode_vkCreateIOSSurfaceMVK = OP_vkCreateIOSSurfaceMVK;
18896 stream->write(&opcode_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
18897 stream->write(&packetSize_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018898 uint64_t cgen_var_1359;
18899 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1359, 1);
18900 stream->write((uint64_t*)&cgen_var_1359, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018901 marshal_VkIOSSurfaceCreateInfoMVK(stream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018902 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018903 uint64_t cgen_var_1360 = (uint64_t)(uintptr_t)local_pAllocator;
18904 stream->putBe64(cgen_var_1360);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018905 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018906 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018907 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018908 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018909 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080018910 uint64_t cgen_var_1361;
18911 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1361, 1);
18912 stream->write((uint64_t*)&cgen_var_1361, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018913 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080018914 uint64_t cgen_var_1362;
18915 stream->read((uint64_t*)&cgen_var_1362, 8);
18916 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1362, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018917 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
18918 stream->read(&vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018919 countingStream->clearPool();
18920 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018921 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018922 return vkCreateIOSSurfaceMVK_VkResult_return;
18923}
18924
18925#endif
18926#ifdef VK_MVK_macos_surface
18927VkResult VkEncoder::vkCreateMacOSSurfaceMVK(
18928 VkInstance instance,
18929 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
18930 const VkAllocationCallbacks* pAllocator,
18931 VkSurfaceKHR* pSurface)
18932{
18933 auto stream = mImpl->stream();
18934 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018935 auto resources = mImpl->resources();
18936 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018937 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018938 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018939 VkMacOSSurfaceCreateInfoMVK* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018940 VkAllocationCallbacks* local_pAllocator;
18941 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018942 local_pCreateInfo = nullptr;
18943 if (pCreateInfo)
18944 {
18945 local_pCreateInfo = (VkMacOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkMacOSSurfaceCreateInfoMVK));
18946 deepcopy_VkMacOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
18947 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018948 local_pAllocator = nullptr;
18949 if (pAllocator)
18950 {
18951 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18952 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18953 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018954 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018955 if (local_pCreateInfo)
18956 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018957 transform_tohost_VkMacOSSurfaceCreateInfoMVK(mImpl->resources(), (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018958 }
18959 if (local_pAllocator)
18960 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018961 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018962 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018963 countingStream->rewind();
18964 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018965 uint64_t cgen_var_1363;
18966 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1363, 1);
18967 countingStream->write((uint64_t*)&cgen_var_1363, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018968 marshal_VkMacOSSurfaceCreateInfoMVK(countingStream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018969 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018970 uint64_t cgen_var_1364 = (uint64_t)(uintptr_t)local_pAllocator;
18971 countingStream->putBe64(cgen_var_1364);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018972 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018973 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018974 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018975 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080018976 uint64_t cgen_var_1365;
18977 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1365, 1);
18978 countingStream->write((uint64_t*)&cgen_var_1365, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018979 }
18980 uint32_t packetSize_vkCreateMacOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18981 countingStream->rewind();
18982 uint32_t opcode_vkCreateMacOSSurfaceMVK = OP_vkCreateMacOSSurfaceMVK;
18983 stream->write(&opcode_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
18984 stream->write(&packetSize_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018985 uint64_t cgen_var_1366;
18986 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1366, 1);
18987 stream->write((uint64_t*)&cgen_var_1366, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018988 marshal_VkMacOSSurfaceCreateInfoMVK(stream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018989 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018990 uint64_t cgen_var_1367 = (uint64_t)(uintptr_t)local_pAllocator;
18991 stream->putBe64(cgen_var_1367);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018992 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018993 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018994 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018995 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018996 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080018997 uint64_t cgen_var_1368;
18998 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1368, 1);
18999 stream->write((uint64_t*)&cgen_var_1368, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019000 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080019001 uint64_t cgen_var_1369;
19002 stream->read((uint64_t*)&cgen_var_1369, 8);
19003 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1369, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019004 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
19005 stream->read(&vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019006 countingStream->clearPool();
19007 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019008 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019009 return vkCreateMacOSSurfaceMVK_VkResult_return;
19010}
19011
19012#endif
19013#ifdef VK_EXT_external_memory_dma_buf
19014#endif
19015#ifdef VK_EXT_queue_family_foreign
19016#endif
19017#ifdef VK_EXT_debug_utils
19018VkResult VkEncoder::vkSetDebugUtilsObjectNameEXT(
19019 VkDevice device,
19020 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
19021{
19022 auto stream = mImpl->stream();
19023 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019024 auto resources = mImpl->resources();
19025 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019026 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019027 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019028 VkDebugUtilsObjectNameInfoEXT* local_pNameInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019029 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019030 local_pNameInfo = nullptr;
19031 if (pNameInfo)
19032 {
19033 local_pNameInfo = (VkDebugUtilsObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectNameInfoEXT));
19034 deepcopy_VkDebugUtilsObjectNameInfoEXT(pool, pNameInfo, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
19035 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019036 if (local_pNameInfo)
19037 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019038 transform_tohost_VkDebugUtilsObjectNameInfoEXT(mImpl->resources(), (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019039 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019040 countingStream->rewind();
19041 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019042 uint64_t cgen_var_1370;
19043 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1370, 1);
19044 countingStream->write((uint64_t*)&cgen_var_1370, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019045 marshal_VkDebugUtilsObjectNameInfoEXT(countingStream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019046 }
19047 uint32_t packetSize_vkSetDebugUtilsObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19048 countingStream->rewind();
19049 uint32_t opcode_vkSetDebugUtilsObjectNameEXT = OP_vkSetDebugUtilsObjectNameEXT;
19050 stream->write(&opcode_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
19051 stream->write(&packetSize_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019052 uint64_t cgen_var_1371;
19053 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1371, 1);
19054 stream->write((uint64_t*)&cgen_var_1371, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019055 marshal_VkDebugUtilsObjectNameInfoEXT(stream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019056 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
19057 stream->read(&vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019058 countingStream->clearPool();
19059 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019060 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019061 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
19062}
19063
19064VkResult VkEncoder::vkSetDebugUtilsObjectTagEXT(
19065 VkDevice device,
19066 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
19067{
19068 auto stream = mImpl->stream();
19069 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019070 auto resources = mImpl->resources();
19071 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019072 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019073 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019074 VkDebugUtilsObjectTagInfoEXT* local_pTagInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019075 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019076 local_pTagInfo = nullptr;
19077 if (pTagInfo)
19078 {
19079 local_pTagInfo = (VkDebugUtilsObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectTagInfoEXT));
19080 deepcopy_VkDebugUtilsObjectTagInfoEXT(pool, pTagInfo, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
19081 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019082 if (local_pTagInfo)
19083 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019084 transform_tohost_VkDebugUtilsObjectTagInfoEXT(mImpl->resources(), (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019085 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019086 countingStream->rewind();
19087 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019088 uint64_t cgen_var_1372;
19089 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1372, 1);
19090 countingStream->write((uint64_t*)&cgen_var_1372, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019091 marshal_VkDebugUtilsObjectTagInfoEXT(countingStream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019092 }
19093 uint32_t packetSize_vkSetDebugUtilsObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19094 countingStream->rewind();
19095 uint32_t opcode_vkSetDebugUtilsObjectTagEXT = OP_vkSetDebugUtilsObjectTagEXT;
19096 stream->write(&opcode_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
19097 stream->write(&packetSize_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019098 uint64_t cgen_var_1373;
19099 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1373, 1);
19100 stream->write((uint64_t*)&cgen_var_1373, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019101 marshal_VkDebugUtilsObjectTagInfoEXT(stream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019102 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
19103 stream->read(&vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019104 countingStream->clearPool();
19105 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019106 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019107 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
19108}
19109
19110void VkEncoder::vkQueueBeginDebugUtilsLabelEXT(
19111 VkQueue queue,
19112 const VkDebugUtilsLabelEXT* pLabelInfo)
19113{
19114 auto stream = mImpl->stream();
19115 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019116 auto resources = mImpl->resources();
19117 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019118 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019119 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019120 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019121 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019122 local_pLabelInfo = nullptr;
19123 if (pLabelInfo)
19124 {
19125 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
19126 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
19127 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019128 if (local_pLabelInfo)
19129 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019130 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019131 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019132 countingStream->rewind();
19133 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019134 uint64_t cgen_var_1374;
19135 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1374, 1);
19136 countingStream->write((uint64_t*)&cgen_var_1374, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019137 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019138 }
19139 uint32_t packetSize_vkQueueBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19140 countingStream->rewind();
19141 uint32_t opcode_vkQueueBeginDebugUtilsLabelEXT = OP_vkQueueBeginDebugUtilsLabelEXT;
19142 stream->write(&opcode_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
19143 stream->write(&packetSize_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019144 uint64_t cgen_var_1375;
19145 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1375, 1);
19146 stream->write((uint64_t*)&cgen_var_1375, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019147 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019148}
19149
19150void VkEncoder::vkQueueEndDebugUtilsLabelEXT(
19151 VkQueue queue)
19152{
19153 auto stream = mImpl->stream();
19154 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019155 auto resources = mImpl->resources();
19156 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019157 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019158 VkQueue local_queue;
19159 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019160 countingStream->rewind();
19161 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019162 uint64_t cgen_var_1376;
19163 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1376, 1);
19164 countingStream->write((uint64_t*)&cgen_var_1376, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019165 }
19166 uint32_t packetSize_vkQueueEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19167 countingStream->rewind();
19168 uint32_t opcode_vkQueueEndDebugUtilsLabelEXT = OP_vkQueueEndDebugUtilsLabelEXT;
19169 stream->write(&opcode_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
19170 stream->write(&packetSize_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019171 uint64_t cgen_var_1377;
19172 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1377, 1);
19173 stream->write((uint64_t*)&cgen_var_1377, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019174}
19175
19176void VkEncoder::vkQueueInsertDebugUtilsLabelEXT(
19177 VkQueue queue,
19178 const VkDebugUtilsLabelEXT* pLabelInfo)
19179{
19180 auto stream = mImpl->stream();
19181 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019182 auto resources = mImpl->resources();
19183 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019184 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019185 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019186 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019187 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019188 local_pLabelInfo = nullptr;
19189 if (pLabelInfo)
19190 {
19191 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
19192 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
19193 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019194 if (local_pLabelInfo)
19195 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019196 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019197 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019198 countingStream->rewind();
19199 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019200 uint64_t cgen_var_1378;
19201 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1378, 1);
19202 countingStream->write((uint64_t*)&cgen_var_1378, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019203 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019204 }
19205 uint32_t packetSize_vkQueueInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19206 countingStream->rewind();
19207 uint32_t opcode_vkQueueInsertDebugUtilsLabelEXT = OP_vkQueueInsertDebugUtilsLabelEXT;
19208 stream->write(&opcode_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
19209 stream->write(&packetSize_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019210 uint64_t cgen_var_1379;
19211 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1379, 1);
19212 stream->write((uint64_t*)&cgen_var_1379, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019213 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019214}
19215
19216void VkEncoder::vkCmdBeginDebugUtilsLabelEXT(
19217 VkCommandBuffer commandBuffer,
19218 const VkDebugUtilsLabelEXT* pLabelInfo)
19219{
19220 auto stream = mImpl->stream();
19221 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019222 auto resources = mImpl->resources();
19223 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019224 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019225 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019226 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019227 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019228 local_pLabelInfo = nullptr;
19229 if (pLabelInfo)
19230 {
19231 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
19232 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
19233 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019234 if (local_pLabelInfo)
19235 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019236 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019237 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019238 countingStream->rewind();
19239 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019240 uint64_t cgen_var_1380;
19241 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1380, 1);
19242 countingStream->write((uint64_t*)&cgen_var_1380, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019243 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019244 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080019245 uint32_t packetSize_vkCmdBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19246 countingStream->rewind();
19247 uint32_t opcode_vkCmdBeginDebugUtilsLabelEXT = OP_vkCmdBeginDebugUtilsLabelEXT;
19248 stream->write(&opcode_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
19249 stream->write(&packetSize_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019250 uint64_t cgen_var_1381;
19251 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1381, 1);
19252 stream->write((uint64_t*)&cgen_var_1381, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080019253 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
19254}
19255
19256void VkEncoder::vkCmdEndDebugUtilsLabelEXT(
19257 VkCommandBuffer commandBuffer)
19258{
19259 auto stream = mImpl->stream();
19260 auto countingStream = mImpl->countingStream();
19261 auto resources = mImpl->resources();
19262 auto pool = mImpl->pool();
19263 stream->setHandleMapping(resources->unwrapMapping());
19264 VkCommandBuffer local_commandBuffer;
19265 local_commandBuffer = commandBuffer;
19266 countingStream->rewind();
19267 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019268 uint64_t cgen_var_1382;
19269 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1382, 1);
19270 countingStream->write((uint64_t*)&cgen_var_1382, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080019271 }
19272 uint32_t packetSize_vkCmdEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19273 countingStream->rewind();
19274 uint32_t opcode_vkCmdEndDebugUtilsLabelEXT = OP_vkCmdEndDebugUtilsLabelEXT;
19275 stream->write(&opcode_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
19276 stream->write(&packetSize_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019277 uint64_t cgen_var_1383;
19278 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1383, 1);
19279 stream->write((uint64_t*)&cgen_var_1383, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080019280}
19281
19282void VkEncoder::vkCmdInsertDebugUtilsLabelEXT(
19283 VkCommandBuffer commandBuffer,
19284 const VkDebugUtilsLabelEXT* pLabelInfo)
19285{
19286 auto stream = mImpl->stream();
19287 auto countingStream = mImpl->countingStream();
19288 auto resources = mImpl->resources();
19289 auto pool = mImpl->pool();
19290 stream->setHandleMapping(resources->unwrapMapping());
19291 VkCommandBuffer local_commandBuffer;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080019292 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019293 local_commandBuffer = commandBuffer;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080019294 local_pLabelInfo = nullptr;
19295 if (pLabelInfo)
19296 {
19297 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
19298 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
19299 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019300 if (local_pLabelInfo)
19301 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019302 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019303 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080019304 countingStream->rewind();
19305 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019306 uint64_t cgen_var_1384;
19307 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1384, 1);
19308 countingStream->write((uint64_t*)&cgen_var_1384, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080019309 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
19310 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019311 uint32_t packetSize_vkCmdInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19312 countingStream->rewind();
19313 uint32_t opcode_vkCmdInsertDebugUtilsLabelEXT = OP_vkCmdInsertDebugUtilsLabelEXT;
19314 stream->write(&opcode_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
19315 stream->write(&packetSize_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019316 uint64_t cgen_var_1385;
19317 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1385, 1);
19318 stream->write((uint64_t*)&cgen_var_1385, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019319 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019320}
19321
19322VkResult VkEncoder::vkCreateDebugUtilsMessengerEXT(
19323 VkInstance instance,
19324 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
19325 const VkAllocationCallbacks* pAllocator,
19326 VkDebugUtilsMessengerEXT* pMessenger)
19327{
19328 auto stream = mImpl->stream();
19329 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019330 auto resources = mImpl->resources();
19331 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019332 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019333 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019334 VkDebugUtilsMessengerCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019335 VkAllocationCallbacks* local_pAllocator;
19336 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019337 local_pCreateInfo = nullptr;
19338 if (pCreateInfo)
19339 {
19340 local_pCreateInfo = (VkDebugUtilsMessengerCreateInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCreateInfoEXT));
19341 deepcopy_VkDebugUtilsMessengerCreateInfoEXT(pool, pCreateInfo, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
19342 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019343 local_pAllocator = nullptr;
19344 if (pAllocator)
19345 {
19346 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19347 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19348 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019349 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019350 if (local_pCreateInfo)
19351 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019352 transform_tohost_VkDebugUtilsMessengerCreateInfoEXT(mImpl->resources(), (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019353 }
19354 if (local_pAllocator)
19355 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019356 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019357 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019358 countingStream->rewind();
19359 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019360 uint64_t cgen_var_1386;
19361 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1386, 1);
19362 countingStream->write((uint64_t*)&cgen_var_1386, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019363 marshal_VkDebugUtilsMessengerCreateInfoEXT(countingStream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019364 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019365 uint64_t cgen_var_1387 = (uint64_t)(uintptr_t)local_pAllocator;
19366 countingStream->putBe64(cgen_var_1387);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019367 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019368 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019369 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019370 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080019371 uint64_t cgen_var_1388;
19372 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1388, 1);
19373 countingStream->write((uint64_t*)&cgen_var_1388, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019374 }
19375 uint32_t packetSize_vkCreateDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19376 countingStream->rewind();
19377 uint32_t opcode_vkCreateDebugUtilsMessengerEXT = OP_vkCreateDebugUtilsMessengerEXT;
19378 stream->write(&opcode_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
19379 stream->write(&packetSize_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019380 uint64_t cgen_var_1389;
19381 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1389, 1);
19382 stream->write((uint64_t*)&cgen_var_1389, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019383 marshal_VkDebugUtilsMessengerCreateInfoEXT(stream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019384 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019385 uint64_t cgen_var_1390 = (uint64_t)(uintptr_t)local_pAllocator;
19386 stream->putBe64(cgen_var_1390);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019387 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019388 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019389 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019390 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019391 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080019392 uint64_t cgen_var_1391;
19393 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1391, 1);
19394 stream->write((uint64_t*)&cgen_var_1391, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019395 stream->setHandleMapping(resources->unwrapMapping());
19396 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080019397 uint64_t cgen_var_1392;
19398 stream->read((uint64_t*)&cgen_var_1392, 8);
19399 stream->handleMapping()->mapHandles_u64_VkDebugUtilsMessengerEXT(&cgen_var_1392, (VkDebugUtilsMessengerEXT*)pMessenger, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019400 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019401 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
19402 stream->read(&vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019403 countingStream->clearPool();
19404 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019405 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019406 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
19407}
19408
19409void VkEncoder::vkDestroyDebugUtilsMessengerEXT(
19410 VkInstance instance,
19411 VkDebugUtilsMessengerEXT messenger,
19412 const VkAllocationCallbacks* pAllocator)
19413{
19414 auto stream = mImpl->stream();
19415 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019416 auto resources = mImpl->resources();
19417 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019418 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019419 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019420 VkDebugUtilsMessengerEXT local_messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019421 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019422 local_instance = instance;
19423 local_messenger = messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019424 local_pAllocator = nullptr;
19425 if (pAllocator)
19426 {
19427 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19428 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19429 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019430 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019431 if (local_pAllocator)
19432 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019433 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019434 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019435 countingStream->rewind();
19436 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019437 uint64_t cgen_var_1393;
19438 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1393, 1);
19439 countingStream->write((uint64_t*)&cgen_var_1393, 1 * 8);
19440 uint64_t cgen_var_1394;
19441 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1394, 1);
19442 countingStream->write((uint64_t*)&cgen_var_1394, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019443 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019444 uint64_t cgen_var_1395 = (uint64_t)(uintptr_t)local_pAllocator;
19445 countingStream->putBe64(cgen_var_1395);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019446 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019447 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019448 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019449 }
19450 }
19451 uint32_t packetSize_vkDestroyDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19452 countingStream->rewind();
19453 uint32_t opcode_vkDestroyDebugUtilsMessengerEXT = OP_vkDestroyDebugUtilsMessengerEXT;
19454 stream->write(&opcode_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
19455 stream->write(&packetSize_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019456 uint64_t cgen_var_1396;
19457 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1396, 1);
19458 stream->write((uint64_t*)&cgen_var_1396, 1 * 8);
19459 uint64_t cgen_var_1397;
19460 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1397, 1);
19461 stream->write((uint64_t*)&cgen_var_1397, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019462 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019463 uint64_t cgen_var_1398 = (uint64_t)(uintptr_t)local_pAllocator;
19464 stream->putBe64(cgen_var_1398);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019465 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019466 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019467 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019468 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019469 resources->destroyMapping()->mapHandles_VkDebugUtilsMessengerEXT((VkDebugUtilsMessengerEXT*)&messenger);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019470}
19471
19472void VkEncoder::vkSubmitDebugUtilsMessageEXT(
19473 VkInstance instance,
19474 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
19475 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
19476 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
19477{
19478 auto stream = mImpl->stream();
19479 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019480 auto resources = mImpl->resources();
19481 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019482 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019483 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019484 VkDebugUtilsMessageSeverityFlagBitsEXT local_messageSeverity;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019485 VkDebugUtilsMessageTypeFlagsEXT local_messageTypes;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019486 VkDebugUtilsMessengerCallbackDataEXT* local_pCallbackData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019487 local_instance = instance;
19488 local_messageSeverity = messageSeverity;
19489 local_messageTypes = messageTypes;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019490 local_pCallbackData = nullptr;
19491 if (pCallbackData)
19492 {
19493 local_pCallbackData = (VkDebugUtilsMessengerCallbackDataEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCallbackDataEXT));
19494 deepcopy_VkDebugUtilsMessengerCallbackDataEXT(pool, pCallbackData, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
19495 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019496 if (local_pCallbackData)
19497 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019498 transform_tohost_VkDebugUtilsMessengerCallbackDataEXT(mImpl->resources(), (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019499 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019500 countingStream->rewind();
19501 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019502 uint64_t cgen_var_1399;
19503 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1399, 1);
19504 countingStream->write((uint64_t*)&cgen_var_1399, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019505 countingStream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
19506 countingStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
19507 marshal_VkDebugUtilsMessengerCallbackDataEXT(countingStream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019508 }
19509 uint32_t packetSize_vkSubmitDebugUtilsMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19510 countingStream->rewind();
19511 uint32_t opcode_vkSubmitDebugUtilsMessageEXT = OP_vkSubmitDebugUtilsMessageEXT;
19512 stream->write(&opcode_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
19513 stream->write(&packetSize_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019514 uint64_t cgen_var_1400;
19515 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1400, 1);
19516 stream->write((uint64_t*)&cgen_var_1400, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019517 stream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
19518 stream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
19519 marshal_VkDebugUtilsMessengerCallbackDataEXT(stream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019520}
19521
19522#endif
19523#ifdef VK_ANDROID_external_memory_android_hardware_buffer
19524VkResult VkEncoder::vkGetAndroidHardwareBufferPropertiesANDROID(
19525 VkDevice device,
19526 const AHardwareBuffer* buffer,
19527 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
19528{
19529 auto stream = mImpl->stream();
19530 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019531 auto resources = mImpl->resources();
19532 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019533 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019534 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019535 AHardwareBuffer* local_buffer;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019536 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019537 local_buffer = nullptr;
19538 if (buffer)
19539 {
19540 local_buffer = (AHardwareBuffer*)pool->dupArray(buffer, sizeof(const AHardwareBuffer));
19541 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019542 countingStream->rewind();
19543 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019544 uint64_t cgen_var_1401;
19545 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1401, 1);
19546 countingStream->write((uint64_t*)&cgen_var_1401, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019547 countingStream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019548 marshal_VkAndroidHardwareBufferPropertiesANDROID(countingStream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
19549 }
19550 uint32_t packetSize_vkGetAndroidHardwareBufferPropertiesANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19551 countingStream->rewind();
19552 uint32_t opcode_vkGetAndroidHardwareBufferPropertiesANDROID = OP_vkGetAndroidHardwareBufferPropertiesANDROID;
19553 stream->write(&opcode_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
19554 stream->write(&packetSize_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019555 uint64_t cgen_var_1402;
19556 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1402, 1);
19557 stream->write((uint64_t*)&cgen_var_1402, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019558 stream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019559 marshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
19560 unmarshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080019561 if (pProperties)
19562 {
19563 transform_fromhost_VkAndroidHardwareBufferPropertiesANDROID(mImpl->resources(), (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
19564 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019565 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
19566 stream->read(&vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019567 countingStream->clearPool();
19568 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019569 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019570 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
19571}
19572
19573VkResult VkEncoder::vkGetMemoryAndroidHardwareBufferANDROID(
19574 VkDevice device,
19575 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
19576 AHardwareBuffer** pBuffer)
19577{
19578 auto stream = mImpl->stream();
19579 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019580 auto resources = mImpl->resources();
19581 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019582 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019583 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019584 VkMemoryGetAndroidHardwareBufferInfoANDROID* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019585 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019586 local_pInfo = nullptr;
19587 if (pInfo)
19588 {
19589 local_pInfo = (VkMemoryGetAndroidHardwareBufferInfoANDROID*)pool->alloc(sizeof(const VkMemoryGetAndroidHardwareBufferInfoANDROID));
19590 deepcopy_VkMemoryGetAndroidHardwareBufferInfoANDROID(pool, pInfo, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
19591 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019592 if (local_pInfo)
19593 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019594 transform_tohost_VkMemoryGetAndroidHardwareBufferInfoANDROID(mImpl->resources(), (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019595 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019596 countingStream->rewind();
19597 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019598 uint64_t cgen_var_1403;
19599 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1403, 1);
19600 countingStream->write((uint64_t*)&cgen_var_1403, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019601 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(countingStream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019602 countingStream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
19603 }
19604 uint32_t packetSize_vkGetMemoryAndroidHardwareBufferANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19605 countingStream->rewind();
19606 uint32_t opcode_vkGetMemoryAndroidHardwareBufferANDROID = OP_vkGetMemoryAndroidHardwareBufferANDROID;
19607 stream->write(&opcode_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
19608 stream->write(&packetSize_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019609 uint64_t cgen_var_1404;
19610 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1404, 1);
19611 stream->write((uint64_t*)&cgen_var_1404, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019612 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(stream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019613 stream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
19614 stream->read((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
19615 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
19616 stream->read(&vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019617 countingStream->clearPool();
19618 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019619 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019620 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
19621}
19622
19623#endif
19624#ifdef VK_EXT_sampler_filter_minmax
19625#endif
19626#ifdef VK_AMD_gpu_shader_int16
19627#endif
19628#ifdef VK_AMD_mixed_attachment_samples
19629#endif
19630#ifdef VK_AMD_shader_fragment_mask
19631#endif
19632#ifdef VK_EXT_shader_stencil_export
19633#endif
19634#ifdef VK_EXT_sample_locations
19635void VkEncoder::vkCmdSetSampleLocationsEXT(
19636 VkCommandBuffer commandBuffer,
19637 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
19638{
19639 auto stream = mImpl->stream();
19640 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019641 auto resources = mImpl->resources();
19642 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019643 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019644 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019645 VkSampleLocationsInfoEXT* local_pSampleLocationsInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019646 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019647 local_pSampleLocationsInfo = nullptr;
19648 if (pSampleLocationsInfo)
19649 {
19650 local_pSampleLocationsInfo = (VkSampleLocationsInfoEXT*)pool->alloc(sizeof(const VkSampleLocationsInfoEXT));
19651 deepcopy_VkSampleLocationsInfoEXT(pool, pSampleLocationsInfo, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
19652 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019653 if (local_pSampleLocationsInfo)
19654 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019655 transform_tohost_VkSampleLocationsInfoEXT(mImpl->resources(), (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019656 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019657 countingStream->rewind();
19658 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019659 uint64_t cgen_var_1405;
19660 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1405, 1);
19661 countingStream->write((uint64_t*)&cgen_var_1405, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019662 marshal_VkSampleLocationsInfoEXT(countingStream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019663 }
19664 uint32_t packetSize_vkCmdSetSampleLocationsEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19665 countingStream->rewind();
19666 uint32_t opcode_vkCmdSetSampleLocationsEXT = OP_vkCmdSetSampleLocationsEXT;
19667 stream->write(&opcode_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
19668 stream->write(&packetSize_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019669 uint64_t cgen_var_1406;
19670 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1406, 1);
19671 stream->write((uint64_t*)&cgen_var_1406, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019672 marshal_VkSampleLocationsInfoEXT(stream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019673}
19674
19675void VkEncoder::vkGetPhysicalDeviceMultisamplePropertiesEXT(
19676 VkPhysicalDevice physicalDevice,
19677 VkSampleCountFlagBits samples,
19678 VkMultisamplePropertiesEXT* pMultisampleProperties)
19679{
19680 auto stream = mImpl->stream();
19681 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019682 auto resources = mImpl->resources();
19683 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019684 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019685 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019686 VkSampleCountFlagBits local_samples;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019687 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019688 local_samples = samples;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019689 countingStream->rewind();
19690 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019691 uint64_t cgen_var_1407;
19692 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1407, 1);
19693 countingStream->write((uint64_t*)&cgen_var_1407, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019694 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019695 marshal_VkMultisamplePropertiesEXT(countingStream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
19696 }
19697 uint32_t packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19698 countingStream->rewind();
19699 uint32_t opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT = OP_vkGetPhysicalDeviceMultisamplePropertiesEXT;
19700 stream->write(&opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
19701 stream->write(&packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019702 uint64_t cgen_var_1408;
19703 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1408, 1);
19704 stream->write((uint64_t*)&cgen_var_1408, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019705 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019706 marshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
19707 unmarshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080019708 if (pMultisampleProperties)
19709 {
19710 transform_fromhost_VkMultisamplePropertiesEXT(mImpl->resources(), (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
19711 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019712}
19713
19714#endif
19715#ifdef VK_EXT_blend_operation_advanced
19716#endif
19717#ifdef VK_NV_fragment_coverage_to_color
19718#endif
19719#ifdef VK_NV_framebuffer_mixed_samples
19720#endif
19721#ifdef VK_NV_fill_rectangle
19722#endif
19723#ifdef VK_EXT_post_depth_coverage
19724#endif
19725#ifdef VK_EXT_validation_cache
19726VkResult VkEncoder::vkCreateValidationCacheEXT(
19727 VkDevice device,
19728 const VkValidationCacheCreateInfoEXT* pCreateInfo,
19729 const VkAllocationCallbacks* pAllocator,
19730 VkValidationCacheEXT* pValidationCache)
19731{
19732 auto stream = mImpl->stream();
19733 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019734 auto resources = mImpl->resources();
19735 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019736 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019737 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019738 VkValidationCacheCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019739 VkAllocationCallbacks* local_pAllocator;
19740 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019741 local_pCreateInfo = nullptr;
19742 if (pCreateInfo)
19743 {
19744 local_pCreateInfo = (VkValidationCacheCreateInfoEXT*)pool->alloc(sizeof(const VkValidationCacheCreateInfoEXT));
19745 deepcopy_VkValidationCacheCreateInfoEXT(pool, pCreateInfo, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
19746 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019747 local_pAllocator = nullptr;
19748 if (pAllocator)
19749 {
19750 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19751 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19752 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019753 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019754 if (local_pCreateInfo)
19755 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019756 transform_tohost_VkValidationCacheCreateInfoEXT(mImpl->resources(), (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019757 }
19758 if (local_pAllocator)
19759 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019760 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019761 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019762 countingStream->rewind();
19763 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019764 uint64_t cgen_var_1409;
19765 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1409, 1);
19766 countingStream->write((uint64_t*)&cgen_var_1409, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019767 marshal_VkValidationCacheCreateInfoEXT(countingStream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019768 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019769 uint64_t cgen_var_1410 = (uint64_t)(uintptr_t)local_pAllocator;
19770 countingStream->putBe64(cgen_var_1410);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019771 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019772 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019773 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019774 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080019775 uint64_t cgen_var_1411;
19776 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1411, 1);
19777 countingStream->write((uint64_t*)&cgen_var_1411, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019778 }
19779 uint32_t packetSize_vkCreateValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19780 countingStream->rewind();
19781 uint32_t opcode_vkCreateValidationCacheEXT = OP_vkCreateValidationCacheEXT;
19782 stream->write(&opcode_vkCreateValidationCacheEXT, sizeof(uint32_t));
19783 stream->write(&packetSize_vkCreateValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019784 uint64_t cgen_var_1412;
19785 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1412, 1);
19786 stream->write((uint64_t*)&cgen_var_1412, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019787 marshal_VkValidationCacheCreateInfoEXT(stream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019788 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019789 uint64_t cgen_var_1413 = (uint64_t)(uintptr_t)local_pAllocator;
19790 stream->putBe64(cgen_var_1413);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019791 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019792 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019793 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019794 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019795 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080019796 uint64_t cgen_var_1414;
19797 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1414, 1);
19798 stream->write((uint64_t*)&cgen_var_1414, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019799 stream->setHandleMapping(resources->unwrapMapping());
19800 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080019801 uint64_t cgen_var_1415;
19802 stream->read((uint64_t*)&cgen_var_1415, 8);
19803 stream->handleMapping()->mapHandles_u64_VkValidationCacheEXT(&cgen_var_1415, (VkValidationCacheEXT*)pValidationCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019804 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019805 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
19806 stream->read(&vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019807 countingStream->clearPool();
19808 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019809 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019810 return vkCreateValidationCacheEXT_VkResult_return;
19811}
19812
19813void VkEncoder::vkDestroyValidationCacheEXT(
19814 VkDevice device,
19815 VkValidationCacheEXT validationCache,
19816 const VkAllocationCallbacks* pAllocator)
19817{
19818 auto stream = mImpl->stream();
19819 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019820 auto resources = mImpl->resources();
19821 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019822 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019823 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019824 VkValidationCacheEXT local_validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019825 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019826 local_device = device;
19827 local_validationCache = validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019828 local_pAllocator = nullptr;
19829 if (pAllocator)
19830 {
19831 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19832 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19833 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019834 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019835 if (local_pAllocator)
19836 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019837 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019838 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019839 countingStream->rewind();
19840 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019841 uint64_t cgen_var_1416;
19842 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1416, 1);
19843 countingStream->write((uint64_t*)&cgen_var_1416, 1 * 8);
19844 uint64_t cgen_var_1417;
19845 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1417, 1);
19846 countingStream->write((uint64_t*)&cgen_var_1417, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019847 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019848 uint64_t cgen_var_1418 = (uint64_t)(uintptr_t)local_pAllocator;
19849 countingStream->putBe64(cgen_var_1418);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019850 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019851 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019852 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019853 }
19854 }
19855 uint32_t packetSize_vkDestroyValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19856 countingStream->rewind();
19857 uint32_t opcode_vkDestroyValidationCacheEXT = OP_vkDestroyValidationCacheEXT;
19858 stream->write(&opcode_vkDestroyValidationCacheEXT, sizeof(uint32_t));
19859 stream->write(&packetSize_vkDestroyValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019860 uint64_t cgen_var_1419;
19861 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1419, 1);
19862 stream->write((uint64_t*)&cgen_var_1419, 1 * 8);
19863 uint64_t cgen_var_1420;
19864 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1420, 1);
19865 stream->write((uint64_t*)&cgen_var_1420, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019866 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019867 uint64_t cgen_var_1421 = (uint64_t)(uintptr_t)local_pAllocator;
19868 stream->putBe64(cgen_var_1421);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019869 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019870 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019871 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019872 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019873 resources->destroyMapping()->mapHandles_VkValidationCacheEXT((VkValidationCacheEXT*)&validationCache);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019874}
19875
19876VkResult VkEncoder::vkMergeValidationCachesEXT(
19877 VkDevice device,
19878 VkValidationCacheEXT dstCache,
19879 uint32_t srcCacheCount,
19880 const VkValidationCacheEXT* pSrcCaches)
19881{
19882 auto stream = mImpl->stream();
19883 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019884 auto resources = mImpl->resources();
19885 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019886 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019887 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019888 VkValidationCacheEXT local_dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019889 uint32_t local_srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019890 VkValidationCacheEXT* local_pSrcCaches;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019891 local_device = device;
19892 local_dstCache = dstCache;
19893 local_srcCacheCount = srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019894 local_pSrcCaches = nullptr;
19895 if (pSrcCaches)
19896 {
19897 local_pSrcCaches = (VkValidationCacheEXT*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
19898 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019899 countingStream->rewind();
19900 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019901 uint64_t cgen_var_1422;
19902 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1422, 1);
19903 countingStream->write((uint64_t*)&cgen_var_1422, 1 * 8);
19904 uint64_t cgen_var_1423;
19905 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1423, 1);
19906 countingStream->write((uint64_t*)&cgen_var_1423, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019907 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019908 if (((srcCacheCount)))
19909 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019910 uint64_t* cgen_var_1424;
19911 countingStream->alloc((void**)&cgen_var_1424, ((srcCacheCount)) * 8);
19912 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1424, ((srcCacheCount)));
19913 countingStream->write((uint64_t*)cgen_var_1424, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080019914 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019915 }
19916 uint32_t packetSize_vkMergeValidationCachesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19917 countingStream->rewind();
19918 uint32_t opcode_vkMergeValidationCachesEXT = OP_vkMergeValidationCachesEXT;
19919 stream->write(&opcode_vkMergeValidationCachesEXT, sizeof(uint32_t));
19920 stream->write(&packetSize_vkMergeValidationCachesEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019921 uint64_t cgen_var_1425;
19922 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1425, 1);
19923 stream->write((uint64_t*)&cgen_var_1425, 1 * 8);
19924 uint64_t cgen_var_1426;
19925 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1426, 1);
19926 stream->write((uint64_t*)&cgen_var_1426, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019927 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019928 if (((srcCacheCount)))
19929 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019930 uint64_t* cgen_var_1427;
19931 stream->alloc((void**)&cgen_var_1427, ((srcCacheCount)) * 8);
19932 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1427, ((srcCacheCount)));
19933 stream->write((uint64_t*)cgen_var_1427, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080019934 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019935 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
19936 stream->read(&vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019937 countingStream->clearPool();
19938 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019939 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019940 return vkMergeValidationCachesEXT_VkResult_return;
19941}
19942
19943VkResult VkEncoder::vkGetValidationCacheDataEXT(
19944 VkDevice device,
19945 VkValidationCacheEXT validationCache,
19946 size_t* pDataSize,
19947 void* pData)
19948{
19949 auto stream = mImpl->stream();
19950 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019951 auto resources = mImpl->resources();
19952 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019953 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019954 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019955 VkValidationCacheEXT local_validationCache;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019956 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019957 local_validationCache = validationCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019958 countingStream->rewind();
19959 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019960 uint64_t cgen_var_1428;
19961 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1428, 1);
19962 countingStream->write((uint64_t*)&cgen_var_1428, 1 * 8);
19963 uint64_t cgen_var_1429;
19964 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1429, 1);
19965 countingStream->write((uint64_t*)&cgen_var_1429, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019966 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019967 uint64_t cgen_var_1430 = (uint64_t)(uintptr_t)pDataSize;
19968 countingStream->putBe64(cgen_var_1430);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019969 if (pDataSize)
19970 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019971 uint64_t cgen_var_1431 = (uint64_t)(*pDataSize);
19972 countingStream->putBe64(cgen_var_1431);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019973 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019974 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019975 uint64_t cgen_var_1432 = (uint64_t)(uintptr_t)pData;
19976 countingStream->putBe64(cgen_var_1432);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019977 if (pData)
19978 {
19979 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
19980 }
19981 }
19982 uint32_t packetSize_vkGetValidationCacheDataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19983 countingStream->rewind();
19984 uint32_t opcode_vkGetValidationCacheDataEXT = OP_vkGetValidationCacheDataEXT;
19985 stream->write(&opcode_vkGetValidationCacheDataEXT, sizeof(uint32_t));
19986 stream->write(&packetSize_vkGetValidationCacheDataEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080019987 uint64_t cgen_var_1433;
19988 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1433, 1);
19989 stream->write((uint64_t*)&cgen_var_1433, 1 * 8);
19990 uint64_t cgen_var_1434;
19991 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1434, 1);
19992 stream->write((uint64_t*)&cgen_var_1434, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019993 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080019994 uint64_t cgen_var_1435 = (uint64_t)(uintptr_t)pDataSize;
19995 stream->putBe64(cgen_var_1435);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019996 if (pDataSize)
19997 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080019998 uint64_t cgen_var_1436 = (uint64_t)(*pDataSize);
19999 stream->putBe64(cgen_var_1436);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020000 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020001 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080020002 uint64_t cgen_var_1437 = (uint64_t)(uintptr_t)pData;
20003 stream->putBe64(cgen_var_1437);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020004 if (pData)
20005 {
20006 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
20007 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020008 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020009 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020010 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020011 if (pDataSize)
20012 {
20013 if (!(check_pDataSize))
20014 {
20015 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
20016 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080020017 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020018 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020019 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020020 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020021 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020022 if (pData)
20023 {
20024 if (!(check_pData))
20025 {
20026 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
20027 }
20028 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
20029 }
20030 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
20031 stream->read(&vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020032 countingStream->clearPool();
20033 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020034 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020035 return vkGetValidationCacheDataEXT_VkResult_return;
20036}
20037
20038#endif
20039#ifdef VK_EXT_descriptor_indexing
20040#endif
20041#ifdef VK_EXT_shader_viewport_index_layer
20042#endif
20043#ifdef VK_EXT_global_priority
20044#endif
20045#ifdef VK_EXT_external_memory_host
20046VkResult VkEncoder::vkGetMemoryHostPointerPropertiesEXT(
20047 VkDevice device,
20048 VkExternalMemoryHandleTypeFlagBits handleType,
20049 const void* pHostPointer,
20050 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
20051{
20052 auto stream = mImpl->stream();
20053 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020054 auto resources = mImpl->resources();
20055 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020056 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020057 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020058 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020059 void* local_pHostPointer;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020060 local_device = device;
20061 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020062 local_pHostPointer = nullptr;
20063 if (pHostPointer)
20064 {
20065 local_pHostPointer = (void*)pool->dupArray(pHostPointer, sizeof(const uint8_t));
20066 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020067 countingStream->rewind();
20068 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080020069 uint64_t cgen_var_1441;
20070 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1441, 1);
20071 countingStream->write((uint64_t*)&cgen_var_1441, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020072 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020073 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080020074 uint64_t cgen_var_1442 = (uint64_t)(uintptr_t)local_pHostPointer;
20075 countingStream->putBe64(cgen_var_1442);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020076 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020077 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020078 countingStream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020079 }
20080 marshal_VkMemoryHostPointerPropertiesEXT(countingStream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
20081 }
20082 uint32_t packetSize_vkGetMemoryHostPointerPropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20083 countingStream->rewind();
20084 uint32_t opcode_vkGetMemoryHostPointerPropertiesEXT = OP_vkGetMemoryHostPointerPropertiesEXT;
20085 stream->write(&opcode_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
20086 stream->write(&packetSize_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080020087 uint64_t cgen_var_1443;
20088 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1443, 1);
20089 stream->write((uint64_t*)&cgen_var_1443, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020090 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020091 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080020092 uint64_t cgen_var_1444 = (uint64_t)(uintptr_t)local_pHostPointer;
20093 stream->putBe64(cgen_var_1444);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020094 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020095 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020096 stream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020097 }
20098 marshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
20099 unmarshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080020100 if (pMemoryHostPointerProperties)
20101 {
20102 transform_fromhost_VkMemoryHostPointerPropertiesEXT(mImpl->resources(), (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
20103 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020104 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
20105 stream->read(&vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020106 countingStream->clearPool();
20107 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020108 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020109 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
20110}
20111
20112#endif
20113#ifdef VK_AMD_buffer_marker
20114void VkEncoder::vkCmdWriteBufferMarkerAMD(
20115 VkCommandBuffer commandBuffer,
20116 VkPipelineStageFlagBits pipelineStage,
20117 VkBuffer dstBuffer,
20118 VkDeviceSize dstOffset,
20119 uint32_t marker)
20120{
20121 auto stream = mImpl->stream();
20122 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020123 auto resources = mImpl->resources();
20124 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020125 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020126 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020127 VkPipelineStageFlagBits local_pipelineStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020128 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020129 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020130 uint32_t local_marker;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020131 local_commandBuffer = commandBuffer;
20132 local_pipelineStage = pipelineStage;
20133 local_dstBuffer = dstBuffer;
20134 local_dstOffset = dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020135 local_marker = marker;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020136 countingStream->rewind();
20137 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080020138 uint64_t cgen_var_1445;
20139 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1445, 1);
20140 countingStream->write((uint64_t*)&cgen_var_1445, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020141 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang808a6312018-11-13 21:06:15 -080020142 uint64_t cgen_var_1446;
20143 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1446, 1);
20144 countingStream->write((uint64_t*)&cgen_var_1446, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020145 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
20146 countingStream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020147 }
20148 uint32_t packetSize_vkCmdWriteBufferMarkerAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20149 countingStream->rewind();
20150 uint32_t opcode_vkCmdWriteBufferMarkerAMD = OP_vkCmdWriteBufferMarkerAMD;
20151 stream->write(&opcode_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
20152 stream->write(&packetSize_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080020153 uint64_t cgen_var_1447;
20154 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1447, 1);
20155 stream->write((uint64_t*)&cgen_var_1447, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020156 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang808a6312018-11-13 21:06:15 -080020157 uint64_t cgen_var_1448;
20158 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1448, 1);
20159 stream->write((uint64_t*)&cgen_var_1448, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020160 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
20161 stream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020162}
20163
20164#endif
20165#ifdef VK_AMD_shader_core_properties
20166#endif
20167#ifdef VK_EXT_vertex_attribute_divisor
20168#endif
20169#ifdef VK_NV_shader_subgroup_partitioned
20170#endif
20171#ifdef VK_NV_device_diagnostic_checkpoints
20172void VkEncoder::vkCmdSetCheckpointNV(
20173 VkCommandBuffer commandBuffer,
20174 const void* pCheckpointMarker)
20175{
20176 auto stream = mImpl->stream();
20177 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020178 auto resources = mImpl->resources();
20179 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020180 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020181 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020182 void* local_pCheckpointMarker;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020183 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020184 local_pCheckpointMarker = nullptr;
20185 if (pCheckpointMarker)
20186 {
20187 local_pCheckpointMarker = (void*)pool->dupArray(pCheckpointMarker, sizeof(const uint8_t));
20188 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020189 countingStream->rewind();
20190 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080020191 uint64_t cgen_var_1449;
20192 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1449, 1);
20193 countingStream->write((uint64_t*)&cgen_var_1449, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020194 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080020195 uint64_t cgen_var_1450 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
20196 countingStream->putBe64(cgen_var_1450);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020197 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020198 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020199 countingStream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020200 }
20201 }
20202 uint32_t packetSize_vkCmdSetCheckpointNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20203 countingStream->rewind();
20204 uint32_t opcode_vkCmdSetCheckpointNV = OP_vkCmdSetCheckpointNV;
20205 stream->write(&opcode_vkCmdSetCheckpointNV, sizeof(uint32_t));
20206 stream->write(&packetSize_vkCmdSetCheckpointNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080020207 uint64_t cgen_var_1451;
20208 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1451, 1);
20209 stream->write((uint64_t*)&cgen_var_1451, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020210 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080020211 uint64_t cgen_var_1452 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
20212 stream->putBe64(cgen_var_1452);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020213 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020214 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020215 stream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020216 }
20217}
20218
20219void VkEncoder::vkGetQueueCheckpointDataNV(
20220 VkQueue queue,
20221 uint32_t* pCheckpointDataCount,
20222 VkCheckpointDataNV* pCheckpointData)
20223{
20224 auto stream = mImpl->stream();
20225 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020226 auto resources = mImpl->resources();
20227 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020228 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020229 VkQueue local_queue;
20230 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020231 countingStream->rewind();
20232 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080020233 uint64_t cgen_var_1453;
20234 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1453, 1);
20235 countingStream->write((uint64_t*)&cgen_var_1453, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020236 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080020237 uint64_t cgen_var_1454 = (uint64_t)(uintptr_t)pCheckpointDataCount;
20238 countingStream->putBe64(cgen_var_1454);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020239 if (pCheckpointDataCount)
20240 {
20241 countingStream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
20242 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020243 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080020244 uint64_t cgen_var_1455 = (uint64_t)(uintptr_t)pCheckpointData;
20245 countingStream->putBe64(cgen_var_1455);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020246 if (pCheckpointData)
20247 {
20248 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
20249 {
20250 marshal_VkCheckpointDataNV(countingStream, (VkCheckpointDataNV*)(pCheckpointData + i));
20251 }
20252 }
20253 }
20254 uint32_t packetSize_vkGetQueueCheckpointDataNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20255 countingStream->rewind();
20256 uint32_t opcode_vkGetQueueCheckpointDataNV = OP_vkGetQueueCheckpointDataNV;
20257 stream->write(&opcode_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
20258 stream->write(&packetSize_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080020259 uint64_t cgen_var_1456;
20260 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1456, 1);
20261 stream->write((uint64_t*)&cgen_var_1456, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020262 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080020263 uint64_t cgen_var_1457 = (uint64_t)(uintptr_t)pCheckpointDataCount;
20264 stream->putBe64(cgen_var_1457);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020265 if (pCheckpointDataCount)
20266 {
20267 stream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
20268 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020269 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080020270 uint64_t cgen_var_1458 = (uint64_t)(uintptr_t)pCheckpointData;
20271 stream->putBe64(cgen_var_1458);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020272 if (pCheckpointData)
20273 {
20274 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
20275 {
20276 marshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
20277 }
20278 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020279 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020280 uint32_t* check_pCheckpointDataCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020281 check_pCheckpointDataCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020282 if (pCheckpointDataCount)
20283 {
20284 if (!(check_pCheckpointDataCount))
20285 {
20286 fprintf(stderr, "fatal: pCheckpointDataCount inconsistent between guest and host\n");
20287 }
20288 stream->read((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
20289 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020290 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020291 VkCheckpointDataNV* check_pCheckpointData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020292 check_pCheckpointData = (VkCheckpointDataNV*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020293 if (pCheckpointData)
20294 {
20295 if (!(check_pCheckpointData))
20296 {
20297 fprintf(stderr, "fatal: pCheckpointData inconsistent between guest and host\n");
20298 }
20299 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
20300 {
20301 unmarshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
20302 }
20303 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080020304 if (pCheckpointData)
20305 {
20306 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
20307 {
20308 transform_fromhost_VkCheckpointDataNV(mImpl->resources(), (VkCheckpointDataNV*)(pCheckpointData + i));
20309 }
20310 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020311}
20312
20313#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080020314#ifdef VK_GOOGLE_address_space
20315VkResult VkEncoder::vkMapMemoryIntoAddressSpaceGOOGLE(
20316 VkDevice device,
20317 VkDeviceMemory memory,
20318 uint64_t* pAddress)
20319{
20320 mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE_pre(this, VK_SUCCESS, device, memory, pAddress);
20321 auto stream = mImpl->stream();
20322 auto countingStream = mImpl->countingStream();
20323 auto resources = mImpl->resources();
20324 auto pool = mImpl->pool();
20325 stream->setHandleMapping(resources->unwrapMapping());
20326 VkDevice local_device;
20327 VkDeviceMemory local_memory;
20328 local_device = device;
20329 local_memory = memory;
Lingfeng Yangafe29d32018-12-25 13:01:52 -080020330 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080020331 countingStream->rewind();
20332 {
20333 uint64_t cgen_var_1461;
20334 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1461, 1);
20335 countingStream->write((uint64_t*)&cgen_var_1461, 1 * 8);
20336 uint64_t cgen_var_1462;
20337 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1462, 1);
20338 countingStream->write((uint64_t*)&cgen_var_1462, 1 * 8);
20339 // WARNING PTR CHECK
20340 uint64_t cgen_var_1463 = (uint64_t)(uintptr_t)pAddress;
20341 countingStream->putBe64(cgen_var_1463);
20342 if (pAddress)
20343 {
20344 countingStream->write((uint64_t*)pAddress, sizeof(uint64_t));
20345 }
20346 }
20347 uint32_t packetSize_vkMapMemoryIntoAddressSpaceGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20348 countingStream->rewind();
20349 uint32_t opcode_vkMapMemoryIntoAddressSpaceGOOGLE = OP_vkMapMemoryIntoAddressSpaceGOOGLE;
20350 stream->write(&opcode_vkMapMemoryIntoAddressSpaceGOOGLE, sizeof(uint32_t));
20351 stream->write(&packetSize_vkMapMemoryIntoAddressSpaceGOOGLE, sizeof(uint32_t));
20352 uint64_t cgen_var_1464;
20353 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1464, 1);
20354 stream->write((uint64_t*)&cgen_var_1464, 1 * 8);
20355 uint64_t cgen_var_1465;
20356 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1465, 1);
20357 stream->write((uint64_t*)&cgen_var_1465, 1 * 8);
20358 // WARNING PTR CHECK
20359 uint64_t cgen_var_1466 = (uint64_t)(uintptr_t)pAddress;
20360 stream->putBe64(cgen_var_1466);
20361 if (pAddress)
20362 {
20363 stream->write((uint64_t*)pAddress, sizeof(uint64_t));
20364 }
20365 // WARNING PTR CHECK
20366 uint64_t* check_pAddress;
20367 check_pAddress = (uint64_t*)(uintptr_t)stream->getBe64();
20368 if (pAddress)
20369 {
20370 if (!(check_pAddress))
20371 {
20372 fprintf(stderr, "fatal: pAddress inconsistent between guest and host\n");
20373 }
20374 stream->read((uint64_t*)pAddress, sizeof(uint64_t));
20375 }
20376 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
20377 stream->read(&vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, sizeof(VkResult));
20378 countingStream->clearPool();
20379 stream->clearPool();
20380 pool->freeAll();
20381 mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE(this, vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, device, memory, pAddress);
20382 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
20383}
20384
20385#endif
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020386
Lingfeng Yangb1d90102018-11-29 16:10:36 -080020387} // namespace goldfish_vk