blob: dc1ad4494f0f23c6872e5775d64145c9dd77159f [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 Yang858ebe22019-01-22 15:53:52 -080037#include <cutils/properties.h>
38
Lingfeng Yange71c6422018-11-01 19:29:49 -070039#include "goldfish_vk_marshaling_guest.h"
Lingfeng Yang71b596b2018-11-07 18:03:25 -080040#include "goldfish_vk_deepcopy_guest.h"
41#include "goldfish_vk_handlemap_guest.h"
Lingfeng Yang808a6312018-11-13 21:06:15 -080042#include "goldfish_vk_private_defs.h"
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -080043#include "goldfish_vk_transform_guest.h"
Lingfeng Yange71c6422018-11-01 19:29:49 -070044
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070045
Lingfeng Yangb1d90102018-11-29 16:10:36 -080046namespace goldfish_vk {
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070047
48
49
Lingfeng Yang71b596b2018-11-07 18:03:25 -080050using namespace goldfish_vk;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070051
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080052using android::aligned_buf_alloc;
53using android::aligned_buf_free;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080054using android::base::Pool;
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080055
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070056class VkEncoder::Impl {
57public:
Lingfeng Yang858ebe22019-01-22 15:53:52 -080058 Impl(IOStream* stream) : m_stream(stream), m_logEncodes(false) {
59 const char* emuVkLogEncodesPropName = "qemu.vk.log";
60 char encodeProp[PROPERTY_VALUE_MAX];
61 if (property_get(emuVkLogEncodesPropName, encodeProp, nullptr) > 0) {
62 m_logEncodes = atoi(encodeProp) > 0;
63 }
64 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070065 VulkanCountingStream* countingStream() { return &m_countingStream; }
66 VulkanStream* stream() { return &m_stream; }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080067 Pool* pool() { return &m_pool; }
68 ResourceTracker* resources() { return ResourceTracker::get(); }
Lingfeng Yang29c99d92018-11-30 11:15:29 -080069 Validation* validation() { return &m_validation; }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080070
71 void log(const char* text) {
72 if (!m_logEncodes) return;
73 ALOGD("encoder log: %s", text);
74 }
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070075private:
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070076 VulkanCountingStream m_countingStream;
77 VulkanStream m_stream;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080078 Pool m_pool { 8, 4096, 64 };
Lingfeng Yang29c99d92018-11-30 11:15:29 -080079
80 Validation m_validation;
Lingfeng Yang858ebe22019-01-22 15:53:52 -080081 bool m_logEncodes;
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070082};
83
84VkEncoder::VkEncoder(IOStream *stream) :
85 mImpl(new VkEncoder::Impl(stream)) { }
Lingfeng Yang60b411d2018-11-29 00:26:45 -080086
87#define VALIDATE_RET(retType, success, validate) \
88 retType goldfish_vk_validateResult = validate; \
89 if (goldfish_vk_validateResult != success) return goldfish_vk_validateResult; \
90
91#define VALIDATE_VOID(validate) \
92 VkResult goldfish_vk_validateResult = validate; \
93 if (goldfish_vk_validateResult != VK_SUCCESS) return; \
94
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070095#ifdef VK_VERSION_1_0
96VkResult VkEncoder::vkCreateInstance(
97 const VkInstanceCreateInfo* pCreateInfo,
98 const VkAllocationCallbacks* pAllocator,
99 VkInstance* pInstance)
100{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800101 mImpl->log("start vkCreateInstance");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700102 auto stream = mImpl->stream();
103 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800104 auto resources = mImpl->resources();
105 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800106 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800107 VkInstanceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800108 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800109 local_pCreateInfo = nullptr;
110 if (pCreateInfo)
111 {
112 local_pCreateInfo = (VkInstanceCreateInfo*)pool->alloc(sizeof(const VkInstanceCreateInfo));
113 deepcopy_VkInstanceCreateInfo(pool, pCreateInfo, (VkInstanceCreateInfo*)(local_pCreateInfo));
114 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800115 local_pAllocator = nullptr;
116 if (pAllocator)
117 {
118 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
119 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
120 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800121 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -0800122 if (local_pCreateInfo)
123 {
Lingfeng Yang97a06702018-12-24 17:02:43 -0800124 transform_tohost_VkInstanceCreateInfo(mImpl->resources(), (VkInstanceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -0800125 }
126 if (local_pAllocator)
127 {
Lingfeng Yang97a06702018-12-24 17:02:43 -0800128 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -0800129 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700130 countingStream->rewind();
131 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800132 marshal_VkInstanceCreateInfo(countingStream, (VkInstanceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800133 // WARNING PTR CHECK
134 uint64_t cgen_var_0 = (uint64_t)(uintptr_t)local_pAllocator;
135 countingStream->putBe64(cgen_var_0);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800136 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700137 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800138 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700139 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800140 uint64_t cgen_var_1;
141 countingStream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_1, 1);
142 countingStream->write((uint64_t*)&cgen_var_1, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700143 }
144 uint32_t packetSize_vkCreateInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
145 countingStream->rewind();
146 uint32_t opcode_vkCreateInstance = OP_vkCreateInstance;
147 stream->write(&opcode_vkCreateInstance, sizeof(uint32_t));
148 stream->write(&packetSize_vkCreateInstance, sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800149 marshal_VkInstanceCreateInfo(stream, (VkInstanceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800150 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800151 uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator;
152 stream->putBe64(cgen_var_2);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800153 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700154 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800155 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700156 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800157 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -0800158 uint64_t cgen_var_3;
159 stream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_3, 1);
160 stream->write((uint64_t*)&cgen_var_3, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800161 stream->setHandleMapping(resources->unwrapMapping());
162 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -0800163 uint64_t cgen_var_4;
164 stream->read((uint64_t*)&cgen_var_4, 8);
165 stream->handleMapping()->mapHandles_u64_VkInstance(&cgen_var_4, (VkInstance*)pInstance, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800166 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700167 VkResult vkCreateInstance_VkResult_return = (VkResult)0;
168 stream->read(&vkCreateInstance_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800169 countingStream->clearPool();
170 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800171 pool->freeAll();
Lingfeng Yangf0654ff2019-02-02 12:21:24 -0800172 mImpl->resources()->on_vkCreateInstance(this, vkCreateInstance_VkResult_return, pCreateInfo, pAllocator, pInstance);
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800173 mImpl->log("finish vkCreateInstance");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700174 return vkCreateInstance_VkResult_return;
175}
176
177void VkEncoder::vkDestroyInstance(
178 VkInstance instance,
179 const VkAllocationCallbacks* pAllocator)
180{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800181 mImpl->log("start vkDestroyInstance");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700182 auto stream = mImpl->stream();
183 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800184 auto resources = mImpl->resources();
185 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800186 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800187 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800188 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800189 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800190 local_pAllocator = nullptr;
191 if (pAllocator)
192 {
193 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
194 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
195 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800196 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -0800197 if (local_pAllocator)
198 {
Lingfeng Yang97a06702018-12-24 17:02:43 -0800199 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -0800200 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700201 countingStream->rewind();
202 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800203 uint64_t cgen_var_5;
204 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_5, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800205 countingStream->write((uint64_t*)&cgen_var_5, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800206 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800207 uint64_t cgen_var_6 = (uint64_t)(uintptr_t)local_pAllocator;
208 countingStream->putBe64(cgen_var_6);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800209 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700210 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800211 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700212 }
213 }
214 uint32_t packetSize_vkDestroyInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
215 countingStream->rewind();
216 uint32_t opcode_vkDestroyInstance = OP_vkDestroyInstance;
217 stream->write(&opcode_vkDestroyInstance, sizeof(uint32_t));
218 stream->write(&packetSize_vkDestroyInstance, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800219 uint64_t cgen_var_7;
220 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_7, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800221 stream->write((uint64_t*)&cgen_var_7, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800222 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800223 uint64_t cgen_var_8 = (uint64_t)(uintptr_t)local_pAllocator;
224 stream->putBe64(cgen_var_8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800225 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700226 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800227 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700228 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800229 resources->destroyMapping()->mapHandles_VkInstance((VkInstance*)&instance);
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800230 mImpl->log("finish vkDestroyInstance");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700231}
232
233VkResult VkEncoder::vkEnumeratePhysicalDevices(
234 VkInstance instance,
235 uint32_t* pPhysicalDeviceCount,
236 VkPhysicalDevice* pPhysicalDevices)
237{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800238 mImpl->log("start vkEnumeratePhysicalDevices");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700239 auto stream = mImpl->stream();
240 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800241 auto resources = mImpl->resources();
242 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800243 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800244 VkInstance local_instance;
245 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700246 countingStream->rewind();
247 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800248 uint64_t cgen_var_9;
249 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_9, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800250 countingStream->write((uint64_t*)&cgen_var_9, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800251 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800252 uint64_t cgen_var_10 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
253 countingStream->putBe64(cgen_var_10);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700254 if (pPhysicalDeviceCount)
255 {
256 countingStream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
257 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800258 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800259 uint64_t cgen_var_11 = (uint64_t)(uintptr_t)pPhysicalDevices;
260 countingStream->putBe64(cgen_var_11);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700261 if (pPhysicalDevices)
262 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800263 if ((*(pPhysicalDeviceCount)))
264 {
265 uint64_t* cgen_var_12;
266 countingStream->alloc((void**)&cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
267 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_12, (*(pPhysicalDeviceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -0800268 countingStream->write((uint64_t*)cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800269 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700270 }
271 }
272 uint32_t packetSize_vkEnumeratePhysicalDevices = 4 + 4 + (uint32_t)countingStream->bytesWritten();
273 countingStream->rewind();
274 uint32_t opcode_vkEnumeratePhysicalDevices = OP_vkEnumeratePhysicalDevices;
275 stream->write(&opcode_vkEnumeratePhysicalDevices, sizeof(uint32_t));
276 stream->write(&packetSize_vkEnumeratePhysicalDevices, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800277 uint64_t cgen_var_13;
278 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_13, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800279 stream->write((uint64_t*)&cgen_var_13, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800280 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800281 uint64_t cgen_var_14 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
282 stream->putBe64(cgen_var_14);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700283 if (pPhysicalDeviceCount)
284 {
285 stream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
286 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800287 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800288 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800289 uint64_t cgen_var_15 = (uint64_t)(uintptr_t)pPhysicalDevices;
290 stream->putBe64(cgen_var_15);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700291 if (pPhysicalDevices)
292 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800293 if ((*(pPhysicalDeviceCount)))
294 {
295 uint64_t* cgen_var_16;
296 stream->alloc((void**)&cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
297 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_16, (*(pPhysicalDeviceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -0800298 stream->write((uint64_t*)cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800299 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700300 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800301 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800302 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700303 uint32_t* check_pPhysicalDeviceCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800304 check_pPhysicalDeviceCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700305 if (pPhysicalDeviceCount)
306 {
307 if (!(check_pPhysicalDeviceCount))
308 {
309 fprintf(stderr, "fatal: pPhysicalDeviceCount inconsistent between guest and host\n");
310 }
311 stream->read((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
312 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800313 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800314 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700315 VkPhysicalDevice* check_pPhysicalDevices;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800316 check_pPhysicalDevices = (VkPhysicalDevice*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700317 if (pPhysicalDevices)
318 {
319 if (!(check_pPhysicalDevices))
320 {
321 fprintf(stderr, "fatal: pPhysicalDevices inconsistent between guest and host\n");
322 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800323 if ((*(pPhysicalDeviceCount)))
324 {
325 uint64_t* cgen_var_19;
326 stream->alloc((void**)&cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800327 stream->read((uint64_t*)cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800328 stream->handleMapping()->mapHandles_u64_VkPhysicalDevice(cgen_var_19, (VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount)));
329 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700330 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800331 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700332 VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
333 stream->read(&vkEnumeratePhysicalDevices_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800334 countingStream->clearPool();
335 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800336 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800337 mImpl->log("finish vkEnumeratePhysicalDevices");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700338 return vkEnumeratePhysicalDevices_VkResult_return;
339}
340
341void VkEncoder::vkGetPhysicalDeviceFeatures(
342 VkPhysicalDevice physicalDevice,
343 VkPhysicalDeviceFeatures* pFeatures)
344{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800345 mImpl->log("start vkGetPhysicalDeviceFeatures");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700346 auto stream = mImpl->stream();
347 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800348 auto resources = mImpl->resources();
349 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800350 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800351 VkPhysicalDevice local_physicalDevice;
352 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700353 countingStream->rewind();
354 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800355 uint64_t cgen_var_20;
356 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_20, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800357 countingStream->write((uint64_t*)&cgen_var_20, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700358 marshal_VkPhysicalDeviceFeatures(countingStream, (VkPhysicalDeviceFeatures*)(pFeatures));
359 }
360 uint32_t packetSize_vkGetPhysicalDeviceFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
361 countingStream->rewind();
362 uint32_t opcode_vkGetPhysicalDeviceFeatures = OP_vkGetPhysicalDeviceFeatures;
363 stream->write(&opcode_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
364 stream->write(&packetSize_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800365 uint64_t cgen_var_21;
366 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_21, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800367 stream->write((uint64_t*)&cgen_var_21, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700368 marshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
369 unmarshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -0800370 if (pFeatures)
371 {
372 transform_fromhost_VkPhysicalDeviceFeatures(mImpl->resources(), (VkPhysicalDeviceFeatures*)(pFeatures));
373 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800374 mImpl->log("finish vkGetPhysicalDeviceFeatures");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700375}
376
377void VkEncoder::vkGetPhysicalDeviceFormatProperties(
378 VkPhysicalDevice physicalDevice,
379 VkFormat format,
380 VkFormatProperties* pFormatProperties)
381{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800382 mImpl->log("start vkGetPhysicalDeviceFormatProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700383 auto stream = mImpl->stream();
384 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800385 auto resources = mImpl->resources();
386 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800387 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800388 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800389 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800390 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800391 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700392 countingStream->rewind();
393 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800394 uint64_t cgen_var_22;
395 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_22, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800396 countingStream->write((uint64_t*)&cgen_var_22, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800397 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700398 marshal_VkFormatProperties(countingStream, (VkFormatProperties*)(pFormatProperties));
399 }
400 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
401 countingStream->rewind();
402 uint32_t opcode_vkGetPhysicalDeviceFormatProperties = OP_vkGetPhysicalDeviceFormatProperties;
403 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
404 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800405 uint64_t cgen_var_23;
406 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_23, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800407 stream->write((uint64_t*)&cgen_var_23, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800408 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700409 marshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
410 unmarshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -0800411 if (pFormatProperties)
412 {
413 transform_fromhost_VkFormatProperties(mImpl->resources(), (VkFormatProperties*)(pFormatProperties));
414 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800415 mImpl->log("finish vkGetPhysicalDeviceFormatProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700416}
417
418VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties(
419 VkPhysicalDevice physicalDevice,
420 VkFormat format,
421 VkImageType type,
422 VkImageTiling tiling,
423 VkImageUsageFlags usage,
424 VkImageCreateFlags flags,
425 VkImageFormatProperties* pImageFormatProperties)
426{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800427 mImpl->log("start vkGetPhysicalDeviceImageFormatProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700428 auto stream = mImpl->stream();
429 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800430 auto resources = mImpl->resources();
431 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800432 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800433 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800434 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800435 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800436 VkImageTiling local_tiling;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800437 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800438 VkImageCreateFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800439 local_physicalDevice = physicalDevice;
440 local_format = format;
441 local_type = type;
442 local_tiling = tiling;
443 local_usage = usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800444 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700445 countingStream->rewind();
446 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800447 uint64_t cgen_var_24;
448 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_24, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800449 countingStream->write((uint64_t*)&cgen_var_24, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800450 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
451 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
452 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
453 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
454 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700455 marshal_VkImageFormatProperties(countingStream, (VkImageFormatProperties*)(pImageFormatProperties));
456 }
457 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
458 countingStream->rewind();
459 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties = OP_vkGetPhysicalDeviceImageFormatProperties;
460 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
461 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800462 uint64_t cgen_var_25;
463 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_25, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800464 stream->write((uint64_t*)&cgen_var_25, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800465 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
466 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
467 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
468 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
469 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700470 marshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
471 unmarshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -0800472 if (pImageFormatProperties)
473 {
474 transform_fromhost_VkImageFormatProperties(mImpl->resources(), (VkImageFormatProperties*)(pImageFormatProperties));
475 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700476 VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
477 stream->read(&vkGetPhysicalDeviceImageFormatProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800478 countingStream->clearPool();
479 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800480 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800481 mImpl->log("finish vkGetPhysicalDeviceImageFormatProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700482 return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
483}
484
485void VkEncoder::vkGetPhysicalDeviceProperties(
486 VkPhysicalDevice physicalDevice,
487 VkPhysicalDeviceProperties* pProperties)
488{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800489 mImpl->log("start vkGetPhysicalDeviceProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700490 auto stream = mImpl->stream();
491 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800492 auto resources = mImpl->resources();
493 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800494 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800495 VkPhysicalDevice local_physicalDevice;
496 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700497 countingStream->rewind();
498 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800499 uint64_t cgen_var_26;
500 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_26, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800501 countingStream->write((uint64_t*)&cgen_var_26, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700502 marshal_VkPhysicalDeviceProperties(countingStream, (VkPhysicalDeviceProperties*)(pProperties));
503 }
504 uint32_t packetSize_vkGetPhysicalDeviceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
505 countingStream->rewind();
506 uint32_t opcode_vkGetPhysicalDeviceProperties = OP_vkGetPhysicalDeviceProperties;
507 stream->write(&opcode_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
508 stream->write(&packetSize_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800509 uint64_t cgen_var_27;
510 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_27, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800511 stream->write((uint64_t*)&cgen_var_27, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700512 marshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
513 unmarshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -0800514 if (pProperties)
515 {
516 transform_fromhost_VkPhysicalDeviceProperties(mImpl->resources(), (VkPhysicalDeviceProperties*)(pProperties));
517 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800518 mImpl->log("finish vkGetPhysicalDeviceProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700519}
520
521void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties(
522 VkPhysicalDevice physicalDevice,
523 uint32_t* pQueueFamilyPropertyCount,
524 VkQueueFamilyProperties* pQueueFamilyProperties)
525{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800526 mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700527 auto stream = mImpl->stream();
528 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800529 auto resources = mImpl->resources();
530 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800531 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800532 VkPhysicalDevice local_physicalDevice;
533 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700534 countingStream->rewind();
535 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800536 uint64_t cgen_var_28;
537 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_28, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800538 countingStream->write((uint64_t*)&cgen_var_28, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800539 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800540 uint64_t cgen_var_29 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
541 countingStream->putBe64(cgen_var_29);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700542 if (pQueueFamilyPropertyCount)
543 {
544 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
545 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800546 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800547 uint64_t cgen_var_30 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
548 countingStream->putBe64(cgen_var_30);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700549 if (pQueueFamilyProperties)
550 {
551 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
552 {
553 marshal_VkQueueFamilyProperties(countingStream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
554 }
555 }
556 }
557 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
558 countingStream->rewind();
559 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties = OP_vkGetPhysicalDeviceQueueFamilyProperties;
560 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
561 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800562 uint64_t cgen_var_31;
563 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_31, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800564 stream->write((uint64_t*)&cgen_var_31, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800565 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800566 uint64_t cgen_var_32 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
567 stream->putBe64(cgen_var_32);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700568 if (pQueueFamilyPropertyCount)
569 {
570 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
571 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800572 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800573 uint64_t cgen_var_33 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
574 stream->putBe64(cgen_var_33);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700575 if (pQueueFamilyProperties)
576 {
577 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
578 {
579 marshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
580 }
581 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800582 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700583 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800584 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700585 if (pQueueFamilyPropertyCount)
586 {
587 if (!(check_pQueueFamilyPropertyCount))
588 {
589 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
590 }
591 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
592 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800593 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700594 VkQueueFamilyProperties* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800595 check_pQueueFamilyProperties = (VkQueueFamilyProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700596 if (pQueueFamilyProperties)
597 {
598 if (!(check_pQueueFamilyProperties))
599 {
600 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
601 }
602 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
603 {
604 unmarshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
605 }
606 }
Lingfeng Yang97a06702018-12-24 17:02:43 -0800607 if (pQueueFamilyProperties)
608 {
609 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
610 {
611 transform_fromhost_VkQueueFamilyProperties(mImpl->resources(), (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
612 }
613 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800614 mImpl->log("finish vkGetPhysicalDeviceQueueFamilyProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700615}
616
617void VkEncoder::vkGetPhysicalDeviceMemoryProperties(
618 VkPhysicalDevice physicalDevice,
619 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
620{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800621 mImpl->log("start vkGetPhysicalDeviceMemoryProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700622 auto stream = mImpl->stream();
623 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800624 auto resources = mImpl->resources();
625 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800626 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800627 VkPhysicalDevice local_physicalDevice;
628 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700629 countingStream->rewind();
630 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800631 uint64_t cgen_var_36;
632 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_36, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800633 countingStream->write((uint64_t*)&cgen_var_36, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700634 marshal_VkPhysicalDeviceMemoryProperties(countingStream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
635 }
636 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
637 countingStream->rewind();
638 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties = OP_vkGetPhysicalDeviceMemoryProperties;
639 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
640 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800641 uint64_t cgen_var_37;
642 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_37, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800643 stream->write((uint64_t*)&cgen_var_37, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700644 marshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
645 unmarshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -0800646 if (pMemoryProperties)
647 {
648 transform_fromhost_VkPhysicalDeviceMemoryProperties(mImpl->resources(), (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
649 }
650 mImpl->resources()->on_vkGetPhysicalDeviceMemoryProperties(this, physicalDevice, pMemoryProperties);
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800651 mImpl->log("finish vkGetPhysicalDeviceMemoryProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700652}
653
654PFN_vkVoidFunction VkEncoder::vkGetInstanceProcAddr(
655 VkInstance instance,
656 const char* pName)
657{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800658 mImpl->log("start vkGetInstanceProcAddr");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700659 auto stream = mImpl->stream();
660 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800661 auto resources = mImpl->resources();
662 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800663 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800664 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800665 char* local_pName;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800666 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800667 local_pName = nullptr;
668 if (pName)
669 {
670 local_pName = pool->strDup(pName);
671 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700672 countingStream->rewind();
673 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800674 uint64_t cgen_var_38;
675 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_38, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800676 countingStream->write((uint64_t*)&cgen_var_38, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800677 countingStream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700678 }
679 uint32_t packetSize_vkGetInstanceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
680 countingStream->rewind();
681 uint32_t opcode_vkGetInstanceProcAddr = OP_vkGetInstanceProcAddr;
682 stream->write(&opcode_vkGetInstanceProcAddr, sizeof(uint32_t));
683 stream->write(&packetSize_vkGetInstanceProcAddr, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800684 uint64_t cgen_var_39;
685 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_39, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800686 stream->write((uint64_t*)&cgen_var_39, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800687 stream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700688 PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
689 stream->read(&vkGetInstanceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800690 countingStream->clearPool();
691 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800692 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800693 mImpl->log("finish vkGetInstanceProcAddr");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700694 return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
695}
696
697PFN_vkVoidFunction VkEncoder::vkGetDeviceProcAddr(
698 VkDevice device,
699 const char* pName)
700{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800701 mImpl->log("start vkGetDeviceProcAddr");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700702 auto stream = mImpl->stream();
703 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800704 auto resources = mImpl->resources();
705 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800706 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800707 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800708 char* local_pName;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800709 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800710 local_pName = nullptr;
711 if (pName)
712 {
713 local_pName = pool->strDup(pName);
714 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700715 countingStream->rewind();
716 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800717 uint64_t cgen_var_40;
718 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_40, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800719 countingStream->write((uint64_t*)&cgen_var_40, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800720 countingStream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700721 }
722 uint32_t packetSize_vkGetDeviceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
723 countingStream->rewind();
724 uint32_t opcode_vkGetDeviceProcAddr = OP_vkGetDeviceProcAddr;
725 stream->write(&opcode_vkGetDeviceProcAddr, sizeof(uint32_t));
726 stream->write(&packetSize_vkGetDeviceProcAddr, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800727 uint64_t cgen_var_41;
728 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_41, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800729 stream->write((uint64_t*)&cgen_var_41, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800730 stream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700731 PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
732 stream->read(&vkGetDeviceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800733 countingStream->clearPool();
734 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800735 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800736 mImpl->log("finish vkGetDeviceProcAddr");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700737 return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
738}
739
740VkResult VkEncoder::vkCreateDevice(
741 VkPhysicalDevice physicalDevice,
742 const VkDeviceCreateInfo* pCreateInfo,
743 const VkAllocationCallbacks* pAllocator,
744 VkDevice* pDevice)
745{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800746 mImpl->log("start vkCreateDevice");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700747 auto stream = mImpl->stream();
748 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800749 auto resources = mImpl->resources();
750 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800751 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800752 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800753 VkDeviceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800754 VkAllocationCallbacks* local_pAllocator;
755 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800756 local_pCreateInfo = nullptr;
757 if (pCreateInfo)
758 {
759 local_pCreateInfo = (VkDeviceCreateInfo*)pool->alloc(sizeof(const VkDeviceCreateInfo));
760 deepcopy_VkDeviceCreateInfo(pool, pCreateInfo, (VkDeviceCreateInfo*)(local_pCreateInfo));
761 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800762 local_pAllocator = nullptr;
763 if (pAllocator)
764 {
765 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
766 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
767 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800768 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -0800769 if (local_pCreateInfo)
770 {
Lingfeng Yang97a06702018-12-24 17:02:43 -0800771 transform_tohost_VkDeviceCreateInfo(mImpl->resources(), (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -0800772 }
773 if (local_pAllocator)
774 {
Lingfeng Yang97a06702018-12-24 17:02:43 -0800775 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -0800776 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700777 countingStream->rewind();
778 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800779 uint64_t cgen_var_42;
780 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_42, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800781 countingStream->write((uint64_t*)&cgen_var_42, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800782 marshal_VkDeviceCreateInfo(countingStream, (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800783 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800784 uint64_t cgen_var_43 = (uint64_t)(uintptr_t)local_pAllocator;
785 countingStream->putBe64(cgen_var_43);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800786 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700787 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800788 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700789 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800790 uint64_t cgen_var_44;
791 countingStream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_44, 1);
792 countingStream->write((uint64_t*)&cgen_var_44, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700793 }
794 uint32_t packetSize_vkCreateDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
795 countingStream->rewind();
796 uint32_t opcode_vkCreateDevice = OP_vkCreateDevice;
797 stream->write(&opcode_vkCreateDevice, sizeof(uint32_t));
798 stream->write(&packetSize_vkCreateDevice, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800799 uint64_t cgen_var_45;
800 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_45, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800801 stream->write((uint64_t*)&cgen_var_45, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800802 marshal_VkDeviceCreateInfo(stream, (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800803 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800804 uint64_t cgen_var_46 = (uint64_t)(uintptr_t)local_pAllocator;
805 stream->putBe64(cgen_var_46);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800806 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700807 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800808 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700809 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800810 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -0800811 uint64_t cgen_var_47;
812 stream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_47, 1);
813 stream->write((uint64_t*)&cgen_var_47, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800814 stream->setHandleMapping(resources->unwrapMapping());
815 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -0800816 uint64_t cgen_var_48;
817 stream->read((uint64_t*)&cgen_var_48, 8);
818 stream->handleMapping()->mapHandles_u64_VkDevice(&cgen_var_48, (VkDevice*)pDevice, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800819 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700820 VkResult vkCreateDevice_VkResult_return = (VkResult)0;
821 stream->read(&vkCreateDevice_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800822 countingStream->clearPool();
823 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800824 pool->freeAll();
Lingfeng Yang131d5a42018-11-30 12:00:33 -0800825 mImpl->resources()->on_vkCreateDevice(this, vkCreateDevice_VkResult_return, physicalDevice, pCreateInfo, pAllocator, pDevice);
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800826 mImpl->log("finish vkCreateDevice");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700827 return vkCreateDevice_VkResult_return;
828}
829
830void VkEncoder::vkDestroyDevice(
831 VkDevice device,
832 const VkAllocationCallbacks* pAllocator)
833{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800834 mImpl->log("start vkDestroyDevice");
Lingfeng Yang35e9c6a2018-12-25 17:13:36 -0800835 mImpl->resources()->on_vkDestroyDevice_pre(this, device, pAllocator);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700836 auto stream = mImpl->stream();
837 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800838 auto resources = mImpl->resources();
839 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800840 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800841 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800842 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800843 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800844 local_pAllocator = nullptr;
845 if (pAllocator)
846 {
847 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
848 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
849 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800850 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -0800851 if (local_pAllocator)
852 {
Lingfeng Yang97a06702018-12-24 17:02:43 -0800853 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -0800854 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700855 countingStream->rewind();
856 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800857 uint64_t cgen_var_49;
858 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_49, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800859 countingStream->write((uint64_t*)&cgen_var_49, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800860 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800861 uint64_t cgen_var_50 = (uint64_t)(uintptr_t)local_pAllocator;
862 countingStream->putBe64(cgen_var_50);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800863 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700864 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800865 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700866 }
867 }
868 uint32_t packetSize_vkDestroyDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
869 countingStream->rewind();
870 uint32_t opcode_vkDestroyDevice = OP_vkDestroyDevice;
871 stream->write(&opcode_vkDestroyDevice, sizeof(uint32_t));
872 stream->write(&packetSize_vkDestroyDevice, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800873 uint64_t cgen_var_51;
874 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_51, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800875 stream->write((uint64_t*)&cgen_var_51, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800876 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800877 uint64_t cgen_var_52 = (uint64_t)(uintptr_t)local_pAllocator;
878 stream->putBe64(cgen_var_52);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800879 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700880 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800881 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700882 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800883 resources->destroyMapping()->mapHandles_VkDevice((VkDevice*)&device);
Lingfeng Yang35e9c6a2018-12-25 17:13:36 -0800884 stream->flush();
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800885 mImpl->log("finish vkDestroyDevice");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700886}
887
888VkResult VkEncoder::vkEnumerateInstanceExtensionProperties(
889 const char* pLayerName,
890 uint32_t* pPropertyCount,
891 VkExtensionProperties* pProperties)
892{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800893 mImpl->log("start vkEnumerateInstanceExtensionProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700894 auto stream = mImpl->stream();
895 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800896 auto resources = mImpl->resources();
897 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800898 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800899 char* local_pLayerName;
900 local_pLayerName = nullptr;
901 if (pLayerName)
902 {
903 local_pLayerName = pool->strDup(pLayerName);
904 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700905 countingStream->rewind();
906 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800907 countingStream->putString(local_pLayerName);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800908 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800909 uint64_t cgen_var_53 = (uint64_t)(uintptr_t)pPropertyCount;
910 countingStream->putBe64(cgen_var_53);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700911 if (pPropertyCount)
912 {
913 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
914 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800915 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800916 uint64_t cgen_var_54 = (uint64_t)(uintptr_t)pProperties;
917 countingStream->putBe64(cgen_var_54);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700918 if (pProperties)
919 {
920 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
921 {
922 marshal_VkExtensionProperties(countingStream, (VkExtensionProperties*)(pProperties + i));
923 }
924 }
925 }
926 uint32_t packetSize_vkEnumerateInstanceExtensionProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
927 countingStream->rewind();
928 uint32_t opcode_vkEnumerateInstanceExtensionProperties = OP_vkEnumerateInstanceExtensionProperties;
929 stream->write(&opcode_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
930 stream->write(&packetSize_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800931 stream->putString(local_pLayerName);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800932 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800933 uint64_t cgen_var_55 = (uint64_t)(uintptr_t)pPropertyCount;
934 stream->putBe64(cgen_var_55);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700935 if (pPropertyCount)
936 {
937 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
938 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800939 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800940 uint64_t cgen_var_56 = (uint64_t)(uintptr_t)pProperties;
941 stream->putBe64(cgen_var_56);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700942 if (pProperties)
943 {
944 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
945 {
946 marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
947 }
948 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800949 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700950 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800951 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700952 if (pPropertyCount)
953 {
954 if (!(check_pPropertyCount))
955 {
956 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
957 }
958 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
959 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800960 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700961 VkExtensionProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800962 check_pProperties = (VkExtensionProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700963 if (pProperties)
964 {
965 if (!(check_pProperties))
966 {
967 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
968 }
969 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
970 {
971 unmarshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
972 }
973 }
Lingfeng Yang97a06702018-12-24 17:02:43 -0800974 if (pProperties)
975 {
976 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
977 {
978 transform_fromhost_VkExtensionProperties(mImpl->resources(), (VkExtensionProperties*)(pProperties + i));
979 }
980 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700981 VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
982 stream->read(&vkEnumerateInstanceExtensionProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800983 countingStream->clearPool();
984 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800985 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800986 mImpl->log("finish vkEnumerateInstanceExtensionProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700987 return vkEnumerateInstanceExtensionProperties_VkResult_return;
988}
989
990VkResult VkEncoder::vkEnumerateDeviceExtensionProperties(
991 VkPhysicalDevice physicalDevice,
992 const char* pLayerName,
993 uint32_t* pPropertyCount,
994 VkExtensionProperties* pProperties)
995{
Lingfeng Yang154a33c2019-01-29 19:06:23 -0800996 mImpl->log("start vkEnumerateDeviceExtensionProperties");
997 auto stream = mImpl->stream();
998 auto countingStream = mImpl->countingStream();
999 auto resources = mImpl->resources();
1000 auto pool = mImpl->pool();
1001 stream->setHandleMapping(resources->unwrapMapping());
1002 VkPhysicalDevice local_physicalDevice;
1003 char* local_pLayerName;
1004 local_physicalDevice = physicalDevice;
1005 local_pLayerName = nullptr;
1006 if (pLayerName)
1007 {
1008 local_pLayerName = pool->strDup(pLayerName);
1009 }
1010 countingStream->rewind();
1011 {
1012 uint64_t cgen_var_59;
1013 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_59, 1);
1014 countingStream->write((uint64_t*)&cgen_var_59, 1 * 8);
1015 countingStream->putString(local_pLayerName);
1016 // WARNING PTR CHECK
1017 uint64_t cgen_var_60 = (uint64_t)(uintptr_t)pPropertyCount;
1018 countingStream->putBe64(cgen_var_60);
1019 if (pPropertyCount)
1020 {
1021 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1022 }
1023 // WARNING PTR CHECK
1024 uint64_t cgen_var_61 = (uint64_t)(uintptr_t)pProperties;
1025 countingStream->putBe64(cgen_var_61);
1026 if (pProperties)
1027 {
1028 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1029 {
1030 marshal_VkExtensionProperties(countingStream, (VkExtensionProperties*)(pProperties + i));
1031 }
1032 }
1033 }
1034 uint32_t packetSize_vkEnumerateDeviceExtensionProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1035 countingStream->rewind();
1036 uint32_t opcode_vkEnumerateDeviceExtensionProperties = OP_vkEnumerateDeviceExtensionProperties;
1037 stream->write(&opcode_vkEnumerateDeviceExtensionProperties, sizeof(uint32_t));
1038 stream->write(&packetSize_vkEnumerateDeviceExtensionProperties, sizeof(uint32_t));
1039 uint64_t cgen_var_62;
1040 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_62, 1);
1041 stream->write((uint64_t*)&cgen_var_62, 1 * 8);
1042 stream->putString(local_pLayerName);
1043 // WARNING PTR CHECK
1044 uint64_t cgen_var_63 = (uint64_t)(uintptr_t)pPropertyCount;
1045 stream->putBe64(cgen_var_63);
1046 if (pPropertyCount)
1047 {
1048 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1049 }
1050 // WARNING PTR CHECK
1051 uint64_t cgen_var_64 = (uint64_t)(uintptr_t)pProperties;
1052 stream->putBe64(cgen_var_64);
1053 if (pProperties)
1054 {
1055 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1056 {
1057 marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
1058 }
1059 }
1060 // WARNING PTR CHECK
1061 uint32_t* check_pPropertyCount;
1062 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
1063 if (pPropertyCount)
1064 {
1065 if (!(check_pPropertyCount))
1066 {
1067 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1068 }
1069 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1070 }
1071 // WARNING PTR CHECK
1072 VkExtensionProperties* check_pProperties;
1073 check_pProperties = (VkExtensionProperties*)(uintptr_t)stream->getBe64();
1074 if (pProperties)
1075 {
1076 if (!(check_pProperties))
1077 {
1078 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1079 }
1080 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1081 {
1082 unmarshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
1083 }
1084 }
1085 if (pProperties)
1086 {
1087 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1088 {
1089 transform_fromhost_VkExtensionProperties(mImpl->resources(), (VkExtensionProperties*)(pProperties + i));
1090 }
1091 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001092 VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001093 stream->read(&vkEnumerateDeviceExtensionProperties_VkResult_return, sizeof(VkResult));
1094 countingStream->clearPool();
1095 stream->clearPool();
1096 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001097 mImpl->log("finish vkEnumerateDeviceExtensionProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001098 return vkEnumerateDeviceExtensionProperties_VkResult_return;
1099}
1100
1101VkResult VkEncoder::vkEnumerateInstanceLayerProperties(
1102 uint32_t* pPropertyCount,
1103 VkLayerProperties* pProperties)
1104{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001105 mImpl->log("start vkEnumerateInstanceLayerProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001106 auto stream = mImpl->stream();
1107 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001108 auto resources = mImpl->resources();
1109 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001110 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001111 countingStream->rewind();
1112 {
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001113 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001114 uint64_t cgen_var_67 = (uint64_t)(uintptr_t)pPropertyCount;
1115 countingStream->putBe64(cgen_var_67);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001116 if (pPropertyCount)
1117 {
1118 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1119 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001120 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001121 uint64_t cgen_var_68 = (uint64_t)(uintptr_t)pProperties;
1122 countingStream->putBe64(cgen_var_68);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001123 if (pProperties)
1124 {
1125 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1126 {
1127 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
1128 }
1129 }
1130 }
1131 uint32_t packetSize_vkEnumerateInstanceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1132 countingStream->rewind();
1133 uint32_t opcode_vkEnumerateInstanceLayerProperties = OP_vkEnumerateInstanceLayerProperties;
1134 stream->write(&opcode_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
1135 stream->write(&packetSize_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001136 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001137 uint64_t cgen_var_69 = (uint64_t)(uintptr_t)pPropertyCount;
1138 stream->putBe64(cgen_var_69);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001139 if (pPropertyCount)
1140 {
1141 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1142 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001143 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001144 uint64_t cgen_var_70 = (uint64_t)(uintptr_t)pProperties;
1145 stream->putBe64(cgen_var_70);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001146 if (pProperties)
1147 {
1148 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1149 {
1150 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1151 }
1152 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001153 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001154 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001155 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001156 if (pPropertyCount)
1157 {
1158 if (!(check_pPropertyCount))
1159 {
1160 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1161 }
1162 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1163 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001164 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001165 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001166 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001167 if (pProperties)
1168 {
1169 if (!(check_pProperties))
1170 {
1171 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1172 }
1173 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1174 {
1175 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1176 }
1177 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08001178 if (pProperties)
1179 {
1180 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1181 {
1182 transform_fromhost_VkLayerProperties(mImpl->resources(), (VkLayerProperties*)(pProperties + i));
1183 }
1184 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001185 VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
1186 stream->read(&vkEnumerateInstanceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001187 countingStream->clearPool();
1188 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001189 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001190 mImpl->log("finish vkEnumerateInstanceLayerProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001191 return vkEnumerateInstanceLayerProperties_VkResult_return;
1192}
1193
1194VkResult VkEncoder::vkEnumerateDeviceLayerProperties(
1195 VkPhysicalDevice physicalDevice,
1196 uint32_t* pPropertyCount,
1197 VkLayerProperties* pProperties)
1198{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001199 mImpl->log("start vkEnumerateDeviceLayerProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001200 auto stream = mImpl->stream();
1201 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001202 auto resources = mImpl->resources();
1203 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001204 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001205 VkPhysicalDevice local_physicalDevice;
1206 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001207 countingStream->rewind();
1208 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001209 uint64_t cgen_var_73;
1210 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_73, 1);
1211 countingStream->write((uint64_t*)&cgen_var_73, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001212 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001213 uint64_t cgen_var_74 = (uint64_t)(uintptr_t)pPropertyCount;
1214 countingStream->putBe64(cgen_var_74);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001215 if (pPropertyCount)
1216 {
1217 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1218 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001219 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001220 uint64_t cgen_var_75 = (uint64_t)(uintptr_t)pProperties;
1221 countingStream->putBe64(cgen_var_75);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001222 if (pProperties)
1223 {
1224 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1225 {
1226 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
1227 }
1228 }
1229 }
1230 uint32_t packetSize_vkEnumerateDeviceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1231 countingStream->rewind();
1232 uint32_t opcode_vkEnumerateDeviceLayerProperties = OP_vkEnumerateDeviceLayerProperties;
1233 stream->write(&opcode_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
1234 stream->write(&packetSize_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001235 uint64_t cgen_var_76;
1236 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_76, 1);
1237 stream->write((uint64_t*)&cgen_var_76, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001238 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001239 uint64_t cgen_var_77 = (uint64_t)(uintptr_t)pPropertyCount;
1240 stream->putBe64(cgen_var_77);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001241 if (pPropertyCount)
1242 {
1243 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1244 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001245 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001246 uint64_t cgen_var_78 = (uint64_t)(uintptr_t)pProperties;
1247 stream->putBe64(cgen_var_78);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001248 if (pProperties)
1249 {
1250 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1251 {
1252 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1253 }
1254 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001255 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001256 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001257 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001258 if (pPropertyCount)
1259 {
1260 if (!(check_pPropertyCount))
1261 {
1262 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1263 }
1264 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1265 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001266 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001267 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001268 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001269 if (pProperties)
1270 {
1271 if (!(check_pProperties))
1272 {
1273 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1274 }
1275 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1276 {
1277 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1278 }
1279 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08001280 if (pProperties)
1281 {
1282 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1283 {
1284 transform_fromhost_VkLayerProperties(mImpl->resources(), (VkLayerProperties*)(pProperties + i));
1285 }
1286 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001287 VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
1288 stream->read(&vkEnumerateDeviceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001289 countingStream->clearPool();
1290 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001291 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001292 mImpl->log("finish vkEnumerateDeviceLayerProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001293 return vkEnumerateDeviceLayerProperties_VkResult_return;
1294}
1295
1296void VkEncoder::vkGetDeviceQueue(
1297 VkDevice device,
1298 uint32_t queueFamilyIndex,
1299 uint32_t queueIndex,
1300 VkQueue* pQueue)
1301{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001302 mImpl->log("start vkGetDeviceQueue");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001303 auto stream = mImpl->stream();
1304 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001305 auto resources = mImpl->resources();
1306 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001307 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001308 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001309 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001310 uint32_t local_queueIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001311 local_device = device;
1312 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001313 local_queueIndex = queueIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001314 countingStream->rewind();
1315 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001316 uint64_t cgen_var_81;
1317 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_81, 1);
1318 countingStream->write((uint64_t*)&cgen_var_81, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001319 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1320 countingStream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001321 uint64_t cgen_var_82;
1322 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_82, 1);
1323 countingStream->write((uint64_t*)&cgen_var_82, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001324 }
1325 uint32_t packetSize_vkGetDeviceQueue = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1326 countingStream->rewind();
1327 uint32_t opcode_vkGetDeviceQueue = OP_vkGetDeviceQueue;
1328 stream->write(&opcode_vkGetDeviceQueue, sizeof(uint32_t));
1329 stream->write(&packetSize_vkGetDeviceQueue, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001330 uint64_t cgen_var_83;
1331 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_83, 1);
1332 stream->write((uint64_t*)&cgen_var_83, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001333 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1334 stream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yange4008a02018-11-18 12:22:48 -08001335 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001336 uint64_t cgen_var_84;
1337 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_84, 1);
1338 stream->write((uint64_t*)&cgen_var_84, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001339 stream->setHandleMapping(resources->unwrapMapping());
1340 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001341 uint64_t cgen_var_85;
1342 stream->read((uint64_t*)&cgen_var_85, 8);
1343 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_85, (VkQueue*)pQueue, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001344 stream->unsetHandleMapping();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001345 mImpl->log("finish vkGetDeviceQueue");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001346}
1347
1348VkResult VkEncoder::vkQueueSubmit(
1349 VkQueue queue,
1350 uint32_t submitCount,
1351 const VkSubmitInfo* pSubmits,
1352 VkFence fence)
1353{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001354 mImpl->log("start vkQueueSubmit");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001355 auto stream = mImpl->stream();
1356 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001357 auto resources = mImpl->resources();
1358 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001359 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001360 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001361 uint32_t local_submitCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001362 VkSubmitInfo* local_pSubmits;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001363 VkFence local_fence;
1364 local_queue = queue;
1365 local_submitCount = submitCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001366 local_pSubmits = nullptr;
1367 if (pSubmits)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001368 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001369 local_pSubmits = (VkSubmitInfo*)pool->alloc(((submitCount)) * sizeof(const VkSubmitInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001370 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1371 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001372 deepcopy_VkSubmitInfo(pool, pSubmits + i, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001373 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001374 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001375 local_fence = fence;
Lingfeng Yang62b23322018-12-24 12:45:47 -08001376 if (local_pSubmits)
1377 {
1378 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1379 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001380 transform_tohost_VkSubmitInfo(mImpl->resources(), (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001381 }
1382 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001383 countingStream->rewind();
1384 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001385 uint64_t cgen_var_86;
1386 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_86, 1);
1387 countingStream->write((uint64_t*)&cgen_var_86, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001388 countingStream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
1389 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1390 {
1391 marshal_VkSubmitInfo(countingStream, (VkSubmitInfo*)(local_pSubmits + i));
1392 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001393 uint64_t cgen_var_87;
1394 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_87, 1);
1395 countingStream->write((uint64_t*)&cgen_var_87, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001396 }
1397 uint32_t packetSize_vkQueueSubmit = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1398 countingStream->rewind();
1399 uint32_t opcode_vkQueueSubmit = OP_vkQueueSubmit;
1400 stream->write(&opcode_vkQueueSubmit, sizeof(uint32_t));
1401 stream->write(&packetSize_vkQueueSubmit, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001402 uint64_t cgen_var_88;
1403 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_88, 1);
1404 stream->write((uint64_t*)&cgen_var_88, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001405 stream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001406 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1407 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001408 marshal_VkSubmitInfo(stream, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001409 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001410 uint64_t cgen_var_89;
1411 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_89, 1);
1412 stream->write((uint64_t*)&cgen_var_89, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001413 VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
1414 stream->read(&vkQueueSubmit_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001415 countingStream->clearPool();
1416 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001417 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001418 mImpl->log("finish vkQueueSubmit");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001419 return vkQueueSubmit_VkResult_return;
1420}
1421
1422VkResult VkEncoder::vkQueueWaitIdle(
1423 VkQueue queue)
1424{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001425 mImpl->log("start vkQueueWaitIdle");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001426 auto stream = mImpl->stream();
1427 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001428 auto resources = mImpl->resources();
1429 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001430 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001431 VkQueue local_queue;
1432 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001433 countingStream->rewind();
1434 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001435 uint64_t cgen_var_90;
1436 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_90, 1);
1437 countingStream->write((uint64_t*)&cgen_var_90, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001438 }
1439 uint32_t packetSize_vkQueueWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1440 countingStream->rewind();
1441 uint32_t opcode_vkQueueWaitIdle = OP_vkQueueWaitIdle;
1442 stream->write(&opcode_vkQueueWaitIdle, sizeof(uint32_t));
1443 stream->write(&packetSize_vkQueueWaitIdle, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001444 uint64_t cgen_var_91;
1445 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_91, 1);
1446 stream->write((uint64_t*)&cgen_var_91, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001447 VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
1448 stream->read(&vkQueueWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001449 countingStream->clearPool();
1450 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001451 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001452 mImpl->log("finish vkQueueWaitIdle");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001453 return vkQueueWaitIdle_VkResult_return;
1454}
1455
1456VkResult VkEncoder::vkDeviceWaitIdle(
1457 VkDevice device)
1458{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001459 mImpl->log("start vkDeviceWaitIdle");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001460 auto stream = mImpl->stream();
1461 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001462 auto resources = mImpl->resources();
1463 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001464 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001465 VkDevice local_device;
1466 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001467 countingStream->rewind();
1468 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001469 uint64_t cgen_var_92;
1470 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_92, 1);
1471 countingStream->write((uint64_t*)&cgen_var_92, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001472 }
1473 uint32_t packetSize_vkDeviceWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1474 countingStream->rewind();
1475 uint32_t opcode_vkDeviceWaitIdle = OP_vkDeviceWaitIdle;
1476 stream->write(&opcode_vkDeviceWaitIdle, sizeof(uint32_t));
1477 stream->write(&packetSize_vkDeviceWaitIdle, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001478 uint64_t cgen_var_93;
1479 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_93, 1);
1480 stream->write((uint64_t*)&cgen_var_93, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001481 VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
1482 stream->read(&vkDeviceWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001483 countingStream->clearPool();
1484 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001485 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001486 mImpl->log("finish vkDeviceWaitIdle");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001487 return vkDeviceWaitIdle_VkResult_return;
1488}
1489
1490VkResult VkEncoder::vkAllocateMemory(
1491 VkDevice device,
1492 const VkMemoryAllocateInfo* pAllocateInfo,
1493 const VkAllocationCallbacks* pAllocator,
1494 VkDeviceMemory* pMemory)
1495{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001496 mImpl->log("start vkAllocateMemory");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001497 auto stream = mImpl->stream();
1498 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001499 auto resources = mImpl->resources();
1500 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001501 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001502 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001503 VkMemoryAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001504 VkAllocationCallbacks* local_pAllocator;
1505 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001506 local_pAllocateInfo = nullptr;
1507 if (pAllocateInfo)
1508 {
1509 local_pAllocateInfo = (VkMemoryAllocateInfo*)pool->alloc(sizeof(const VkMemoryAllocateInfo));
1510 deepcopy_VkMemoryAllocateInfo(pool, pAllocateInfo, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
1511 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001512 local_pAllocator = nullptr;
1513 if (pAllocator)
1514 {
1515 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1516 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1517 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001518 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08001519 if (local_pAllocateInfo)
1520 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001521 transform_tohost_VkMemoryAllocateInfo(mImpl->resources(), (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001522 }
1523 if (local_pAllocator)
1524 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001525 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001526 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001527 countingStream->rewind();
1528 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001529 uint64_t cgen_var_94;
1530 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_94, 1);
1531 countingStream->write((uint64_t*)&cgen_var_94, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001532 marshal_VkMemoryAllocateInfo(countingStream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001533 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001534 uint64_t cgen_var_95 = (uint64_t)(uintptr_t)local_pAllocator;
1535 countingStream->putBe64(cgen_var_95);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001536 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001537 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001538 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001539 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001540 uint64_t cgen_var_96;
1541 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_96, 1);
1542 countingStream->write((uint64_t*)&cgen_var_96, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001543 }
1544 uint32_t packetSize_vkAllocateMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1545 countingStream->rewind();
1546 uint32_t opcode_vkAllocateMemory = OP_vkAllocateMemory;
1547 stream->write(&opcode_vkAllocateMemory, sizeof(uint32_t));
1548 stream->write(&packetSize_vkAllocateMemory, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001549 uint64_t cgen_var_97;
1550 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_97, 1);
1551 stream->write((uint64_t*)&cgen_var_97, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001552 marshal_VkMemoryAllocateInfo(stream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001553 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001554 uint64_t cgen_var_98 = (uint64_t)(uintptr_t)local_pAllocator;
1555 stream->putBe64(cgen_var_98);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001556 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001557 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001558 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001559 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08001560 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001561 uint64_t cgen_var_99;
1562 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_99, 1);
1563 stream->write((uint64_t*)&cgen_var_99, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001564 stream->setHandleMapping(resources->unwrapMapping());
1565 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001566 uint64_t cgen_var_100;
1567 stream->read((uint64_t*)&cgen_var_100, 8);
1568 stream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_100, (VkDeviceMemory*)pMemory, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001569 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001570 VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
1571 stream->read(&vkAllocateMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001572 countingStream->clearPool();
1573 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001574 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001575 mImpl->log("finish vkAllocateMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001576 return vkAllocateMemory_VkResult_return;
1577}
1578
1579void VkEncoder::vkFreeMemory(
1580 VkDevice device,
1581 VkDeviceMemory memory,
1582 const VkAllocationCallbacks* pAllocator)
1583{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001584 mImpl->log("start vkFreeMemory");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001585 auto stream = mImpl->stream();
1586 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001587 auto resources = mImpl->resources();
1588 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001589 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001590 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001591 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001592 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001593 local_device = device;
1594 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001595 local_pAllocator = nullptr;
1596 if (pAllocator)
1597 {
1598 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1599 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1600 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001601 local_pAllocator = nullptr;
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -08001602 mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001603 countingStream->rewind();
1604 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001605 uint64_t cgen_var_101;
1606 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_101, 1);
1607 countingStream->write((uint64_t*)&cgen_var_101, 1 * 8);
1608 uint64_t cgen_var_102;
1609 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_102, 1);
1610 countingStream->write((uint64_t*)&cgen_var_102, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001611 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001612 uint64_t cgen_var_103 = (uint64_t)(uintptr_t)local_pAllocator;
1613 countingStream->putBe64(cgen_var_103);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001614 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001615 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001616 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001617 }
1618 }
1619 uint32_t packetSize_vkFreeMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1620 countingStream->rewind();
1621 uint32_t opcode_vkFreeMemory = OP_vkFreeMemory;
1622 stream->write(&opcode_vkFreeMemory, sizeof(uint32_t));
1623 stream->write(&packetSize_vkFreeMemory, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001624 uint64_t cgen_var_104;
1625 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_104, 1);
1626 stream->write((uint64_t*)&cgen_var_104, 1 * 8);
1627 uint64_t cgen_var_105;
1628 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_105, 1);
1629 stream->write((uint64_t*)&cgen_var_105, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001630 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001631 uint64_t cgen_var_106 = (uint64_t)(uintptr_t)local_pAllocator;
1632 stream->putBe64(cgen_var_106);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001633 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001634 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001635 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001636 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001637 resources->destroyMapping()->mapHandles_VkDeviceMemory((VkDeviceMemory*)&memory);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001638 mImpl->log("finish vkFreeMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001639}
1640
1641VkResult VkEncoder::vkMapMemory(
1642 VkDevice device,
1643 VkDeviceMemory memory,
1644 VkDeviceSize offset,
1645 VkDeviceSize size,
1646 VkMemoryMapFlags flags,
1647 void** ppData)
1648{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001649 VkResult vkMapMemory_VkResult_return = (VkResult)0;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08001650 vkMapMemory_VkResult_return = mImpl->resources()->on_vkMapMemory(this, VK_SUCCESS, device, memory, offset, size, flags, ppData);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001651 mImpl->log("finish vkMapMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001652 return vkMapMemory_VkResult_return;
1653}
1654
1655void VkEncoder::vkUnmapMemory(
1656 VkDevice device,
1657 VkDeviceMemory memory)
1658{
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08001659 mImpl->resources()->on_vkUnmapMemory(this, device, memory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001660}
1661
1662VkResult VkEncoder::vkFlushMappedMemoryRanges(
1663 VkDevice device,
1664 uint32_t memoryRangeCount,
1665 const VkMappedMemoryRange* pMemoryRanges)
1666{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001667 mImpl->log("start vkFlushMappedMemoryRanges");
Lingfeng Yang29c99d92018-11-30 11:15:29 -08001668 VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkFlushMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001669 auto stream = mImpl->stream();
1670 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001671 auto resources = mImpl->resources();
1672 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001673 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001674 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001675 uint32_t local_memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001676 VkMappedMemoryRange* local_pMemoryRanges;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001677 local_device = device;
1678 local_memoryRangeCount = memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001679 local_pMemoryRanges = nullptr;
1680 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001681 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001682 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001683 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1684 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001685 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1686 }
1687 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08001688 if (local_pMemoryRanges)
1689 {
1690 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1691 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001692 transform_tohost_VkMappedMemoryRange(mImpl->resources(), (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001693 }
1694 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001695 countingStream->rewind();
1696 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001697 uint64_t cgen_var_107;
1698 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_107, 1);
1699 countingStream->write((uint64_t*)&cgen_var_107, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001700 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1701 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1702 {
1703 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001704 }
1705 }
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001706 if (!resources->usingDirectMapping())
Lingfeng Yange30d3382018-11-09 08:24:37 -08001707 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001708 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1709 {
1710 auto range = pMemoryRanges[i];
1711 auto memory = pMemoryRanges[i].memory;
1712 auto size = pMemoryRanges[i].size;
1713 auto offset = pMemoryRanges[i].offset;
1714 uint64_t streamSize = 0;
1715 if (!memory) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
1716 auto hostPtr = resources->getMappedPointer(memory);
1717 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1718 if (!hostPtr) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
1719 streamSize = actualSize;
1720 countingStream->write(&streamSize, sizeof(uint64_t));
1721 uint8_t* targetRange = hostPtr + offset;
1722 countingStream->write(targetRange, actualSize);
1723 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001724 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001725 uint32_t packetSize_vkFlushMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1726 countingStream->rewind();
1727 uint32_t opcode_vkFlushMappedMemoryRanges = OP_vkFlushMappedMemoryRanges;
1728 stream->write(&opcode_vkFlushMappedMemoryRanges, sizeof(uint32_t));
1729 stream->write(&packetSize_vkFlushMappedMemoryRanges, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001730 uint64_t cgen_var_108;
1731 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_108, 1);
1732 stream->write((uint64_t*)&cgen_var_108, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001733 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001734 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1735 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001736 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001737 }
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001738 if (!resources->usingDirectMapping())
Lingfeng Yange30d3382018-11-09 08:24:37 -08001739 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001740 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1741 {
1742 auto range = pMemoryRanges[i];
1743 auto memory = pMemoryRanges[i].memory;
1744 auto size = pMemoryRanges[i].size;
1745 auto offset = pMemoryRanges[i].offset;
1746 uint64_t streamSize = 0;
1747 if (!memory) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
1748 auto hostPtr = resources->getMappedPointer(memory);
1749 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1750 if (!hostPtr) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
1751 streamSize = actualSize;
1752 stream->write(&streamSize, sizeof(uint64_t));
1753 uint8_t* targetRange = hostPtr + offset;
1754 stream->write(targetRange, actualSize);
1755 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001756 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001757 VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
1758 stream->read(&vkFlushMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001759 countingStream->clearPool();
1760 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001761 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001762 mImpl->log("finish vkFlushMappedMemoryRanges");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001763 return vkFlushMappedMemoryRanges_VkResult_return;
1764}
1765
1766VkResult VkEncoder::vkInvalidateMappedMemoryRanges(
1767 VkDevice device,
1768 uint32_t memoryRangeCount,
1769 const VkMappedMemoryRange* pMemoryRanges)
1770{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001771 mImpl->log("start vkInvalidateMappedMemoryRanges");
Lingfeng Yang29c99d92018-11-30 11:15:29 -08001772 VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkInvalidateMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001773 auto stream = mImpl->stream();
1774 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001775 auto resources = mImpl->resources();
1776 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001777 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001778 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001779 uint32_t local_memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001780 VkMappedMemoryRange* local_pMemoryRanges;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001781 local_device = device;
1782 local_memoryRangeCount = memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001783 local_pMemoryRanges = nullptr;
1784 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001785 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001786 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001787 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1788 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001789 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1790 }
1791 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08001792 if (local_pMemoryRanges)
1793 {
1794 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1795 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001796 transform_tohost_VkMappedMemoryRange(mImpl->resources(), (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001797 }
1798 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001799 countingStream->rewind();
1800 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001801 uint64_t cgen_var_109;
1802 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_109, 1);
1803 countingStream->write((uint64_t*)&cgen_var_109, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001804 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1805 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1806 {
1807 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001808 }
1809 }
1810 uint32_t packetSize_vkInvalidateMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1811 countingStream->rewind();
1812 uint32_t opcode_vkInvalidateMappedMemoryRanges = OP_vkInvalidateMappedMemoryRanges;
1813 stream->write(&opcode_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
1814 stream->write(&packetSize_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001815 uint64_t cgen_var_110;
1816 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_110, 1);
1817 stream->write((uint64_t*)&cgen_var_110, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001818 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001819 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1820 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001821 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001822 }
1823 VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
1824 stream->read(&vkInvalidateMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001825 countingStream->clearPool();
1826 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001827 pool->freeAll();
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001828 if (!resources->usingDirectMapping())
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001829 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001830 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1831 {
1832 auto range = pMemoryRanges[i];
1833 auto memory = pMemoryRanges[i].memory;
1834 auto size = pMemoryRanges[i].size;
1835 auto offset = pMemoryRanges[i].offset;
1836 uint64_t streamSize = 0;
1837 if (!memory) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
1838 auto hostPtr = resources->getMappedPointer(memory);
1839 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1840 if (!hostPtr) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
1841 streamSize = actualSize;
1842 stream->read(&streamSize, sizeof(uint64_t));
1843 uint8_t* targetRange = hostPtr + offset;
1844 stream->read(targetRange, actualSize);
1845 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001846 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001847 mImpl->log("finish vkInvalidateMappedMemoryRanges");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001848 return vkInvalidateMappedMemoryRanges_VkResult_return;
1849}
1850
1851void VkEncoder::vkGetDeviceMemoryCommitment(
1852 VkDevice device,
1853 VkDeviceMemory memory,
1854 VkDeviceSize* pCommittedMemoryInBytes)
1855{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001856 mImpl->log("start vkGetDeviceMemoryCommitment");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001857 auto stream = mImpl->stream();
1858 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001859 auto resources = mImpl->resources();
1860 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001861 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001862 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001863 VkDeviceMemory local_memory;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001864 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001865 local_memory = memory;
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -08001866 mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001867 countingStream->rewind();
1868 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001869 uint64_t cgen_var_111;
1870 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_111, 1);
1871 countingStream->write((uint64_t*)&cgen_var_111, 1 * 8);
1872 uint64_t cgen_var_112;
1873 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_112, 1);
1874 countingStream->write((uint64_t*)&cgen_var_112, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001875 countingStream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1876 }
1877 uint32_t packetSize_vkGetDeviceMemoryCommitment = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1878 countingStream->rewind();
1879 uint32_t opcode_vkGetDeviceMemoryCommitment = OP_vkGetDeviceMemoryCommitment;
1880 stream->write(&opcode_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
1881 stream->write(&packetSize_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001882 uint64_t cgen_var_113;
1883 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_113, 1);
1884 stream->write((uint64_t*)&cgen_var_113, 1 * 8);
1885 uint64_t cgen_var_114;
1886 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_114, 1);
1887 stream->write((uint64_t*)&cgen_var_114, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001888 stream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1889 stream->read((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001890 mImpl->log("finish vkGetDeviceMemoryCommitment");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001891}
1892
1893VkResult VkEncoder::vkBindBufferMemory(
1894 VkDevice device,
1895 VkBuffer buffer,
1896 VkDeviceMemory memory,
1897 VkDeviceSize memoryOffset)
1898{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001899 mImpl->log("start vkBindBufferMemory");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001900 auto stream = mImpl->stream();
1901 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001902 auto resources = mImpl->resources();
1903 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001904 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001905 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001906 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001907 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001908 VkDeviceSize local_memoryOffset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001909 local_device = device;
1910 local_buffer = buffer;
1911 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001912 local_memoryOffset = memoryOffset;
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -08001913 mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)&local_memoryOffset, 1, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001914 countingStream->rewind();
1915 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001916 uint64_t cgen_var_115;
1917 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_115, 1);
1918 countingStream->write((uint64_t*)&cgen_var_115, 1 * 8);
1919 uint64_t cgen_var_116;
1920 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_116, 1);
1921 countingStream->write((uint64_t*)&cgen_var_116, 1 * 8);
1922 uint64_t cgen_var_117;
1923 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_117, 1);
1924 countingStream->write((uint64_t*)&cgen_var_117, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001925 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001926 }
1927 uint32_t packetSize_vkBindBufferMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1928 countingStream->rewind();
1929 uint32_t opcode_vkBindBufferMemory = OP_vkBindBufferMemory;
1930 stream->write(&opcode_vkBindBufferMemory, sizeof(uint32_t));
1931 stream->write(&packetSize_vkBindBufferMemory, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001932 uint64_t cgen_var_118;
1933 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_118, 1);
1934 stream->write((uint64_t*)&cgen_var_118, 1 * 8);
1935 uint64_t cgen_var_119;
1936 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_119, 1);
1937 stream->write((uint64_t*)&cgen_var_119, 1 * 8);
1938 uint64_t cgen_var_120;
1939 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_120, 1);
1940 stream->write((uint64_t*)&cgen_var_120, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001941 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001942 VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
1943 stream->read(&vkBindBufferMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001944 countingStream->clearPool();
1945 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001946 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001947 mImpl->log("finish vkBindBufferMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001948 return vkBindBufferMemory_VkResult_return;
1949}
1950
1951VkResult VkEncoder::vkBindImageMemory(
1952 VkDevice device,
1953 VkImage image,
1954 VkDeviceMemory memory,
1955 VkDeviceSize memoryOffset)
1956{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001957 mImpl->log("start vkBindImageMemory");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001958 auto stream = mImpl->stream();
1959 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001960 auto resources = mImpl->resources();
1961 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001962 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001963 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001964 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001965 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001966 VkDeviceSize local_memoryOffset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001967 local_device = device;
1968 local_image = image;
1969 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001970 local_memoryOffset = memoryOffset;
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -08001971 mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)&local_memoryOffset, 1, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001972 countingStream->rewind();
1973 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001974 uint64_t cgen_var_121;
1975 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_121, 1);
1976 countingStream->write((uint64_t*)&cgen_var_121, 1 * 8);
1977 uint64_t cgen_var_122;
1978 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_122, 1);
1979 countingStream->write((uint64_t*)&cgen_var_122, 1 * 8);
1980 uint64_t cgen_var_123;
1981 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_123, 1);
1982 countingStream->write((uint64_t*)&cgen_var_123, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001983 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001984 }
1985 uint32_t packetSize_vkBindImageMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1986 countingStream->rewind();
1987 uint32_t opcode_vkBindImageMemory = OP_vkBindImageMemory;
1988 stream->write(&opcode_vkBindImageMemory, sizeof(uint32_t));
1989 stream->write(&packetSize_vkBindImageMemory, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001990 uint64_t cgen_var_124;
1991 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_124, 1);
1992 stream->write((uint64_t*)&cgen_var_124, 1 * 8);
1993 uint64_t cgen_var_125;
1994 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_125, 1);
1995 stream->write((uint64_t*)&cgen_var_125, 1 * 8);
1996 uint64_t cgen_var_126;
1997 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_126, 1);
1998 stream->write((uint64_t*)&cgen_var_126, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001999 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002000 VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
2001 stream->read(&vkBindImageMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002002 countingStream->clearPool();
2003 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002004 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002005 mImpl->log("finish vkBindImageMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002006 return vkBindImageMemory_VkResult_return;
2007}
2008
2009void VkEncoder::vkGetBufferMemoryRequirements(
2010 VkDevice device,
2011 VkBuffer buffer,
2012 VkMemoryRequirements* pMemoryRequirements)
2013{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002014 mImpl->log("start vkGetBufferMemoryRequirements");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002015 auto stream = mImpl->stream();
2016 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002017 auto resources = mImpl->resources();
2018 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002019 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002020 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002021 VkBuffer local_buffer;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002022 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002023 local_buffer = buffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002024 countingStream->rewind();
2025 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002026 uint64_t cgen_var_127;
2027 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_127, 1);
2028 countingStream->write((uint64_t*)&cgen_var_127, 1 * 8);
2029 uint64_t cgen_var_128;
2030 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_128, 1);
2031 countingStream->write((uint64_t*)&cgen_var_128, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002032 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
2033 }
2034 uint32_t packetSize_vkGetBufferMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2035 countingStream->rewind();
2036 uint32_t opcode_vkGetBufferMemoryRequirements = OP_vkGetBufferMemoryRequirements;
2037 stream->write(&opcode_vkGetBufferMemoryRequirements, sizeof(uint32_t));
2038 stream->write(&packetSize_vkGetBufferMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002039 uint64_t cgen_var_129;
2040 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_129, 1);
2041 stream->write((uint64_t*)&cgen_var_129, 1 * 8);
2042 uint64_t cgen_var_130;
2043 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_130, 1);
2044 stream->write((uint64_t*)&cgen_var_130, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002045 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
2046 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -08002047 if (pMemoryRequirements)
2048 {
2049 transform_fromhost_VkMemoryRequirements(mImpl->resources(), (VkMemoryRequirements*)(pMemoryRequirements));
2050 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002051 mImpl->log("finish vkGetBufferMemoryRequirements");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002052}
2053
2054void VkEncoder::vkGetImageMemoryRequirements(
2055 VkDevice device,
2056 VkImage image,
2057 VkMemoryRequirements* pMemoryRequirements)
2058{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002059 mImpl->log("start vkGetImageMemoryRequirements");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002060 auto stream = mImpl->stream();
2061 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002062 auto resources = mImpl->resources();
2063 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002064 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002065 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002066 VkImage local_image;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002067 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002068 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002069 countingStream->rewind();
2070 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002071 uint64_t cgen_var_131;
2072 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_131, 1);
2073 countingStream->write((uint64_t*)&cgen_var_131, 1 * 8);
2074 uint64_t cgen_var_132;
2075 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_132, 1);
2076 countingStream->write((uint64_t*)&cgen_var_132, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002077 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
2078 }
2079 uint32_t packetSize_vkGetImageMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2080 countingStream->rewind();
2081 uint32_t opcode_vkGetImageMemoryRequirements = OP_vkGetImageMemoryRequirements;
2082 stream->write(&opcode_vkGetImageMemoryRequirements, sizeof(uint32_t));
2083 stream->write(&packetSize_vkGetImageMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002084 uint64_t cgen_var_133;
2085 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_133, 1);
2086 stream->write((uint64_t*)&cgen_var_133, 1 * 8);
2087 uint64_t cgen_var_134;
2088 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_134, 1);
2089 stream->write((uint64_t*)&cgen_var_134, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002090 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
2091 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -08002092 if (pMemoryRequirements)
2093 {
2094 transform_fromhost_VkMemoryRequirements(mImpl->resources(), (VkMemoryRequirements*)(pMemoryRequirements));
2095 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002096 mImpl->log("finish vkGetImageMemoryRequirements");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002097}
2098
2099void VkEncoder::vkGetImageSparseMemoryRequirements(
2100 VkDevice device,
2101 VkImage image,
2102 uint32_t* pSparseMemoryRequirementCount,
2103 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
2104{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002105 mImpl->log("start vkGetImageSparseMemoryRequirements");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002106 auto stream = mImpl->stream();
2107 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002108 auto resources = mImpl->resources();
2109 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002110 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002111 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002112 VkImage local_image;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002113 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002114 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002115 countingStream->rewind();
2116 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002117 uint64_t cgen_var_135;
2118 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_135, 1);
2119 countingStream->write((uint64_t*)&cgen_var_135, 1 * 8);
2120 uint64_t cgen_var_136;
2121 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_136, 1);
2122 countingStream->write((uint64_t*)&cgen_var_136, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002123 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002124 uint64_t cgen_var_137 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
2125 countingStream->putBe64(cgen_var_137);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002126 if (pSparseMemoryRequirementCount)
2127 {
2128 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
2129 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002130 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002131 uint64_t cgen_var_138 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
2132 countingStream->putBe64(cgen_var_138);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002133 if (pSparseMemoryRequirements)
2134 {
2135 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2136 {
2137 marshal_VkSparseImageMemoryRequirements(countingStream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2138 }
2139 }
2140 }
2141 uint32_t packetSize_vkGetImageSparseMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2142 countingStream->rewind();
2143 uint32_t opcode_vkGetImageSparseMemoryRequirements = OP_vkGetImageSparseMemoryRequirements;
2144 stream->write(&opcode_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
2145 stream->write(&packetSize_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002146 uint64_t cgen_var_139;
2147 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_139, 1);
2148 stream->write((uint64_t*)&cgen_var_139, 1 * 8);
2149 uint64_t cgen_var_140;
2150 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_140, 1);
2151 stream->write((uint64_t*)&cgen_var_140, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002152 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002153 uint64_t cgen_var_141 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
2154 stream->putBe64(cgen_var_141);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002155 if (pSparseMemoryRequirementCount)
2156 {
2157 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
2158 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002159 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002160 uint64_t cgen_var_142 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
2161 stream->putBe64(cgen_var_142);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002162 if (pSparseMemoryRequirements)
2163 {
2164 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2165 {
2166 marshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2167 }
2168 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002169 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002170 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002171 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002172 if (pSparseMemoryRequirementCount)
2173 {
2174 if (!(check_pSparseMemoryRequirementCount))
2175 {
2176 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
2177 }
2178 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
2179 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002180 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002181 VkSparseImageMemoryRequirements* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002182 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002183 if (pSparseMemoryRequirements)
2184 {
2185 if (!(check_pSparseMemoryRequirements))
2186 {
2187 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
2188 }
2189 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2190 {
2191 unmarshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2192 }
2193 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08002194 if (pSparseMemoryRequirements)
2195 {
2196 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2197 {
2198 transform_fromhost_VkSparseImageMemoryRequirements(mImpl->resources(), (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2199 }
2200 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002201 mImpl->log("finish vkGetImageSparseMemoryRequirements");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002202}
2203
2204void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties(
2205 VkPhysicalDevice physicalDevice,
2206 VkFormat format,
2207 VkImageType type,
2208 VkSampleCountFlagBits samples,
2209 VkImageUsageFlags usage,
2210 VkImageTiling tiling,
2211 uint32_t* pPropertyCount,
2212 VkSparseImageFormatProperties* pProperties)
2213{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002214 mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002215 auto stream = mImpl->stream();
2216 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002217 auto resources = mImpl->resources();
2218 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002219 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002220 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002221 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002222 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002223 VkSampleCountFlagBits local_samples;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002224 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002225 VkImageTiling local_tiling;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002226 local_physicalDevice = physicalDevice;
2227 local_format = format;
2228 local_type = type;
2229 local_samples = samples;
2230 local_usage = usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002231 local_tiling = tiling;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002232 countingStream->rewind();
2233 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002234 uint64_t cgen_var_145;
2235 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_145, 1);
2236 countingStream->write((uint64_t*)&cgen_var_145, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002237 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
2238 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
2239 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
2240 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
2241 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002242 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002243 uint64_t cgen_var_146 = (uint64_t)(uintptr_t)pPropertyCount;
2244 countingStream->putBe64(cgen_var_146);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002245 if (pPropertyCount)
2246 {
2247 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
2248 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002249 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002250 uint64_t cgen_var_147 = (uint64_t)(uintptr_t)pProperties;
2251 countingStream->putBe64(cgen_var_147);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002252 if (pProperties)
2253 {
2254 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2255 {
2256 marshal_VkSparseImageFormatProperties(countingStream, (VkSparseImageFormatProperties*)(pProperties + i));
2257 }
2258 }
2259 }
2260 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2261 countingStream->rewind();
2262 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties = OP_vkGetPhysicalDeviceSparseImageFormatProperties;
2263 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
2264 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002265 uint64_t cgen_var_148;
2266 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_148, 1);
2267 stream->write((uint64_t*)&cgen_var_148, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002268 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
2269 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
2270 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
2271 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
2272 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002273 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002274 uint64_t cgen_var_149 = (uint64_t)(uintptr_t)pPropertyCount;
2275 stream->putBe64(cgen_var_149);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002276 if (pPropertyCount)
2277 {
2278 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
2279 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002280 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002281 uint64_t cgen_var_150 = (uint64_t)(uintptr_t)pProperties;
2282 stream->putBe64(cgen_var_150);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002283 if (pProperties)
2284 {
2285 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2286 {
2287 marshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
2288 }
2289 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002290 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002291 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002292 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002293 if (pPropertyCount)
2294 {
2295 if (!(check_pPropertyCount))
2296 {
2297 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
2298 }
2299 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
2300 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002301 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002302 VkSparseImageFormatProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002303 check_pProperties = (VkSparseImageFormatProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002304 if (pProperties)
2305 {
2306 if (!(check_pProperties))
2307 {
2308 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
2309 }
2310 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2311 {
2312 unmarshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
2313 }
2314 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08002315 if (pProperties)
2316 {
2317 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2318 {
2319 transform_fromhost_VkSparseImageFormatProperties(mImpl->resources(), (VkSparseImageFormatProperties*)(pProperties + i));
2320 }
2321 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002322 mImpl->log("finish vkGetPhysicalDeviceSparseImageFormatProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002323}
2324
2325VkResult VkEncoder::vkQueueBindSparse(
2326 VkQueue queue,
2327 uint32_t bindInfoCount,
2328 const VkBindSparseInfo* pBindInfo,
2329 VkFence fence)
2330{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002331 mImpl->log("start vkQueueBindSparse");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002332 auto stream = mImpl->stream();
2333 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002334 auto resources = mImpl->resources();
2335 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002336 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002337 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002338 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002339 VkBindSparseInfo* local_pBindInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002340 VkFence local_fence;
2341 local_queue = queue;
2342 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002343 local_pBindInfo = nullptr;
2344 if (pBindInfo)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002345 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002346 local_pBindInfo = (VkBindSparseInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindSparseInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002347 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2348 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002349 deepcopy_VkBindSparseInfo(pool, pBindInfo + i, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002350 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002351 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002352 local_fence = fence;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002353 if (local_pBindInfo)
2354 {
2355 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2356 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002357 transform_tohost_VkBindSparseInfo(mImpl->resources(), (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002358 }
2359 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002360 countingStream->rewind();
2361 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002362 uint64_t cgen_var_153;
2363 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_153, 1);
2364 countingStream->write((uint64_t*)&cgen_var_153, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002365 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
2366 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2367 {
2368 marshal_VkBindSparseInfo(countingStream, (VkBindSparseInfo*)(local_pBindInfo + i));
2369 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002370 uint64_t cgen_var_154;
2371 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_154, 1);
2372 countingStream->write((uint64_t*)&cgen_var_154, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002373 }
2374 uint32_t packetSize_vkQueueBindSparse = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2375 countingStream->rewind();
2376 uint32_t opcode_vkQueueBindSparse = OP_vkQueueBindSparse;
2377 stream->write(&opcode_vkQueueBindSparse, sizeof(uint32_t));
2378 stream->write(&packetSize_vkQueueBindSparse, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002379 uint64_t cgen_var_155;
2380 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_155, 1);
2381 stream->write((uint64_t*)&cgen_var_155, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002382 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002383 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2384 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002385 marshal_VkBindSparseInfo(stream, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002386 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002387 uint64_t cgen_var_156;
2388 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_156, 1);
2389 stream->write((uint64_t*)&cgen_var_156, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002390 VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
2391 stream->read(&vkQueueBindSparse_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002392 countingStream->clearPool();
2393 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002394 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002395 mImpl->log("finish vkQueueBindSparse");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002396 return vkQueueBindSparse_VkResult_return;
2397}
2398
2399VkResult VkEncoder::vkCreateFence(
2400 VkDevice device,
2401 const VkFenceCreateInfo* pCreateInfo,
2402 const VkAllocationCallbacks* pAllocator,
2403 VkFence* pFence)
2404{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002405 mImpl->log("start vkCreateFence");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002406 auto stream = mImpl->stream();
2407 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002408 auto resources = mImpl->resources();
2409 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002410 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002411 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002412 VkFenceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002413 VkAllocationCallbacks* local_pAllocator;
2414 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002415 local_pCreateInfo = nullptr;
2416 if (pCreateInfo)
2417 {
2418 local_pCreateInfo = (VkFenceCreateInfo*)pool->alloc(sizeof(const VkFenceCreateInfo));
2419 deepcopy_VkFenceCreateInfo(pool, pCreateInfo, (VkFenceCreateInfo*)(local_pCreateInfo));
2420 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002421 local_pAllocator = nullptr;
2422 if (pAllocator)
2423 {
2424 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2425 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2426 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002427 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002428 if (local_pCreateInfo)
2429 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002430 transform_tohost_VkFenceCreateInfo(mImpl->resources(), (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002431 }
2432 if (local_pAllocator)
2433 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002434 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002435 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002436 countingStream->rewind();
2437 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002438 uint64_t cgen_var_157;
2439 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_157, 1);
2440 countingStream->write((uint64_t*)&cgen_var_157, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002441 marshal_VkFenceCreateInfo(countingStream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002442 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002443 uint64_t cgen_var_158 = (uint64_t)(uintptr_t)local_pAllocator;
2444 countingStream->putBe64(cgen_var_158);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002445 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002446 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002447 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002448 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002449 uint64_t cgen_var_159;
2450 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_159, 1);
2451 countingStream->write((uint64_t*)&cgen_var_159, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002452 }
2453 uint32_t packetSize_vkCreateFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2454 countingStream->rewind();
2455 uint32_t opcode_vkCreateFence = OP_vkCreateFence;
2456 stream->write(&opcode_vkCreateFence, sizeof(uint32_t));
2457 stream->write(&packetSize_vkCreateFence, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002458 uint64_t cgen_var_160;
2459 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_160, 1);
2460 stream->write((uint64_t*)&cgen_var_160, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002461 marshal_VkFenceCreateInfo(stream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002462 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002463 uint64_t cgen_var_161 = (uint64_t)(uintptr_t)local_pAllocator;
2464 stream->putBe64(cgen_var_161);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002465 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002466 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002467 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002468 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002469 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002470 uint64_t cgen_var_162;
2471 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_162, 1);
2472 stream->write((uint64_t*)&cgen_var_162, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002473 stream->setHandleMapping(resources->unwrapMapping());
2474 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002475 uint64_t cgen_var_163;
2476 stream->read((uint64_t*)&cgen_var_163, 8);
2477 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_163, (VkFence*)pFence, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002478 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002479 VkResult vkCreateFence_VkResult_return = (VkResult)0;
2480 stream->read(&vkCreateFence_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002481 countingStream->clearPool();
2482 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002483 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002484 mImpl->log("finish vkCreateFence");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002485 return vkCreateFence_VkResult_return;
2486}
2487
2488void VkEncoder::vkDestroyFence(
2489 VkDevice device,
2490 VkFence fence,
2491 const VkAllocationCallbacks* pAllocator)
2492{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002493 mImpl->log("start vkDestroyFence");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002494 auto stream = mImpl->stream();
2495 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002496 auto resources = mImpl->resources();
2497 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002498 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002499 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002500 VkFence local_fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002501 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002502 local_device = device;
2503 local_fence = fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002504 local_pAllocator = nullptr;
2505 if (pAllocator)
2506 {
2507 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2508 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2509 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002510 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002511 if (local_pAllocator)
2512 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002513 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002514 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002515 countingStream->rewind();
2516 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002517 uint64_t cgen_var_164;
2518 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_164, 1);
2519 countingStream->write((uint64_t*)&cgen_var_164, 1 * 8);
2520 uint64_t cgen_var_165;
2521 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_165, 1);
2522 countingStream->write((uint64_t*)&cgen_var_165, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002523 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002524 uint64_t cgen_var_166 = (uint64_t)(uintptr_t)local_pAllocator;
2525 countingStream->putBe64(cgen_var_166);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002526 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002527 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002528 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002529 }
2530 }
2531 uint32_t packetSize_vkDestroyFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2532 countingStream->rewind();
2533 uint32_t opcode_vkDestroyFence = OP_vkDestroyFence;
2534 stream->write(&opcode_vkDestroyFence, sizeof(uint32_t));
2535 stream->write(&packetSize_vkDestroyFence, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002536 uint64_t cgen_var_167;
2537 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_167, 1);
2538 stream->write((uint64_t*)&cgen_var_167, 1 * 8);
2539 uint64_t cgen_var_168;
2540 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_168, 1);
2541 stream->write((uint64_t*)&cgen_var_168, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002542 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002543 uint64_t cgen_var_169 = (uint64_t)(uintptr_t)local_pAllocator;
2544 stream->putBe64(cgen_var_169);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002545 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002546 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002547 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002548 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002549 resources->destroyMapping()->mapHandles_VkFence((VkFence*)&fence);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002550 mImpl->log("finish vkDestroyFence");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002551}
2552
2553VkResult VkEncoder::vkResetFences(
2554 VkDevice device,
2555 uint32_t fenceCount,
2556 const VkFence* pFences)
2557{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002558 mImpl->log("start vkResetFences");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002559 auto stream = mImpl->stream();
2560 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002561 auto resources = mImpl->resources();
2562 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002563 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002564 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002565 uint32_t local_fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002566 VkFence* local_pFences;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002567 local_device = device;
2568 local_fenceCount = fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002569 local_pFences = nullptr;
2570 if (pFences)
2571 {
2572 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2573 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002574 countingStream->rewind();
2575 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002576 uint64_t cgen_var_170;
2577 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_170, 1);
2578 countingStream->write((uint64_t*)&cgen_var_170, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002579 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002580 if (((fenceCount)))
2581 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002582 uint64_t* cgen_var_171;
2583 countingStream->alloc((void**)&cgen_var_171, ((fenceCount)) * 8);
2584 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_171, ((fenceCount)));
2585 countingStream->write((uint64_t*)cgen_var_171, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002586 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002587 }
2588 uint32_t packetSize_vkResetFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2589 countingStream->rewind();
2590 uint32_t opcode_vkResetFences = OP_vkResetFences;
2591 stream->write(&opcode_vkResetFences, sizeof(uint32_t));
2592 stream->write(&packetSize_vkResetFences, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002593 uint64_t cgen_var_172;
2594 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_172, 1);
2595 stream->write((uint64_t*)&cgen_var_172, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002596 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002597 if (((fenceCount)))
2598 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002599 uint64_t* cgen_var_173;
2600 stream->alloc((void**)&cgen_var_173, ((fenceCount)) * 8);
2601 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_173, ((fenceCount)));
2602 stream->write((uint64_t*)cgen_var_173, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002603 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002604 VkResult vkResetFences_VkResult_return = (VkResult)0;
2605 stream->read(&vkResetFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002606 countingStream->clearPool();
2607 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002608 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002609 mImpl->log("finish vkResetFences");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002610 return vkResetFences_VkResult_return;
2611}
2612
2613VkResult VkEncoder::vkGetFenceStatus(
2614 VkDevice device,
2615 VkFence fence)
2616{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002617 mImpl->log("start vkGetFenceStatus");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002618 auto stream = mImpl->stream();
2619 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002620 auto resources = mImpl->resources();
2621 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002622 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002623 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002624 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002625 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002626 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002627 countingStream->rewind();
2628 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002629 uint64_t cgen_var_174;
2630 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_174, 1);
2631 countingStream->write((uint64_t*)&cgen_var_174, 1 * 8);
2632 uint64_t cgen_var_175;
2633 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_175, 1);
2634 countingStream->write((uint64_t*)&cgen_var_175, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002635 }
2636 uint32_t packetSize_vkGetFenceStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2637 countingStream->rewind();
2638 uint32_t opcode_vkGetFenceStatus = OP_vkGetFenceStatus;
2639 stream->write(&opcode_vkGetFenceStatus, sizeof(uint32_t));
2640 stream->write(&packetSize_vkGetFenceStatus, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002641 uint64_t cgen_var_176;
2642 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_176, 1);
2643 stream->write((uint64_t*)&cgen_var_176, 1 * 8);
2644 uint64_t cgen_var_177;
2645 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_177, 1);
2646 stream->write((uint64_t*)&cgen_var_177, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002647 VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
2648 stream->read(&vkGetFenceStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002649 countingStream->clearPool();
2650 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002651 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002652 mImpl->log("finish vkGetFenceStatus");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002653 return vkGetFenceStatus_VkResult_return;
2654}
2655
2656VkResult VkEncoder::vkWaitForFences(
2657 VkDevice device,
2658 uint32_t fenceCount,
2659 const VkFence* pFences,
2660 VkBool32 waitAll,
2661 uint64_t timeout)
2662{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002663 mImpl->log("start vkWaitForFences");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002664 auto stream = mImpl->stream();
2665 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002666 auto resources = mImpl->resources();
2667 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002668 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002669 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002670 uint32_t local_fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002671 VkFence* local_pFences;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002672 VkBool32 local_waitAll;
2673 uint64_t local_timeout;
2674 local_device = device;
2675 local_fenceCount = fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002676 local_pFences = nullptr;
2677 if (pFences)
2678 {
2679 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2680 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002681 local_waitAll = waitAll;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002682 local_timeout = timeout;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002683 countingStream->rewind();
2684 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002685 uint64_t cgen_var_178;
2686 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_178, 1);
2687 countingStream->write((uint64_t*)&cgen_var_178, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002688 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002689 if (((fenceCount)))
2690 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002691 uint64_t* cgen_var_179;
2692 countingStream->alloc((void**)&cgen_var_179, ((fenceCount)) * 8);
2693 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_179, ((fenceCount)));
2694 countingStream->write((uint64_t*)cgen_var_179, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002695 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002696 countingStream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2697 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002698 }
2699 uint32_t packetSize_vkWaitForFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2700 countingStream->rewind();
2701 uint32_t opcode_vkWaitForFences = OP_vkWaitForFences;
2702 stream->write(&opcode_vkWaitForFences, sizeof(uint32_t));
2703 stream->write(&packetSize_vkWaitForFences, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002704 uint64_t cgen_var_180;
2705 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_180, 1);
2706 stream->write((uint64_t*)&cgen_var_180, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002707 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002708 if (((fenceCount)))
2709 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002710 uint64_t* cgen_var_181;
2711 stream->alloc((void**)&cgen_var_181, ((fenceCount)) * 8);
2712 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_181, ((fenceCount)));
2713 stream->write((uint64_t*)cgen_var_181, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002714 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002715 stream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2716 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002717 VkResult vkWaitForFences_VkResult_return = (VkResult)0;
2718 stream->read(&vkWaitForFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002719 countingStream->clearPool();
2720 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002721 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002722 mImpl->log("finish vkWaitForFences");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002723 return vkWaitForFences_VkResult_return;
2724}
2725
2726VkResult VkEncoder::vkCreateSemaphore(
2727 VkDevice device,
2728 const VkSemaphoreCreateInfo* pCreateInfo,
2729 const VkAllocationCallbacks* pAllocator,
2730 VkSemaphore* pSemaphore)
2731{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002732 mImpl->log("start vkCreateSemaphore");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002733 auto stream = mImpl->stream();
2734 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002735 auto resources = mImpl->resources();
2736 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002737 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002738 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002739 VkSemaphoreCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002740 VkAllocationCallbacks* local_pAllocator;
2741 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002742 local_pCreateInfo = nullptr;
2743 if (pCreateInfo)
2744 {
2745 local_pCreateInfo = (VkSemaphoreCreateInfo*)pool->alloc(sizeof(const VkSemaphoreCreateInfo));
2746 deepcopy_VkSemaphoreCreateInfo(pool, pCreateInfo, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
2747 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002748 local_pAllocator = nullptr;
2749 if (pAllocator)
2750 {
2751 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2752 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2753 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002754 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002755 if (local_pCreateInfo)
2756 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002757 transform_tohost_VkSemaphoreCreateInfo(mImpl->resources(), (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002758 }
2759 if (local_pAllocator)
2760 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002761 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002762 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002763 countingStream->rewind();
2764 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002765 uint64_t cgen_var_182;
2766 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_182, 1);
2767 countingStream->write((uint64_t*)&cgen_var_182, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002768 marshal_VkSemaphoreCreateInfo(countingStream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002769 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002770 uint64_t cgen_var_183 = (uint64_t)(uintptr_t)local_pAllocator;
2771 countingStream->putBe64(cgen_var_183);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002772 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002773 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002774 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002775 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002776 uint64_t cgen_var_184;
2777 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_184, 1);
2778 countingStream->write((uint64_t*)&cgen_var_184, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002779 }
2780 uint32_t packetSize_vkCreateSemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2781 countingStream->rewind();
2782 uint32_t opcode_vkCreateSemaphore = OP_vkCreateSemaphore;
2783 stream->write(&opcode_vkCreateSemaphore, sizeof(uint32_t));
2784 stream->write(&packetSize_vkCreateSemaphore, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002785 uint64_t cgen_var_185;
2786 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_185, 1);
2787 stream->write((uint64_t*)&cgen_var_185, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002788 marshal_VkSemaphoreCreateInfo(stream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002789 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002790 uint64_t cgen_var_186 = (uint64_t)(uintptr_t)local_pAllocator;
2791 stream->putBe64(cgen_var_186);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002792 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002793 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002794 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002795 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002796 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002797 uint64_t cgen_var_187;
2798 stream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_187, 1);
2799 stream->write((uint64_t*)&cgen_var_187, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002800 stream->setHandleMapping(resources->unwrapMapping());
2801 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002802 uint64_t cgen_var_188;
2803 stream->read((uint64_t*)&cgen_var_188, 8);
2804 stream->handleMapping()->mapHandles_u64_VkSemaphore(&cgen_var_188, (VkSemaphore*)pSemaphore, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002805 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002806 VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
2807 stream->read(&vkCreateSemaphore_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002808 countingStream->clearPool();
2809 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002810 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002811 mImpl->log("finish vkCreateSemaphore");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002812 return vkCreateSemaphore_VkResult_return;
2813}
2814
2815void VkEncoder::vkDestroySemaphore(
2816 VkDevice device,
2817 VkSemaphore semaphore,
2818 const VkAllocationCallbacks* pAllocator)
2819{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002820 mImpl->log("start vkDestroySemaphore");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002821 auto stream = mImpl->stream();
2822 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002823 auto resources = mImpl->resources();
2824 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002825 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002826 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002827 VkSemaphore local_semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002828 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002829 local_device = device;
2830 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002831 local_pAllocator = nullptr;
2832 if (pAllocator)
2833 {
2834 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2835 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2836 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002837 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002838 if (local_pAllocator)
2839 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002840 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002841 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002842 countingStream->rewind();
2843 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002844 uint64_t cgen_var_189;
2845 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_189, 1);
2846 countingStream->write((uint64_t*)&cgen_var_189, 1 * 8);
2847 uint64_t cgen_var_190;
2848 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_190, 1);
2849 countingStream->write((uint64_t*)&cgen_var_190, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002850 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002851 uint64_t cgen_var_191 = (uint64_t)(uintptr_t)local_pAllocator;
2852 countingStream->putBe64(cgen_var_191);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002853 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002854 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002855 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002856 }
2857 }
2858 uint32_t packetSize_vkDestroySemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2859 countingStream->rewind();
2860 uint32_t opcode_vkDestroySemaphore = OP_vkDestroySemaphore;
2861 stream->write(&opcode_vkDestroySemaphore, sizeof(uint32_t));
2862 stream->write(&packetSize_vkDestroySemaphore, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002863 uint64_t cgen_var_192;
2864 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_192, 1);
2865 stream->write((uint64_t*)&cgen_var_192, 1 * 8);
2866 uint64_t cgen_var_193;
2867 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_193, 1);
2868 stream->write((uint64_t*)&cgen_var_193, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002869 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002870 uint64_t cgen_var_194 = (uint64_t)(uintptr_t)local_pAllocator;
2871 stream->putBe64(cgen_var_194);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002872 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002873 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002874 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002875 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002876 resources->destroyMapping()->mapHandles_VkSemaphore((VkSemaphore*)&semaphore);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002877 mImpl->log("finish vkDestroySemaphore");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002878}
2879
2880VkResult VkEncoder::vkCreateEvent(
2881 VkDevice device,
2882 const VkEventCreateInfo* pCreateInfo,
2883 const VkAllocationCallbacks* pAllocator,
2884 VkEvent* pEvent)
2885{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002886 mImpl->log("start vkCreateEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002887 auto stream = mImpl->stream();
2888 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002889 auto resources = mImpl->resources();
2890 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002891 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002892 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002893 VkEventCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002894 VkAllocationCallbacks* local_pAllocator;
2895 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002896 local_pCreateInfo = nullptr;
2897 if (pCreateInfo)
2898 {
2899 local_pCreateInfo = (VkEventCreateInfo*)pool->alloc(sizeof(const VkEventCreateInfo));
2900 deepcopy_VkEventCreateInfo(pool, pCreateInfo, (VkEventCreateInfo*)(local_pCreateInfo));
2901 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002902 local_pAllocator = nullptr;
2903 if (pAllocator)
2904 {
2905 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2906 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2907 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002908 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002909 if (local_pCreateInfo)
2910 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002911 transform_tohost_VkEventCreateInfo(mImpl->resources(), (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002912 }
2913 if (local_pAllocator)
2914 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002915 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002916 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002917 countingStream->rewind();
2918 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002919 uint64_t cgen_var_195;
2920 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_195, 1);
2921 countingStream->write((uint64_t*)&cgen_var_195, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002922 marshal_VkEventCreateInfo(countingStream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002923 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002924 uint64_t cgen_var_196 = (uint64_t)(uintptr_t)local_pAllocator;
2925 countingStream->putBe64(cgen_var_196);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002926 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002927 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002928 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002929 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002930 uint64_t cgen_var_197;
2931 countingStream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_197, 1);
2932 countingStream->write((uint64_t*)&cgen_var_197, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002933 }
2934 uint32_t packetSize_vkCreateEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2935 countingStream->rewind();
2936 uint32_t opcode_vkCreateEvent = OP_vkCreateEvent;
2937 stream->write(&opcode_vkCreateEvent, sizeof(uint32_t));
2938 stream->write(&packetSize_vkCreateEvent, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002939 uint64_t cgen_var_198;
2940 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_198, 1);
2941 stream->write((uint64_t*)&cgen_var_198, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002942 marshal_VkEventCreateInfo(stream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002943 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002944 uint64_t cgen_var_199 = (uint64_t)(uintptr_t)local_pAllocator;
2945 stream->putBe64(cgen_var_199);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002946 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002947 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002948 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002949 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002950 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002951 uint64_t cgen_var_200;
2952 stream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_200, 1);
2953 stream->write((uint64_t*)&cgen_var_200, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002954 stream->setHandleMapping(resources->unwrapMapping());
2955 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002956 uint64_t cgen_var_201;
2957 stream->read((uint64_t*)&cgen_var_201, 8);
2958 stream->handleMapping()->mapHandles_u64_VkEvent(&cgen_var_201, (VkEvent*)pEvent, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002959 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002960 VkResult vkCreateEvent_VkResult_return = (VkResult)0;
2961 stream->read(&vkCreateEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002962 countingStream->clearPool();
2963 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002964 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002965 mImpl->log("finish vkCreateEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002966 return vkCreateEvent_VkResult_return;
2967}
2968
2969void VkEncoder::vkDestroyEvent(
2970 VkDevice device,
2971 VkEvent event,
2972 const VkAllocationCallbacks* pAllocator)
2973{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002974 mImpl->log("start vkDestroyEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002975 auto stream = mImpl->stream();
2976 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002977 auto resources = mImpl->resources();
2978 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002979 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002980 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002981 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002982 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002983 local_device = device;
2984 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002985 local_pAllocator = nullptr;
2986 if (pAllocator)
2987 {
2988 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2989 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2990 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002991 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002992 if (local_pAllocator)
2993 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002994 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002995 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002996 countingStream->rewind();
2997 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002998 uint64_t cgen_var_202;
2999 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_202, 1);
3000 countingStream->write((uint64_t*)&cgen_var_202, 1 * 8);
3001 uint64_t cgen_var_203;
3002 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_203, 1);
3003 countingStream->write((uint64_t*)&cgen_var_203, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003004 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003005 uint64_t cgen_var_204 = (uint64_t)(uintptr_t)local_pAllocator;
3006 countingStream->putBe64(cgen_var_204);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003007 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003008 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003009 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003010 }
3011 }
3012 uint32_t packetSize_vkDestroyEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3013 countingStream->rewind();
3014 uint32_t opcode_vkDestroyEvent = OP_vkDestroyEvent;
3015 stream->write(&opcode_vkDestroyEvent, sizeof(uint32_t));
3016 stream->write(&packetSize_vkDestroyEvent, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003017 uint64_t cgen_var_205;
3018 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_205, 1);
3019 stream->write((uint64_t*)&cgen_var_205, 1 * 8);
3020 uint64_t cgen_var_206;
3021 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_206, 1);
3022 stream->write((uint64_t*)&cgen_var_206, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003023 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003024 uint64_t cgen_var_207 = (uint64_t)(uintptr_t)local_pAllocator;
3025 stream->putBe64(cgen_var_207);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003026 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003027 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003028 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003029 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003030 resources->destroyMapping()->mapHandles_VkEvent((VkEvent*)&event);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003031 mImpl->log("finish vkDestroyEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003032}
3033
3034VkResult VkEncoder::vkGetEventStatus(
3035 VkDevice device,
3036 VkEvent event)
3037{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003038 mImpl->log("start vkGetEventStatus");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003039 auto stream = mImpl->stream();
3040 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003041 auto resources = mImpl->resources();
3042 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003043 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003044 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003045 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003046 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003047 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003048 countingStream->rewind();
3049 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003050 uint64_t cgen_var_208;
3051 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_208, 1);
3052 countingStream->write((uint64_t*)&cgen_var_208, 1 * 8);
3053 uint64_t cgen_var_209;
3054 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_209, 1);
3055 countingStream->write((uint64_t*)&cgen_var_209, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003056 }
3057 uint32_t packetSize_vkGetEventStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3058 countingStream->rewind();
3059 uint32_t opcode_vkGetEventStatus = OP_vkGetEventStatus;
3060 stream->write(&opcode_vkGetEventStatus, sizeof(uint32_t));
3061 stream->write(&packetSize_vkGetEventStatus, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003062 uint64_t cgen_var_210;
3063 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_210, 1);
3064 stream->write((uint64_t*)&cgen_var_210, 1 * 8);
3065 uint64_t cgen_var_211;
3066 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_211, 1);
3067 stream->write((uint64_t*)&cgen_var_211, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003068 VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
3069 stream->read(&vkGetEventStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003070 countingStream->clearPool();
3071 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003072 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003073 mImpl->log("finish vkGetEventStatus");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003074 return vkGetEventStatus_VkResult_return;
3075}
3076
3077VkResult VkEncoder::vkSetEvent(
3078 VkDevice device,
3079 VkEvent event)
3080{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003081 mImpl->log("start vkSetEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003082 auto stream = mImpl->stream();
3083 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003084 auto resources = mImpl->resources();
3085 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003086 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003087 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003088 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003089 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003090 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003091 countingStream->rewind();
3092 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003093 uint64_t cgen_var_212;
3094 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_212, 1);
3095 countingStream->write((uint64_t*)&cgen_var_212, 1 * 8);
3096 uint64_t cgen_var_213;
3097 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_213, 1);
3098 countingStream->write((uint64_t*)&cgen_var_213, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003099 }
3100 uint32_t packetSize_vkSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3101 countingStream->rewind();
3102 uint32_t opcode_vkSetEvent = OP_vkSetEvent;
3103 stream->write(&opcode_vkSetEvent, sizeof(uint32_t));
3104 stream->write(&packetSize_vkSetEvent, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003105 uint64_t cgen_var_214;
3106 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_214, 1);
3107 stream->write((uint64_t*)&cgen_var_214, 1 * 8);
3108 uint64_t cgen_var_215;
3109 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_215, 1);
3110 stream->write((uint64_t*)&cgen_var_215, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003111 VkResult vkSetEvent_VkResult_return = (VkResult)0;
3112 stream->read(&vkSetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003113 countingStream->clearPool();
3114 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003115 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003116 mImpl->log("finish vkSetEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003117 return vkSetEvent_VkResult_return;
3118}
3119
3120VkResult VkEncoder::vkResetEvent(
3121 VkDevice device,
3122 VkEvent event)
3123{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003124 mImpl->log("start vkResetEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003125 auto stream = mImpl->stream();
3126 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003127 auto resources = mImpl->resources();
3128 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003129 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003130 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003131 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003132 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003133 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003134 countingStream->rewind();
3135 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003136 uint64_t cgen_var_216;
3137 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_216, 1);
3138 countingStream->write((uint64_t*)&cgen_var_216, 1 * 8);
3139 uint64_t cgen_var_217;
3140 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_217, 1);
3141 countingStream->write((uint64_t*)&cgen_var_217, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003142 }
3143 uint32_t packetSize_vkResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3144 countingStream->rewind();
3145 uint32_t opcode_vkResetEvent = OP_vkResetEvent;
3146 stream->write(&opcode_vkResetEvent, sizeof(uint32_t));
3147 stream->write(&packetSize_vkResetEvent, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003148 uint64_t cgen_var_218;
3149 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_218, 1);
3150 stream->write((uint64_t*)&cgen_var_218, 1 * 8);
3151 uint64_t cgen_var_219;
3152 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_219, 1);
3153 stream->write((uint64_t*)&cgen_var_219, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003154 VkResult vkResetEvent_VkResult_return = (VkResult)0;
3155 stream->read(&vkResetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003156 countingStream->clearPool();
3157 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003158 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003159 mImpl->log("finish vkResetEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003160 return vkResetEvent_VkResult_return;
3161}
3162
3163VkResult VkEncoder::vkCreateQueryPool(
3164 VkDevice device,
3165 const VkQueryPoolCreateInfo* pCreateInfo,
3166 const VkAllocationCallbacks* pAllocator,
3167 VkQueryPool* pQueryPool)
3168{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003169 mImpl->log("start vkCreateQueryPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003170 auto stream = mImpl->stream();
3171 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003172 auto resources = mImpl->resources();
3173 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003174 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003175 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003176 VkQueryPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003177 VkAllocationCallbacks* local_pAllocator;
3178 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003179 local_pCreateInfo = nullptr;
3180 if (pCreateInfo)
3181 {
3182 local_pCreateInfo = (VkQueryPoolCreateInfo*)pool->alloc(sizeof(const VkQueryPoolCreateInfo));
3183 deepcopy_VkQueryPoolCreateInfo(pool, pCreateInfo, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
3184 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003185 local_pAllocator = nullptr;
3186 if (pAllocator)
3187 {
3188 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3189 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3190 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003191 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003192 if (local_pCreateInfo)
3193 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003194 transform_tohost_VkQueryPoolCreateInfo(mImpl->resources(), (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003195 }
3196 if (local_pAllocator)
3197 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003198 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003199 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003200 countingStream->rewind();
3201 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003202 uint64_t cgen_var_220;
3203 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_220, 1);
3204 countingStream->write((uint64_t*)&cgen_var_220, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003205 marshal_VkQueryPoolCreateInfo(countingStream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003206 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003207 uint64_t cgen_var_221 = (uint64_t)(uintptr_t)local_pAllocator;
3208 countingStream->putBe64(cgen_var_221);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003209 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003210 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003211 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003212 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003213 uint64_t cgen_var_222;
3214 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_222, 1);
3215 countingStream->write((uint64_t*)&cgen_var_222, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003216 }
3217 uint32_t packetSize_vkCreateQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3218 countingStream->rewind();
3219 uint32_t opcode_vkCreateQueryPool = OP_vkCreateQueryPool;
3220 stream->write(&opcode_vkCreateQueryPool, sizeof(uint32_t));
3221 stream->write(&packetSize_vkCreateQueryPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003222 uint64_t cgen_var_223;
3223 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_223, 1);
3224 stream->write((uint64_t*)&cgen_var_223, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003225 marshal_VkQueryPoolCreateInfo(stream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003226 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003227 uint64_t cgen_var_224 = (uint64_t)(uintptr_t)local_pAllocator;
3228 stream->putBe64(cgen_var_224);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003229 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003230 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003231 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003232 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003233 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003234 uint64_t cgen_var_225;
3235 stream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_225, 1);
3236 stream->write((uint64_t*)&cgen_var_225, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003237 stream->setHandleMapping(resources->unwrapMapping());
3238 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003239 uint64_t cgen_var_226;
3240 stream->read((uint64_t*)&cgen_var_226, 8);
3241 stream->handleMapping()->mapHandles_u64_VkQueryPool(&cgen_var_226, (VkQueryPool*)pQueryPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003242 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003243 VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
3244 stream->read(&vkCreateQueryPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003245 countingStream->clearPool();
3246 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003247 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003248 mImpl->log("finish vkCreateQueryPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003249 return vkCreateQueryPool_VkResult_return;
3250}
3251
3252void VkEncoder::vkDestroyQueryPool(
3253 VkDevice device,
3254 VkQueryPool queryPool,
3255 const VkAllocationCallbacks* pAllocator)
3256{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003257 mImpl->log("start vkDestroyQueryPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003258 auto stream = mImpl->stream();
3259 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003260 auto resources = mImpl->resources();
3261 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003262 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003263 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003264 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003265 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003266 local_device = device;
3267 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003268 local_pAllocator = nullptr;
3269 if (pAllocator)
3270 {
3271 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3272 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3273 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003274 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003275 if (local_pAllocator)
3276 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003277 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003278 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003279 countingStream->rewind();
3280 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003281 uint64_t cgen_var_227;
3282 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_227, 1);
3283 countingStream->write((uint64_t*)&cgen_var_227, 1 * 8);
3284 uint64_t cgen_var_228;
3285 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_228, 1);
3286 countingStream->write((uint64_t*)&cgen_var_228, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003287 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003288 uint64_t cgen_var_229 = (uint64_t)(uintptr_t)local_pAllocator;
3289 countingStream->putBe64(cgen_var_229);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003290 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003291 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003292 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003293 }
3294 }
3295 uint32_t packetSize_vkDestroyQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3296 countingStream->rewind();
3297 uint32_t opcode_vkDestroyQueryPool = OP_vkDestroyQueryPool;
3298 stream->write(&opcode_vkDestroyQueryPool, sizeof(uint32_t));
3299 stream->write(&packetSize_vkDestroyQueryPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003300 uint64_t cgen_var_230;
3301 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_230, 1);
3302 stream->write((uint64_t*)&cgen_var_230, 1 * 8);
3303 uint64_t cgen_var_231;
3304 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_231, 1);
3305 stream->write((uint64_t*)&cgen_var_231, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003306 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003307 uint64_t cgen_var_232 = (uint64_t)(uintptr_t)local_pAllocator;
3308 stream->putBe64(cgen_var_232);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003309 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003310 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003311 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003312 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003313 resources->destroyMapping()->mapHandles_VkQueryPool((VkQueryPool*)&queryPool);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003314 mImpl->log("finish vkDestroyQueryPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003315}
3316
3317VkResult VkEncoder::vkGetQueryPoolResults(
3318 VkDevice device,
3319 VkQueryPool queryPool,
3320 uint32_t firstQuery,
3321 uint32_t queryCount,
3322 size_t dataSize,
3323 void* pData,
3324 VkDeviceSize stride,
3325 VkQueryResultFlags flags)
3326{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003327 mImpl->log("start vkGetQueryPoolResults");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003328 auto stream = mImpl->stream();
3329 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003330 auto resources = mImpl->resources();
3331 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003332 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003333 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003334 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003335 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003336 uint32_t local_queryCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003337 size_t local_dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003338 VkDeviceSize local_stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003339 VkQueryResultFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003340 local_device = device;
3341 local_queryPool = queryPool;
3342 local_firstQuery = firstQuery;
3343 local_queryCount = queryCount;
3344 local_dataSize = dataSize;
3345 local_stride = stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003346 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003347 countingStream->rewind();
3348 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003349 uint64_t cgen_var_233;
3350 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_233, 1);
3351 countingStream->write((uint64_t*)&cgen_var_233, 1 * 8);
3352 uint64_t cgen_var_234;
3353 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_234, 1);
3354 countingStream->write((uint64_t*)&cgen_var_234, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003355 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
3356 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003357 uint64_t cgen_var_235 = (uint64_t)local_dataSize;
3358 countingStream->putBe64(cgen_var_235);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003359 countingStream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003360 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
3361 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003362 }
3363 uint32_t packetSize_vkGetQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3364 countingStream->rewind();
3365 uint32_t opcode_vkGetQueryPoolResults = OP_vkGetQueryPoolResults;
3366 stream->write(&opcode_vkGetQueryPoolResults, sizeof(uint32_t));
3367 stream->write(&packetSize_vkGetQueryPoolResults, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003368 uint64_t cgen_var_236;
3369 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_236, 1);
3370 stream->write((uint64_t*)&cgen_var_236, 1 * 8);
3371 uint64_t cgen_var_237;
3372 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_237, 1);
3373 stream->write((uint64_t*)&cgen_var_237, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003374 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
3375 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003376 uint64_t cgen_var_238 = (uint64_t)local_dataSize;
3377 stream->putBe64(cgen_var_238);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003378 stream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003379 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
3380 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003381 stream->read((void*)pData, ((dataSize)) * sizeof(uint8_t));
3382 VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
3383 stream->read(&vkGetQueryPoolResults_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003384 countingStream->clearPool();
3385 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003386 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003387 mImpl->log("finish vkGetQueryPoolResults");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003388 return vkGetQueryPoolResults_VkResult_return;
3389}
3390
3391VkResult VkEncoder::vkCreateBuffer(
3392 VkDevice device,
3393 const VkBufferCreateInfo* pCreateInfo,
3394 const VkAllocationCallbacks* pAllocator,
3395 VkBuffer* pBuffer)
3396{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003397 mImpl->log("start vkCreateBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003398 auto stream = mImpl->stream();
3399 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003400 auto resources = mImpl->resources();
3401 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003402 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003403 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003404 VkBufferCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003405 VkAllocationCallbacks* local_pAllocator;
3406 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003407 local_pCreateInfo = nullptr;
3408 if (pCreateInfo)
3409 {
3410 local_pCreateInfo = (VkBufferCreateInfo*)pool->alloc(sizeof(const VkBufferCreateInfo));
3411 deepcopy_VkBufferCreateInfo(pool, pCreateInfo, (VkBufferCreateInfo*)(local_pCreateInfo));
3412 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003413 local_pAllocator = nullptr;
3414 if (pAllocator)
3415 {
3416 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3417 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3418 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003419 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003420 if (local_pCreateInfo)
3421 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003422 transform_tohost_VkBufferCreateInfo(mImpl->resources(), (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003423 }
3424 if (local_pAllocator)
3425 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003426 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003427 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003428 countingStream->rewind();
3429 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003430 uint64_t cgen_var_239;
3431 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_239, 1);
3432 countingStream->write((uint64_t*)&cgen_var_239, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003433 marshal_VkBufferCreateInfo(countingStream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003434 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003435 uint64_t cgen_var_240 = (uint64_t)(uintptr_t)local_pAllocator;
3436 countingStream->putBe64(cgen_var_240);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003437 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003438 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003439 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003440 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003441 uint64_t cgen_var_241;
3442 countingStream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_241, 1);
3443 countingStream->write((uint64_t*)&cgen_var_241, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003444 }
3445 uint32_t packetSize_vkCreateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3446 countingStream->rewind();
3447 uint32_t opcode_vkCreateBuffer = OP_vkCreateBuffer;
3448 stream->write(&opcode_vkCreateBuffer, sizeof(uint32_t));
3449 stream->write(&packetSize_vkCreateBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003450 uint64_t cgen_var_242;
3451 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_242, 1);
3452 stream->write((uint64_t*)&cgen_var_242, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003453 marshal_VkBufferCreateInfo(stream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003454 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003455 uint64_t cgen_var_243 = (uint64_t)(uintptr_t)local_pAllocator;
3456 stream->putBe64(cgen_var_243);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003457 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003458 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003459 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003460 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003461 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003462 uint64_t cgen_var_244;
3463 stream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_244, 1);
3464 stream->write((uint64_t*)&cgen_var_244, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003465 stream->setHandleMapping(resources->unwrapMapping());
3466 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003467 uint64_t cgen_var_245;
3468 stream->read((uint64_t*)&cgen_var_245, 8);
3469 stream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_245, (VkBuffer*)pBuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003470 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003471 VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
3472 stream->read(&vkCreateBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003473 countingStream->clearPool();
3474 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003475 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003476 mImpl->log("finish vkCreateBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003477 return vkCreateBuffer_VkResult_return;
3478}
3479
3480void VkEncoder::vkDestroyBuffer(
3481 VkDevice device,
3482 VkBuffer buffer,
3483 const VkAllocationCallbacks* pAllocator)
3484{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003485 mImpl->log("start vkDestroyBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003486 auto stream = mImpl->stream();
3487 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003488 auto resources = mImpl->resources();
3489 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003490 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003491 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003492 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003493 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003494 local_device = device;
3495 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003496 local_pAllocator = nullptr;
3497 if (pAllocator)
3498 {
3499 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3500 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3501 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003502 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003503 if (local_pAllocator)
3504 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003505 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003506 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003507 countingStream->rewind();
3508 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003509 uint64_t cgen_var_246;
3510 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_246, 1);
3511 countingStream->write((uint64_t*)&cgen_var_246, 1 * 8);
3512 uint64_t cgen_var_247;
3513 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_247, 1);
3514 countingStream->write((uint64_t*)&cgen_var_247, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003515 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003516 uint64_t cgen_var_248 = (uint64_t)(uintptr_t)local_pAllocator;
3517 countingStream->putBe64(cgen_var_248);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003518 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003519 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003520 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003521 }
3522 }
3523 uint32_t packetSize_vkDestroyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3524 countingStream->rewind();
3525 uint32_t opcode_vkDestroyBuffer = OP_vkDestroyBuffer;
3526 stream->write(&opcode_vkDestroyBuffer, sizeof(uint32_t));
3527 stream->write(&packetSize_vkDestroyBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003528 uint64_t cgen_var_249;
3529 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_249, 1);
3530 stream->write((uint64_t*)&cgen_var_249, 1 * 8);
3531 uint64_t cgen_var_250;
3532 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_250, 1);
3533 stream->write((uint64_t*)&cgen_var_250, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003534 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003535 uint64_t cgen_var_251 = (uint64_t)(uintptr_t)local_pAllocator;
3536 stream->putBe64(cgen_var_251);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003537 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003538 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003539 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003540 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003541 resources->destroyMapping()->mapHandles_VkBuffer((VkBuffer*)&buffer);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003542 mImpl->log("finish vkDestroyBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003543}
3544
3545VkResult VkEncoder::vkCreateBufferView(
3546 VkDevice device,
3547 const VkBufferViewCreateInfo* pCreateInfo,
3548 const VkAllocationCallbacks* pAllocator,
3549 VkBufferView* pView)
3550{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003551 mImpl->log("start vkCreateBufferView");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003552 auto stream = mImpl->stream();
3553 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003554 auto resources = mImpl->resources();
3555 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003556 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003557 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003558 VkBufferViewCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003559 VkAllocationCallbacks* local_pAllocator;
3560 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003561 local_pCreateInfo = nullptr;
3562 if (pCreateInfo)
3563 {
3564 local_pCreateInfo = (VkBufferViewCreateInfo*)pool->alloc(sizeof(const VkBufferViewCreateInfo));
3565 deepcopy_VkBufferViewCreateInfo(pool, pCreateInfo, (VkBufferViewCreateInfo*)(local_pCreateInfo));
3566 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003567 local_pAllocator = nullptr;
3568 if (pAllocator)
3569 {
3570 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3571 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3572 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003573 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003574 if (local_pCreateInfo)
3575 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003576 transform_tohost_VkBufferViewCreateInfo(mImpl->resources(), (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003577 }
3578 if (local_pAllocator)
3579 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003580 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003581 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003582 countingStream->rewind();
3583 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003584 uint64_t cgen_var_252;
3585 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_252, 1);
3586 countingStream->write((uint64_t*)&cgen_var_252, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003587 marshal_VkBufferViewCreateInfo(countingStream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003588 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003589 uint64_t cgen_var_253 = (uint64_t)(uintptr_t)local_pAllocator;
3590 countingStream->putBe64(cgen_var_253);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003591 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003592 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003593 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003594 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003595 uint64_t cgen_var_254;
3596 countingStream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_254, 1);
3597 countingStream->write((uint64_t*)&cgen_var_254, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003598 }
3599 uint32_t packetSize_vkCreateBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3600 countingStream->rewind();
3601 uint32_t opcode_vkCreateBufferView = OP_vkCreateBufferView;
3602 stream->write(&opcode_vkCreateBufferView, sizeof(uint32_t));
3603 stream->write(&packetSize_vkCreateBufferView, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003604 uint64_t cgen_var_255;
3605 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_255, 1);
3606 stream->write((uint64_t*)&cgen_var_255, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003607 marshal_VkBufferViewCreateInfo(stream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003608 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003609 uint64_t cgen_var_256 = (uint64_t)(uintptr_t)local_pAllocator;
3610 stream->putBe64(cgen_var_256);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003611 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003612 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003613 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003614 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003615 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003616 uint64_t cgen_var_257;
3617 stream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_257, 1);
3618 stream->write((uint64_t*)&cgen_var_257, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003619 stream->setHandleMapping(resources->unwrapMapping());
3620 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003621 uint64_t cgen_var_258;
3622 stream->read((uint64_t*)&cgen_var_258, 8);
3623 stream->handleMapping()->mapHandles_u64_VkBufferView(&cgen_var_258, (VkBufferView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003624 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003625 VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
3626 stream->read(&vkCreateBufferView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003627 countingStream->clearPool();
3628 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003629 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003630 mImpl->log("finish vkCreateBufferView");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003631 return vkCreateBufferView_VkResult_return;
3632}
3633
3634void VkEncoder::vkDestroyBufferView(
3635 VkDevice device,
3636 VkBufferView bufferView,
3637 const VkAllocationCallbacks* pAllocator)
3638{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003639 mImpl->log("start vkDestroyBufferView");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003640 auto stream = mImpl->stream();
3641 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003642 auto resources = mImpl->resources();
3643 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003644 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003645 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003646 VkBufferView local_bufferView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003647 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003648 local_device = device;
3649 local_bufferView = bufferView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003650 local_pAllocator = nullptr;
3651 if (pAllocator)
3652 {
3653 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3654 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3655 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003656 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003657 if (local_pAllocator)
3658 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003659 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003660 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003661 countingStream->rewind();
3662 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003663 uint64_t cgen_var_259;
3664 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_259, 1);
3665 countingStream->write((uint64_t*)&cgen_var_259, 1 * 8);
3666 uint64_t cgen_var_260;
3667 countingStream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_260, 1);
3668 countingStream->write((uint64_t*)&cgen_var_260, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003669 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003670 uint64_t cgen_var_261 = (uint64_t)(uintptr_t)local_pAllocator;
3671 countingStream->putBe64(cgen_var_261);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003672 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003673 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003674 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003675 }
3676 }
3677 uint32_t packetSize_vkDestroyBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3678 countingStream->rewind();
3679 uint32_t opcode_vkDestroyBufferView = OP_vkDestroyBufferView;
3680 stream->write(&opcode_vkDestroyBufferView, sizeof(uint32_t));
3681 stream->write(&packetSize_vkDestroyBufferView, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003682 uint64_t cgen_var_262;
3683 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_262, 1);
3684 stream->write((uint64_t*)&cgen_var_262, 1 * 8);
3685 uint64_t cgen_var_263;
3686 stream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_263, 1);
3687 stream->write((uint64_t*)&cgen_var_263, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003688 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003689 uint64_t cgen_var_264 = (uint64_t)(uintptr_t)local_pAllocator;
3690 stream->putBe64(cgen_var_264);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003691 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003692 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003693 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003694 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003695 resources->destroyMapping()->mapHandles_VkBufferView((VkBufferView*)&bufferView);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003696 mImpl->log("finish vkDestroyBufferView");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003697}
3698
3699VkResult VkEncoder::vkCreateImage(
3700 VkDevice device,
3701 const VkImageCreateInfo* pCreateInfo,
3702 const VkAllocationCallbacks* pAllocator,
3703 VkImage* pImage)
3704{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003705 mImpl->log("start vkCreateImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003706 auto stream = mImpl->stream();
3707 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003708 auto resources = mImpl->resources();
3709 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003710 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003711 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003712 VkImageCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003713 VkAllocationCallbacks* local_pAllocator;
3714 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003715 local_pCreateInfo = nullptr;
3716 if (pCreateInfo)
3717 {
3718 local_pCreateInfo = (VkImageCreateInfo*)pool->alloc(sizeof(const VkImageCreateInfo));
3719 deepcopy_VkImageCreateInfo(pool, pCreateInfo, (VkImageCreateInfo*)(local_pCreateInfo));
3720 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003721 local_pAllocator = nullptr;
3722 if (pAllocator)
3723 {
3724 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3725 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3726 }
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08003727 mImpl->resources()->unwrap_VkNativeBufferANDROID(pCreateInfo, local_pCreateInfo);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003728 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003729 if (local_pCreateInfo)
3730 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003731 transform_tohost_VkImageCreateInfo(mImpl->resources(), (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003732 }
3733 if (local_pAllocator)
3734 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003735 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003736 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003737 countingStream->rewind();
3738 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003739 uint64_t cgen_var_265;
3740 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_265, 1);
3741 countingStream->write((uint64_t*)&cgen_var_265, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003742 marshal_VkImageCreateInfo(countingStream, (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003743 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003744 uint64_t cgen_var_266 = (uint64_t)(uintptr_t)local_pAllocator;
3745 countingStream->putBe64(cgen_var_266);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003746 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003747 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003748 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003749 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003750 uint64_t cgen_var_267;
3751 countingStream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_267, 1);
3752 countingStream->write((uint64_t*)&cgen_var_267, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003753 }
3754 uint32_t packetSize_vkCreateImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3755 countingStream->rewind();
3756 uint32_t opcode_vkCreateImage = OP_vkCreateImage;
3757 stream->write(&opcode_vkCreateImage, sizeof(uint32_t));
3758 stream->write(&packetSize_vkCreateImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003759 uint64_t cgen_var_268;
3760 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_268, 1);
3761 stream->write((uint64_t*)&cgen_var_268, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003762 marshal_VkImageCreateInfo(stream, (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003763 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003764 uint64_t cgen_var_269 = (uint64_t)(uintptr_t)local_pAllocator;
3765 stream->putBe64(cgen_var_269);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003766 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003767 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003768 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003769 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003770 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003771 uint64_t cgen_var_270;
3772 stream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_270, 1);
3773 stream->write((uint64_t*)&cgen_var_270, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003774 stream->setHandleMapping(resources->unwrapMapping());
3775 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003776 uint64_t cgen_var_271;
3777 stream->read((uint64_t*)&cgen_var_271, 8);
3778 stream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_271, (VkImage*)pImage, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003779 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003780 VkResult vkCreateImage_VkResult_return = (VkResult)0;
3781 stream->read(&vkCreateImage_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003782 countingStream->clearPool();
3783 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003784 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003785 mImpl->log("finish vkCreateImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003786 return vkCreateImage_VkResult_return;
3787}
3788
3789void VkEncoder::vkDestroyImage(
3790 VkDevice device,
3791 VkImage image,
3792 const VkAllocationCallbacks* pAllocator)
3793{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003794 mImpl->log("start vkDestroyImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003795 auto stream = mImpl->stream();
3796 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003797 auto resources = mImpl->resources();
3798 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003799 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003800 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003801 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003802 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003803 local_device = device;
3804 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003805 local_pAllocator = nullptr;
3806 if (pAllocator)
3807 {
3808 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3809 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3810 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003811 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003812 if (local_pAllocator)
3813 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003814 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003815 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003816 countingStream->rewind();
3817 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003818 uint64_t cgen_var_272;
3819 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_272, 1);
3820 countingStream->write((uint64_t*)&cgen_var_272, 1 * 8);
3821 uint64_t cgen_var_273;
3822 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_273, 1);
3823 countingStream->write((uint64_t*)&cgen_var_273, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003824 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003825 uint64_t cgen_var_274 = (uint64_t)(uintptr_t)local_pAllocator;
3826 countingStream->putBe64(cgen_var_274);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003827 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003828 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003829 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003830 }
3831 }
3832 uint32_t packetSize_vkDestroyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3833 countingStream->rewind();
3834 uint32_t opcode_vkDestroyImage = OP_vkDestroyImage;
3835 stream->write(&opcode_vkDestroyImage, sizeof(uint32_t));
3836 stream->write(&packetSize_vkDestroyImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003837 uint64_t cgen_var_275;
3838 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_275, 1);
3839 stream->write((uint64_t*)&cgen_var_275, 1 * 8);
3840 uint64_t cgen_var_276;
3841 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_276, 1);
3842 stream->write((uint64_t*)&cgen_var_276, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003843 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003844 uint64_t cgen_var_277 = (uint64_t)(uintptr_t)local_pAllocator;
3845 stream->putBe64(cgen_var_277);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003846 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003847 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003848 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003849 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003850 resources->destroyMapping()->mapHandles_VkImage((VkImage*)&image);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003851 mImpl->log("finish vkDestroyImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003852}
3853
3854void VkEncoder::vkGetImageSubresourceLayout(
3855 VkDevice device,
3856 VkImage image,
3857 const VkImageSubresource* pSubresource,
3858 VkSubresourceLayout* pLayout)
3859{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003860 mImpl->log("start vkGetImageSubresourceLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003861 auto stream = mImpl->stream();
3862 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003863 auto resources = mImpl->resources();
3864 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003865 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003866 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003867 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003868 VkImageSubresource* local_pSubresource;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003869 local_device = device;
3870 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003871 local_pSubresource = nullptr;
3872 if (pSubresource)
3873 {
3874 local_pSubresource = (VkImageSubresource*)pool->alloc(sizeof(const VkImageSubresource));
3875 deepcopy_VkImageSubresource(pool, pSubresource, (VkImageSubresource*)(local_pSubresource));
3876 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08003877 if (local_pSubresource)
3878 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003879 transform_tohost_VkImageSubresource(mImpl->resources(), (VkImageSubresource*)(local_pSubresource));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003880 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003881 countingStream->rewind();
3882 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003883 uint64_t cgen_var_278;
3884 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_278, 1);
3885 countingStream->write((uint64_t*)&cgen_var_278, 1 * 8);
3886 uint64_t cgen_var_279;
3887 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_279, 1);
3888 countingStream->write((uint64_t*)&cgen_var_279, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003889 marshal_VkImageSubresource(countingStream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003890 marshal_VkSubresourceLayout(countingStream, (VkSubresourceLayout*)(pLayout));
3891 }
3892 uint32_t packetSize_vkGetImageSubresourceLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3893 countingStream->rewind();
3894 uint32_t opcode_vkGetImageSubresourceLayout = OP_vkGetImageSubresourceLayout;
3895 stream->write(&opcode_vkGetImageSubresourceLayout, sizeof(uint32_t));
3896 stream->write(&packetSize_vkGetImageSubresourceLayout, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003897 uint64_t cgen_var_280;
3898 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_280, 1);
3899 stream->write((uint64_t*)&cgen_var_280, 1 * 8);
3900 uint64_t cgen_var_281;
3901 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_281, 1);
3902 stream->write((uint64_t*)&cgen_var_281, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003903 marshal_VkImageSubresource(stream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003904 marshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
3905 unmarshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
Lingfeng Yang97a06702018-12-24 17:02:43 -08003906 if (pLayout)
3907 {
3908 transform_fromhost_VkSubresourceLayout(mImpl->resources(), (VkSubresourceLayout*)(pLayout));
3909 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003910 mImpl->log("finish vkGetImageSubresourceLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003911}
3912
3913VkResult VkEncoder::vkCreateImageView(
3914 VkDevice device,
3915 const VkImageViewCreateInfo* pCreateInfo,
3916 const VkAllocationCallbacks* pAllocator,
3917 VkImageView* pView)
3918{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003919 mImpl->log("start vkCreateImageView");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003920 auto stream = mImpl->stream();
3921 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003922 auto resources = mImpl->resources();
3923 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003924 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003925 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003926 VkImageViewCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003927 VkAllocationCallbacks* local_pAllocator;
3928 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003929 local_pCreateInfo = nullptr;
3930 if (pCreateInfo)
3931 {
3932 local_pCreateInfo = (VkImageViewCreateInfo*)pool->alloc(sizeof(const VkImageViewCreateInfo));
3933 deepcopy_VkImageViewCreateInfo(pool, pCreateInfo, (VkImageViewCreateInfo*)(local_pCreateInfo));
3934 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003935 local_pAllocator = nullptr;
3936 if (pAllocator)
3937 {
3938 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3939 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3940 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003941 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003942 if (local_pCreateInfo)
3943 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003944 transform_tohost_VkImageViewCreateInfo(mImpl->resources(), (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003945 }
3946 if (local_pAllocator)
3947 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003948 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003949 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003950 countingStream->rewind();
3951 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003952 uint64_t cgen_var_282;
3953 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_282, 1);
3954 countingStream->write((uint64_t*)&cgen_var_282, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003955 marshal_VkImageViewCreateInfo(countingStream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003956 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003957 uint64_t cgen_var_283 = (uint64_t)(uintptr_t)local_pAllocator;
3958 countingStream->putBe64(cgen_var_283);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003959 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003960 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003961 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003962 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003963 uint64_t cgen_var_284;
3964 countingStream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_284, 1);
3965 countingStream->write((uint64_t*)&cgen_var_284, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003966 }
3967 uint32_t packetSize_vkCreateImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3968 countingStream->rewind();
3969 uint32_t opcode_vkCreateImageView = OP_vkCreateImageView;
3970 stream->write(&opcode_vkCreateImageView, sizeof(uint32_t));
3971 stream->write(&packetSize_vkCreateImageView, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003972 uint64_t cgen_var_285;
3973 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_285, 1);
3974 stream->write((uint64_t*)&cgen_var_285, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003975 marshal_VkImageViewCreateInfo(stream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003976 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003977 uint64_t cgen_var_286 = (uint64_t)(uintptr_t)local_pAllocator;
3978 stream->putBe64(cgen_var_286);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003979 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003980 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003981 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003982 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003983 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003984 uint64_t cgen_var_287;
3985 stream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_287, 1);
3986 stream->write((uint64_t*)&cgen_var_287, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003987 stream->setHandleMapping(resources->unwrapMapping());
3988 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003989 uint64_t cgen_var_288;
3990 stream->read((uint64_t*)&cgen_var_288, 8);
3991 stream->handleMapping()->mapHandles_u64_VkImageView(&cgen_var_288, (VkImageView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003992 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003993 VkResult vkCreateImageView_VkResult_return = (VkResult)0;
3994 stream->read(&vkCreateImageView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003995 countingStream->clearPool();
3996 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003997 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003998 mImpl->log("finish vkCreateImageView");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003999 return vkCreateImageView_VkResult_return;
4000}
4001
4002void VkEncoder::vkDestroyImageView(
4003 VkDevice device,
4004 VkImageView imageView,
4005 const VkAllocationCallbacks* pAllocator)
4006{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004007 mImpl->log("start vkDestroyImageView");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004008 auto stream = mImpl->stream();
4009 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004010 auto resources = mImpl->resources();
4011 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004012 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004013 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004014 VkImageView local_imageView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004015 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004016 local_device = device;
4017 local_imageView = imageView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004018 local_pAllocator = nullptr;
4019 if (pAllocator)
4020 {
4021 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4022 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4023 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004024 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004025 if (local_pAllocator)
4026 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004027 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004028 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004029 countingStream->rewind();
4030 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004031 uint64_t cgen_var_289;
4032 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_289, 1);
4033 countingStream->write((uint64_t*)&cgen_var_289, 1 * 8);
4034 uint64_t cgen_var_290;
4035 countingStream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_290, 1);
4036 countingStream->write((uint64_t*)&cgen_var_290, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004037 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004038 uint64_t cgen_var_291 = (uint64_t)(uintptr_t)local_pAllocator;
4039 countingStream->putBe64(cgen_var_291);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004040 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004041 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004042 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004043 }
4044 }
4045 uint32_t packetSize_vkDestroyImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4046 countingStream->rewind();
4047 uint32_t opcode_vkDestroyImageView = OP_vkDestroyImageView;
4048 stream->write(&opcode_vkDestroyImageView, sizeof(uint32_t));
4049 stream->write(&packetSize_vkDestroyImageView, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004050 uint64_t cgen_var_292;
4051 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_292, 1);
4052 stream->write((uint64_t*)&cgen_var_292, 1 * 8);
4053 uint64_t cgen_var_293;
4054 stream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_293, 1);
4055 stream->write((uint64_t*)&cgen_var_293, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004056 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004057 uint64_t cgen_var_294 = (uint64_t)(uintptr_t)local_pAllocator;
4058 stream->putBe64(cgen_var_294);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004059 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004060 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004061 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004062 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004063 resources->destroyMapping()->mapHandles_VkImageView((VkImageView*)&imageView);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004064 mImpl->log("finish vkDestroyImageView");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004065}
4066
4067VkResult VkEncoder::vkCreateShaderModule(
4068 VkDevice device,
4069 const VkShaderModuleCreateInfo* pCreateInfo,
4070 const VkAllocationCallbacks* pAllocator,
4071 VkShaderModule* pShaderModule)
4072{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004073 mImpl->log("start vkCreateShaderModule");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004074 auto stream = mImpl->stream();
4075 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004076 auto resources = mImpl->resources();
4077 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004078 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004079 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004080 VkShaderModuleCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004081 VkAllocationCallbacks* local_pAllocator;
4082 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004083 local_pCreateInfo = nullptr;
4084 if (pCreateInfo)
4085 {
4086 local_pCreateInfo = (VkShaderModuleCreateInfo*)pool->alloc(sizeof(const VkShaderModuleCreateInfo));
4087 deepcopy_VkShaderModuleCreateInfo(pool, pCreateInfo, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
4088 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004089 local_pAllocator = nullptr;
4090 if (pAllocator)
4091 {
4092 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4093 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4094 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004095 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004096 if (local_pCreateInfo)
4097 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004098 transform_tohost_VkShaderModuleCreateInfo(mImpl->resources(), (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004099 }
4100 if (local_pAllocator)
4101 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004102 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004103 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004104 countingStream->rewind();
4105 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004106 uint64_t cgen_var_295;
4107 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_295, 1);
4108 countingStream->write((uint64_t*)&cgen_var_295, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004109 marshal_VkShaderModuleCreateInfo(countingStream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004110 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004111 uint64_t cgen_var_296 = (uint64_t)(uintptr_t)local_pAllocator;
4112 countingStream->putBe64(cgen_var_296);
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 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004117 uint64_t cgen_var_297;
4118 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_297, 1);
4119 countingStream->write((uint64_t*)&cgen_var_297, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004120 }
4121 uint32_t packetSize_vkCreateShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4122 countingStream->rewind();
4123 uint32_t opcode_vkCreateShaderModule = OP_vkCreateShaderModule;
4124 stream->write(&opcode_vkCreateShaderModule, sizeof(uint32_t));
4125 stream->write(&packetSize_vkCreateShaderModule, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004126 uint64_t cgen_var_298;
4127 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_298, 1);
4128 stream->write((uint64_t*)&cgen_var_298, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004129 marshal_VkShaderModuleCreateInfo(stream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004130 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004131 uint64_t cgen_var_299 = (uint64_t)(uintptr_t)local_pAllocator;
4132 stream->putBe64(cgen_var_299);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004133 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004134 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004135 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004136 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004137 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004138 uint64_t cgen_var_300;
4139 stream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_300, 1);
4140 stream->write((uint64_t*)&cgen_var_300, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004141 stream->setHandleMapping(resources->unwrapMapping());
4142 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004143 uint64_t cgen_var_301;
4144 stream->read((uint64_t*)&cgen_var_301, 8);
4145 stream->handleMapping()->mapHandles_u64_VkShaderModule(&cgen_var_301, (VkShaderModule*)pShaderModule, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004146 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004147 VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
4148 stream->read(&vkCreateShaderModule_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004149 countingStream->clearPool();
4150 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004151 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004152 mImpl->log("finish vkCreateShaderModule");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004153 return vkCreateShaderModule_VkResult_return;
4154}
4155
4156void VkEncoder::vkDestroyShaderModule(
4157 VkDevice device,
4158 VkShaderModule shaderModule,
4159 const VkAllocationCallbacks* pAllocator)
4160{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004161 mImpl->log("start vkDestroyShaderModule");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004162 auto stream = mImpl->stream();
4163 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004164 auto resources = mImpl->resources();
4165 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004166 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004167 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004168 VkShaderModule local_shaderModule;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004169 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004170 local_device = device;
4171 local_shaderModule = shaderModule;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004172 local_pAllocator = nullptr;
4173 if (pAllocator)
4174 {
4175 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4176 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4177 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004178 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004179 if (local_pAllocator)
4180 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004181 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004182 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004183 countingStream->rewind();
4184 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004185 uint64_t cgen_var_302;
4186 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_302, 1);
4187 countingStream->write((uint64_t*)&cgen_var_302, 1 * 8);
4188 uint64_t cgen_var_303;
4189 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_303, 1);
4190 countingStream->write((uint64_t*)&cgen_var_303, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004191 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004192 uint64_t cgen_var_304 = (uint64_t)(uintptr_t)local_pAllocator;
4193 countingStream->putBe64(cgen_var_304);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004194 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004195 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004196 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004197 }
4198 }
4199 uint32_t packetSize_vkDestroyShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4200 countingStream->rewind();
4201 uint32_t opcode_vkDestroyShaderModule = OP_vkDestroyShaderModule;
4202 stream->write(&opcode_vkDestroyShaderModule, sizeof(uint32_t));
4203 stream->write(&packetSize_vkDestroyShaderModule, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004204 uint64_t cgen_var_305;
4205 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_305, 1);
4206 stream->write((uint64_t*)&cgen_var_305, 1 * 8);
4207 uint64_t cgen_var_306;
4208 stream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_306, 1);
4209 stream->write((uint64_t*)&cgen_var_306, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004210 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004211 uint64_t cgen_var_307 = (uint64_t)(uintptr_t)local_pAllocator;
4212 stream->putBe64(cgen_var_307);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004213 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004214 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004215 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004216 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004217 resources->destroyMapping()->mapHandles_VkShaderModule((VkShaderModule*)&shaderModule);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004218 mImpl->log("finish vkDestroyShaderModule");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004219}
4220
4221VkResult VkEncoder::vkCreatePipelineCache(
4222 VkDevice device,
4223 const VkPipelineCacheCreateInfo* pCreateInfo,
4224 const VkAllocationCallbacks* pAllocator,
4225 VkPipelineCache* pPipelineCache)
4226{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004227 mImpl->log("start vkCreatePipelineCache");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004228 auto stream = mImpl->stream();
4229 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004230 auto resources = mImpl->resources();
4231 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004232 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004233 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004234 VkPipelineCacheCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004235 VkAllocationCallbacks* local_pAllocator;
4236 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004237 local_pCreateInfo = nullptr;
4238 if (pCreateInfo)
4239 {
4240 local_pCreateInfo = (VkPipelineCacheCreateInfo*)pool->alloc(sizeof(const VkPipelineCacheCreateInfo));
4241 deepcopy_VkPipelineCacheCreateInfo(pool, pCreateInfo, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
4242 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004243 local_pAllocator = nullptr;
4244 if (pAllocator)
4245 {
4246 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4247 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4248 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004249 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004250 if (local_pCreateInfo)
4251 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004252 transform_tohost_VkPipelineCacheCreateInfo(mImpl->resources(), (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004253 }
4254 if (local_pAllocator)
4255 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004256 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004257 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004258 countingStream->rewind();
4259 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004260 uint64_t cgen_var_308;
4261 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_308, 1);
4262 countingStream->write((uint64_t*)&cgen_var_308, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004263 marshal_VkPipelineCacheCreateInfo(countingStream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004264 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004265 uint64_t cgen_var_309 = (uint64_t)(uintptr_t)local_pAllocator;
4266 countingStream->putBe64(cgen_var_309);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004267 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004268 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004269 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004270 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004271 uint64_t cgen_var_310;
4272 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_310, 1);
4273 countingStream->write((uint64_t*)&cgen_var_310, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004274 }
4275 uint32_t packetSize_vkCreatePipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4276 countingStream->rewind();
4277 uint32_t opcode_vkCreatePipelineCache = OP_vkCreatePipelineCache;
4278 stream->write(&opcode_vkCreatePipelineCache, sizeof(uint32_t));
4279 stream->write(&packetSize_vkCreatePipelineCache, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004280 uint64_t cgen_var_311;
4281 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_311, 1);
4282 stream->write((uint64_t*)&cgen_var_311, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004283 marshal_VkPipelineCacheCreateInfo(stream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004284 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004285 uint64_t cgen_var_312 = (uint64_t)(uintptr_t)local_pAllocator;
4286 stream->putBe64(cgen_var_312);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004287 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004288 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004289 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004290 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004291 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004292 uint64_t cgen_var_313;
4293 stream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_313, 1);
4294 stream->write((uint64_t*)&cgen_var_313, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004295 stream->setHandleMapping(resources->unwrapMapping());
4296 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004297 uint64_t cgen_var_314;
4298 stream->read((uint64_t*)&cgen_var_314, 8);
4299 stream->handleMapping()->mapHandles_u64_VkPipelineCache(&cgen_var_314, (VkPipelineCache*)pPipelineCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004300 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004301 VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
4302 stream->read(&vkCreatePipelineCache_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004303 countingStream->clearPool();
4304 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004305 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004306 mImpl->log("finish vkCreatePipelineCache");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004307 return vkCreatePipelineCache_VkResult_return;
4308}
4309
4310void VkEncoder::vkDestroyPipelineCache(
4311 VkDevice device,
4312 VkPipelineCache pipelineCache,
4313 const VkAllocationCallbacks* pAllocator)
4314{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004315 mImpl->log("start vkDestroyPipelineCache");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004316 auto stream = mImpl->stream();
4317 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004318 auto resources = mImpl->resources();
4319 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004320 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004321 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004322 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004323 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004324 local_device = device;
4325 local_pipelineCache = pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004326 local_pAllocator = nullptr;
4327 if (pAllocator)
4328 {
4329 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4330 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4331 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004332 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004333 if (local_pAllocator)
4334 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004335 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004336 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004337 countingStream->rewind();
4338 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004339 uint64_t cgen_var_315;
4340 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_315, 1);
4341 countingStream->write((uint64_t*)&cgen_var_315, 1 * 8);
4342 uint64_t cgen_var_316;
4343 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_316, 1);
4344 countingStream->write((uint64_t*)&cgen_var_316, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004345 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004346 uint64_t cgen_var_317 = (uint64_t)(uintptr_t)local_pAllocator;
4347 countingStream->putBe64(cgen_var_317);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004348 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004349 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004350 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004351 }
4352 }
4353 uint32_t packetSize_vkDestroyPipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4354 countingStream->rewind();
4355 uint32_t opcode_vkDestroyPipelineCache = OP_vkDestroyPipelineCache;
4356 stream->write(&opcode_vkDestroyPipelineCache, sizeof(uint32_t));
4357 stream->write(&packetSize_vkDestroyPipelineCache, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004358 uint64_t cgen_var_318;
4359 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_318, 1);
4360 stream->write((uint64_t*)&cgen_var_318, 1 * 8);
4361 uint64_t cgen_var_319;
4362 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_319, 1);
4363 stream->write((uint64_t*)&cgen_var_319, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004364 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004365 uint64_t cgen_var_320 = (uint64_t)(uintptr_t)local_pAllocator;
4366 stream->putBe64(cgen_var_320);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004367 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004368 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004369 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004370 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004371 resources->destroyMapping()->mapHandles_VkPipelineCache((VkPipelineCache*)&pipelineCache);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004372 mImpl->log("finish vkDestroyPipelineCache");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004373}
4374
4375VkResult VkEncoder::vkGetPipelineCacheData(
4376 VkDevice device,
4377 VkPipelineCache pipelineCache,
4378 size_t* pDataSize,
4379 void* pData)
4380{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004381 mImpl->log("start vkGetPipelineCacheData");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004382 auto stream = mImpl->stream();
4383 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004384 auto resources = mImpl->resources();
4385 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004386 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004387 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004388 VkPipelineCache local_pipelineCache;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004389 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004390 local_pipelineCache = pipelineCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004391 countingStream->rewind();
4392 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004393 uint64_t cgen_var_321;
4394 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_321, 1);
4395 countingStream->write((uint64_t*)&cgen_var_321, 1 * 8);
4396 uint64_t cgen_var_322;
4397 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_322, 1);
4398 countingStream->write((uint64_t*)&cgen_var_322, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004399 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004400 uint64_t cgen_var_323 = (uint64_t)(uintptr_t)pDataSize;
4401 countingStream->putBe64(cgen_var_323);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004402 if (pDataSize)
4403 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004404 uint64_t cgen_var_324 = (uint64_t)(*pDataSize);
4405 countingStream->putBe64(cgen_var_324);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004406 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004407 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004408 uint64_t cgen_var_325 = (uint64_t)(uintptr_t)pData;
4409 countingStream->putBe64(cgen_var_325);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004410 if (pData)
4411 {
4412 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4413 }
4414 }
4415 uint32_t packetSize_vkGetPipelineCacheData = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4416 countingStream->rewind();
4417 uint32_t opcode_vkGetPipelineCacheData = OP_vkGetPipelineCacheData;
4418 stream->write(&opcode_vkGetPipelineCacheData, sizeof(uint32_t));
4419 stream->write(&packetSize_vkGetPipelineCacheData, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004420 uint64_t cgen_var_326;
4421 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_326, 1);
4422 stream->write((uint64_t*)&cgen_var_326, 1 * 8);
4423 uint64_t cgen_var_327;
4424 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_327, 1);
4425 stream->write((uint64_t*)&cgen_var_327, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004426 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004427 uint64_t cgen_var_328 = (uint64_t)(uintptr_t)pDataSize;
4428 stream->putBe64(cgen_var_328);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004429 if (pDataSize)
4430 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004431 uint64_t cgen_var_329 = (uint64_t)(*pDataSize);
4432 stream->putBe64(cgen_var_329);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004433 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004434 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004435 uint64_t cgen_var_330 = (uint64_t)(uintptr_t)pData;
4436 stream->putBe64(cgen_var_330);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004437 if (pData)
4438 {
4439 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4440 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004441 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004442 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004443 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004444 if (pDataSize)
4445 {
4446 if (!(check_pDataSize))
4447 {
4448 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
4449 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004450 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004451 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004452 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004453 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004454 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004455 if (pData)
4456 {
4457 if (!(check_pData))
4458 {
4459 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
4460 }
4461 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4462 }
4463 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
4464 stream->read(&vkGetPipelineCacheData_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004465 countingStream->clearPool();
4466 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004467 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004468 mImpl->log("finish vkGetPipelineCacheData");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004469 return vkGetPipelineCacheData_VkResult_return;
4470}
4471
4472VkResult VkEncoder::vkMergePipelineCaches(
4473 VkDevice device,
4474 VkPipelineCache dstCache,
4475 uint32_t srcCacheCount,
4476 const VkPipelineCache* pSrcCaches)
4477{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004478 mImpl->log("start vkMergePipelineCaches");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004479 auto stream = mImpl->stream();
4480 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004481 auto resources = mImpl->resources();
4482 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004483 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004484 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004485 VkPipelineCache local_dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004486 uint32_t local_srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004487 VkPipelineCache* local_pSrcCaches;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004488 local_device = device;
4489 local_dstCache = dstCache;
4490 local_srcCacheCount = srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004491 local_pSrcCaches = nullptr;
4492 if (pSrcCaches)
4493 {
4494 local_pSrcCaches = (VkPipelineCache*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache));
4495 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004496 countingStream->rewind();
4497 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004498 uint64_t cgen_var_334;
4499 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_334, 1);
4500 countingStream->write((uint64_t*)&cgen_var_334, 1 * 8);
4501 uint64_t cgen_var_335;
4502 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_335, 1);
4503 countingStream->write((uint64_t*)&cgen_var_335, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004504 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004505 if (((srcCacheCount)))
4506 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004507 uint64_t* cgen_var_336;
4508 countingStream->alloc((void**)&cgen_var_336, ((srcCacheCount)) * 8);
4509 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_336, ((srcCacheCount)));
4510 countingStream->write((uint64_t*)cgen_var_336, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004511 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004512 }
4513 uint32_t packetSize_vkMergePipelineCaches = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4514 countingStream->rewind();
4515 uint32_t opcode_vkMergePipelineCaches = OP_vkMergePipelineCaches;
4516 stream->write(&opcode_vkMergePipelineCaches, sizeof(uint32_t));
4517 stream->write(&packetSize_vkMergePipelineCaches, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004518 uint64_t cgen_var_337;
4519 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_337, 1);
4520 stream->write((uint64_t*)&cgen_var_337, 1 * 8);
4521 uint64_t cgen_var_338;
4522 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_338, 1);
4523 stream->write((uint64_t*)&cgen_var_338, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004524 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004525 if (((srcCacheCount)))
4526 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004527 uint64_t* cgen_var_339;
4528 stream->alloc((void**)&cgen_var_339, ((srcCacheCount)) * 8);
4529 stream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_339, ((srcCacheCount)));
4530 stream->write((uint64_t*)cgen_var_339, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004531 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004532 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
4533 stream->read(&vkMergePipelineCaches_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004534 countingStream->clearPool();
4535 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004536 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004537 mImpl->log("finish vkMergePipelineCaches");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004538 return vkMergePipelineCaches_VkResult_return;
4539}
4540
4541VkResult VkEncoder::vkCreateGraphicsPipelines(
4542 VkDevice device,
4543 VkPipelineCache pipelineCache,
4544 uint32_t createInfoCount,
4545 const VkGraphicsPipelineCreateInfo* pCreateInfos,
4546 const VkAllocationCallbacks* pAllocator,
4547 VkPipeline* pPipelines)
4548{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004549 mImpl->log("start vkCreateGraphicsPipelines");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004550 auto stream = mImpl->stream();
4551 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004552 auto resources = mImpl->resources();
4553 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004554 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004555 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004556 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004557 uint32_t local_createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004558 VkGraphicsPipelineCreateInfo* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004559 VkAllocationCallbacks* local_pAllocator;
4560 local_device = device;
4561 local_pipelineCache = pipelineCache;
4562 local_createInfoCount = createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004563 local_pCreateInfos = nullptr;
4564 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004565 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004566 local_pCreateInfos = (VkGraphicsPipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkGraphicsPipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004567 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4568 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004569 deepcopy_VkGraphicsPipelineCreateInfo(pool, pCreateInfos + i, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004570 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004571 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004572 local_pAllocator = nullptr;
4573 if (pAllocator)
4574 {
4575 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4576 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4577 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004578 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004579 if (local_pCreateInfos)
4580 {
4581 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4582 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004583 transform_tohost_VkGraphicsPipelineCreateInfo(mImpl->resources(), (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004584 }
4585 }
4586 if (local_pAllocator)
4587 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004588 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004589 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004590 countingStream->rewind();
4591 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004592 uint64_t cgen_var_340;
4593 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_340, 1);
4594 countingStream->write((uint64_t*)&cgen_var_340, 1 * 8);
4595 uint64_t cgen_var_341;
4596 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_341, 1);
4597 countingStream->write((uint64_t*)&cgen_var_341, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004598 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4599 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4600 {
4601 marshal_VkGraphicsPipelineCreateInfo(countingStream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
4602 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004603 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004604 uint64_t cgen_var_342 = (uint64_t)(uintptr_t)local_pAllocator;
4605 countingStream->putBe64(cgen_var_342);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004606 if (local_pAllocator)
4607 {
4608 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004609 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004610 if (((createInfoCount)))
4611 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004612 uint64_t* cgen_var_343;
4613 countingStream->alloc((void**)&cgen_var_343, ((createInfoCount)) * 8);
4614 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_343, ((createInfoCount)));
4615 countingStream->write((uint64_t*)cgen_var_343, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004616 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004617 }
4618 uint32_t packetSize_vkCreateGraphicsPipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4619 countingStream->rewind();
4620 uint32_t opcode_vkCreateGraphicsPipelines = OP_vkCreateGraphicsPipelines;
4621 stream->write(&opcode_vkCreateGraphicsPipelines, sizeof(uint32_t));
4622 stream->write(&packetSize_vkCreateGraphicsPipelines, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004623 uint64_t cgen_var_344;
4624 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_344, 1);
4625 stream->write((uint64_t*)&cgen_var_344, 1 * 8);
4626 uint64_t cgen_var_345;
4627 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_345, 1);
4628 stream->write((uint64_t*)&cgen_var_345, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004629 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004630 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4631 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004632 marshal_VkGraphicsPipelineCreateInfo(stream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004633 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004634 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004635 uint64_t cgen_var_346 = (uint64_t)(uintptr_t)local_pAllocator;
4636 stream->putBe64(cgen_var_346);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004637 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004638 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004639 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004640 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004641 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004642 if (((createInfoCount)))
4643 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004644 uint64_t* cgen_var_347;
4645 stream->alloc((void**)&cgen_var_347, ((createInfoCount)) * 8);
4646 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_347, ((createInfoCount)));
4647 stream->write((uint64_t*)cgen_var_347, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004648 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004649 stream->setHandleMapping(resources->unwrapMapping());
4650 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004651 if (((createInfoCount)))
4652 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004653 uint64_t* cgen_var_348;
4654 stream->alloc((void**)&cgen_var_348, ((createInfoCount)) * 8);
4655 stream->read((uint64_t*)cgen_var_348, ((createInfoCount)) * 8);
4656 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_348, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004657 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004658 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004659 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
4660 stream->read(&vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004661 countingStream->clearPool();
4662 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004663 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004664 mImpl->log("finish vkCreateGraphicsPipelines");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004665 return vkCreateGraphicsPipelines_VkResult_return;
4666}
4667
4668VkResult VkEncoder::vkCreateComputePipelines(
4669 VkDevice device,
4670 VkPipelineCache pipelineCache,
4671 uint32_t createInfoCount,
4672 const VkComputePipelineCreateInfo* pCreateInfos,
4673 const VkAllocationCallbacks* pAllocator,
4674 VkPipeline* pPipelines)
4675{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004676 mImpl->log("start vkCreateComputePipelines");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004677 auto stream = mImpl->stream();
4678 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004679 auto resources = mImpl->resources();
4680 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004681 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004682 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004683 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004684 uint32_t local_createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004685 VkComputePipelineCreateInfo* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004686 VkAllocationCallbacks* local_pAllocator;
4687 local_device = device;
4688 local_pipelineCache = pipelineCache;
4689 local_createInfoCount = createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004690 local_pCreateInfos = nullptr;
4691 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004692 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004693 local_pCreateInfos = (VkComputePipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkComputePipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004694 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4695 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004696 deepcopy_VkComputePipelineCreateInfo(pool, pCreateInfos + i, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004697 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004698 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004699 local_pAllocator = nullptr;
4700 if (pAllocator)
4701 {
4702 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4703 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4704 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004705 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004706 if (local_pCreateInfos)
4707 {
4708 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4709 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004710 transform_tohost_VkComputePipelineCreateInfo(mImpl->resources(), (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004711 }
4712 }
4713 if (local_pAllocator)
4714 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004715 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004716 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004717 countingStream->rewind();
4718 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004719 uint64_t cgen_var_349;
4720 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_349, 1);
4721 countingStream->write((uint64_t*)&cgen_var_349, 1 * 8);
4722 uint64_t cgen_var_350;
4723 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_350, 1);
4724 countingStream->write((uint64_t*)&cgen_var_350, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004725 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4726 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4727 {
4728 marshal_VkComputePipelineCreateInfo(countingStream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
4729 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004730 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004731 uint64_t cgen_var_351 = (uint64_t)(uintptr_t)local_pAllocator;
4732 countingStream->putBe64(cgen_var_351);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004733 if (local_pAllocator)
4734 {
4735 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004736 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004737 if (((createInfoCount)))
4738 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004739 uint64_t* cgen_var_352;
4740 countingStream->alloc((void**)&cgen_var_352, ((createInfoCount)) * 8);
4741 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_352, ((createInfoCount)));
4742 countingStream->write((uint64_t*)cgen_var_352, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004743 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004744 }
4745 uint32_t packetSize_vkCreateComputePipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4746 countingStream->rewind();
4747 uint32_t opcode_vkCreateComputePipelines = OP_vkCreateComputePipelines;
4748 stream->write(&opcode_vkCreateComputePipelines, sizeof(uint32_t));
4749 stream->write(&packetSize_vkCreateComputePipelines, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004750 uint64_t cgen_var_353;
4751 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_353, 1);
4752 stream->write((uint64_t*)&cgen_var_353, 1 * 8);
4753 uint64_t cgen_var_354;
4754 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_354, 1);
4755 stream->write((uint64_t*)&cgen_var_354, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004756 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004757 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4758 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004759 marshal_VkComputePipelineCreateInfo(stream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004760 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004761 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004762 uint64_t cgen_var_355 = (uint64_t)(uintptr_t)local_pAllocator;
4763 stream->putBe64(cgen_var_355);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004764 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004765 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004766 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004767 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004768 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004769 if (((createInfoCount)))
4770 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004771 uint64_t* cgen_var_356;
4772 stream->alloc((void**)&cgen_var_356, ((createInfoCount)) * 8);
4773 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_356, ((createInfoCount)));
4774 stream->write((uint64_t*)cgen_var_356, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004775 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004776 stream->setHandleMapping(resources->unwrapMapping());
4777 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004778 if (((createInfoCount)))
4779 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004780 uint64_t* cgen_var_357;
4781 stream->alloc((void**)&cgen_var_357, ((createInfoCount)) * 8);
4782 stream->read((uint64_t*)cgen_var_357, ((createInfoCount)) * 8);
4783 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_357, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004784 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004785 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004786 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
4787 stream->read(&vkCreateComputePipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004788 countingStream->clearPool();
4789 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004790 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004791 mImpl->log("finish vkCreateComputePipelines");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004792 return vkCreateComputePipelines_VkResult_return;
4793}
4794
4795void VkEncoder::vkDestroyPipeline(
4796 VkDevice device,
4797 VkPipeline pipeline,
4798 const VkAllocationCallbacks* pAllocator)
4799{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004800 mImpl->log("start vkDestroyPipeline");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004801 auto stream = mImpl->stream();
4802 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004803 auto resources = mImpl->resources();
4804 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004805 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004806 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004807 VkPipeline local_pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004808 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004809 local_device = device;
4810 local_pipeline = pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004811 local_pAllocator = nullptr;
4812 if (pAllocator)
4813 {
4814 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4815 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4816 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004817 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004818 if (local_pAllocator)
4819 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004820 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004821 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004822 countingStream->rewind();
4823 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004824 uint64_t cgen_var_358;
4825 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_358, 1);
4826 countingStream->write((uint64_t*)&cgen_var_358, 1 * 8);
4827 uint64_t cgen_var_359;
4828 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_359, 1);
4829 countingStream->write((uint64_t*)&cgen_var_359, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004830 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004831 uint64_t cgen_var_360 = (uint64_t)(uintptr_t)local_pAllocator;
4832 countingStream->putBe64(cgen_var_360);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004833 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004834 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004835 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004836 }
4837 }
4838 uint32_t packetSize_vkDestroyPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4839 countingStream->rewind();
4840 uint32_t opcode_vkDestroyPipeline = OP_vkDestroyPipeline;
4841 stream->write(&opcode_vkDestroyPipeline, sizeof(uint32_t));
4842 stream->write(&packetSize_vkDestroyPipeline, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004843 uint64_t cgen_var_361;
4844 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_361, 1);
4845 stream->write((uint64_t*)&cgen_var_361, 1 * 8);
4846 uint64_t cgen_var_362;
4847 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_362, 1);
4848 stream->write((uint64_t*)&cgen_var_362, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004849 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004850 uint64_t cgen_var_363 = (uint64_t)(uintptr_t)local_pAllocator;
4851 stream->putBe64(cgen_var_363);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004852 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004853 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004854 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004855 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004856 resources->destroyMapping()->mapHandles_VkPipeline((VkPipeline*)&pipeline);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004857 mImpl->log("finish vkDestroyPipeline");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004858}
4859
4860VkResult VkEncoder::vkCreatePipelineLayout(
4861 VkDevice device,
4862 const VkPipelineLayoutCreateInfo* pCreateInfo,
4863 const VkAllocationCallbacks* pAllocator,
4864 VkPipelineLayout* pPipelineLayout)
4865{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004866 mImpl->log("start vkCreatePipelineLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004867 auto stream = mImpl->stream();
4868 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004869 auto resources = mImpl->resources();
4870 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004871 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004872 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004873 VkPipelineLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004874 VkAllocationCallbacks* local_pAllocator;
4875 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004876 local_pCreateInfo = nullptr;
4877 if (pCreateInfo)
4878 {
4879 local_pCreateInfo = (VkPipelineLayoutCreateInfo*)pool->alloc(sizeof(const VkPipelineLayoutCreateInfo));
4880 deepcopy_VkPipelineLayoutCreateInfo(pool, pCreateInfo, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
4881 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004882 local_pAllocator = nullptr;
4883 if (pAllocator)
4884 {
4885 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4886 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4887 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004888 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004889 if (local_pCreateInfo)
4890 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004891 transform_tohost_VkPipelineLayoutCreateInfo(mImpl->resources(), (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004892 }
4893 if (local_pAllocator)
4894 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004895 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004896 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004897 countingStream->rewind();
4898 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004899 uint64_t cgen_var_364;
4900 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_364, 1);
4901 countingStream->write((uint64_t*)&cgen_var_364, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004902 marshal_VkPipelineLayoutCreateInfo(countingStream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004903 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004904 uint64_t cgen_var_365 = (uint64_t)(uintptr_t)local_pAllocator;
4905 countingStream->putBe64(cgen_var_365);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004906 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004907 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004908 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004909 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004910 uint64_t cgen_var_366;
4911 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_366, 1);
4912 countingStream->write((uint64_t*)&cgen_var_366, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004913 }
4914 uint32_t packetSize_vkCreatePipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4915 countingStream->rewind();
4916 uint32_t opcode_vkCreatePipelineLayout = OP_vkCreatePipelineLayout;
4917 stream->write(&opcode_vkCreatePipelineLayout, sizeof(uint32_t));
4918 stream->write(&packetSize_vkCreatePipelineLayout, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004919 uint64_t cgen_var_367;
4920 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_367, 1);
4921 stream->write((uint64_t*)&cgen_var_367, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004922 marshal_VkPipelineLayoutCreateInfo(stream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004923 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004924 uint64_t cgen_var_368 = (uint64_t)(uintptr_t)local_pAllocator;
4925 stream->putBe64(cgen_var_368);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004926 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004927 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004928 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004929 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004930 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004931 uint64_t cgen_var_369;
4932 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_369, 1);
4933 stream->write((uint64_t*)&cgen_var_369, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004934 stream->setHandleMapping(resources->unwrapMapping());
4935 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004936 uint64_t cgen_var_370;
4937 stream->read((uint64_t*)&cgen_var_370, 8);
4938 stream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_370, (VkPipelineLayout*)pPipelineLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004939 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004940 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
4941 stream->read(&vkCreatePipelineLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004942 countingStream->clearPool();
4943 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004944 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004945 mImpl->log("finish vkCreatePipelineLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004946 return vkCreatePipelineLayout_VkResult_return;
4947}
4948
4949void VkEncoder::vkDestroyPipelineLayout(
4950 VkDevice device,
4951 VkPipelineLayout pipelineLayout,
4952 const VkAllocationCallbacks* pAllocator)
4953{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004954 mImpl->log("start vkDestroyPipelineLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004955 auto stream = mImpl->stream();
4956 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004957 auto resources = mImpl->resources();
4958 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004959 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004960 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004961 VkPipelineLayout local_pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004962 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004963 local_device = device;
4964 local_pipelineLayout = pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004965 local_pAllocator = nullptr;
4966 if (pAllocator)
4967 {
4968 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4969 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4970 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004971 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004972 if (local_pAllocator)
4973 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004974 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004975 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004976 countingStream->rewind();
4977 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004978 uint64_t cgen_var_371;
4979 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_371, 1);
4980 countingStream->write((uint64_t*)&cgen_var_371, 1 * 8);
4981 uint64_t cgen_var_372;
4982 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_372, 1);
4983 countingStream->write((uint64_t*)&cgen_var_372, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004984 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004985 uint64_t cgen_var_373 = (uint64_t)(uintptr_t)local_pAllocator;
4986 countingStream->putBe64(cgen_var_373);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004987 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004988 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004989 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004990 }
4991 }
4992 uint32_t packetSize_vkDestroyPipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4993 countingStream->rewind();
4994 uint32_t opcode_vkDestroyPipelineLayout = OP_vkDestroyPipelineLayout;
4995 stream->write(&opcode_vkDestroyPipelineLayout, sizeof(uint32_t));
4996 stream->write(&packetSize_vkDestroyPipelineLayout, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004997 uint64_t cgen_var_374;
4998 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_374, 1);
4999 stream->write((uint64_t*)&cgen_var_374, 1 * 8);
5000 uint64_t cgen_var_375;
5001 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_375, 1);
5002 stream->write((uint64_t*)&cgen_var_375, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005003 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005004 uint64_t cgen_var_376 = (uint64_t)(uintptr_t)local_pAllocator;
5005 stream->putBe64(cgen_var_376);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005006 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005007 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005008 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005009 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005010 resources->destroyMapping()->mapHandles_VkPipelineLayout((VkPipelineLayout*)&pipelineLayout);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005011 mImpl->log("finish vkDestroyPipelineLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005012}
5013
5014VkResult VkEncoder::vkCreateSampler(
5015 VkDevice device,
5016 const VkSamplerCreateInfo* pCreateInfo,
5017 const VkAllocationCallbacks* pAllocator,
5018 VkSampler* pSampler)
5019{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005020 mImpl->log("start vkCreateSampler");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005021 auto stream = mImpl->stream();
5022 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005023 auto resources = mImpl->resources();
5024 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005025 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005026 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005027 VkSamplerCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005028 VkAllocationCallbacks* local_pAllocator;
5029 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005030 local_pCreateInfo = nullptr;
5031 if (pCreateInfo)
5032 {
5033 local_pCreateInfo = (VkSamplerCreateInfo*)pool->alloc(sizeof(const VkSamplerCreateInfo));
5034 deepcopy_VkSamplerCreateInfo(pool, pCreateInfo, (VkSamplerCreateInfo*)(local_pCreateInfo));
5035 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005036 local_pAllocator = nullptr;
5037 if (pAllocator)
5038 {
5039 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5040 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5041 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005042 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005043 if (local_pCreateInfo)
5044 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005045 transform_tohost_VkSamplerCreateInfo(mImpl->resources(), (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005046 }
5047 if (local_pAllocator)
5048 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005049 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005050 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005051 countingStream->rewind();
5052 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005053 uint64_t cgen_var_377;
5054 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_377, 1);
5055 countingStream->write((uint64_t*)&cgen_var_377, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005056 marshal_VkSamplerCreateInfo(countingStream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005057 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005058 uint64_t cgen_var_378 = (uint64_t)(uintptr_t)local_pAllocator;
5059 countingStream->putBe64(cgen_var_378);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005060 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005061 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005062 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005063 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005064 uint64_t cgen_var_379;
5065 countingStream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_379, 1);
5066 countingStream->write((uint64_t*)&cgen_var_379, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005067 }
5068 uint32_t packetSize_vkCreateSampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5069 countingStream->rewind();
5070 uint32_t opcode_vkCreateSampler = OP_vkCreateSampler;
5071 stream->write(&opcode_vkCreateSampler, sizeof(uint32_t));
5072 stream->write(&packetSize_vkCreateSampler, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005073 uint64_t cgen_var_380;
5074 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_380, 1);
5075 stream->write((uint64_t*)&cgen_var_380, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005076 marshal_VkSamplerCreateInfo(stream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005077 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005078 uint64_t cgen_var_381 = (uint64_t)(uintptr_t)local_pAllocator;
5079 stream->putBe64(cgen_var_381);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005080 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005081 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005082 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005083 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005084 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005085 uint64_t cgen_var_382;
5086 stream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_382, 1);
5087 stream->write((uint64_t*)&cgen_var_382, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005088 stream->setHandleMapping(resources->unwrapMapping());
5089 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005090 uint64_t cgen_var_383;
5091 stream->read((uint64_t*)&cgen_var_383, 8);
5092 stream->handleMapping()->mapHandles_u64_VkSampler(&cgen_var_383, (VkSampler*)pSampler, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005093 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005094 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
5095 stream->read(&vkCreateSampler_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005096 countingStream->clearPool();
5097 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005098 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005099 mImpl->log("finish vkCreateSampler");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005100 return vkCreateSampler_VkResult_return;
5101}
5102
5103void VkEncoder::vkDestroySampler(
5104 VkDevice device,
5105 VkSampler sampler,
5106 const VkAllocationCallbacks* pAllocator)
5107{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005108 mImpl->log("start vkDestroySampler");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005109 auto stream = mImpl->stream();
5110 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005111 auto resources = mImpl->resources();
5112 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005113 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005114 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005115 VkSampler local_sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005116 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005117 local_device = device;
5118 local_sampler = sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005119 local_pAllocator = nullptr;
5120 if (pAllocator)
5121 {
5122 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5123 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5124 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005125 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005126 if (local_pAllocator)
5127 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005128 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005129 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005130 countingStream->rewind();
5131 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005132 uint64_t cgen_var_384;
5133 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_384, 1);
5134 countingStream->write((uint64_t*)&cgen_var_384, 1 * 8);
5135 uint64_t cgen_var_385;
5136 countingStream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_385, 1);
5137 countingStream->write((uint64_t*)&cgen_var_385, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005138 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005139 uint64_t cgen_var_386 = (uint64_t)(uintptr_t)local_pAllocator;
5140 countingStream->putBe64(cgen_var_386);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005141 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005142 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005143 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005144 }
5145 }
5146 uint32_t packetSize_vkDestroySampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5147 countingStream->rewind();
5148 uint32_t opcode_vkDestroySampler = OP_vkDestroySampler;
5149 stream->write(&opcode_vkDestroySampler, sizeof(uint32_t));
5150 stream->write(&packetSize_vkDestroySampler, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005151 uint64_t cgen_var_387;
5152 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_387, 1);
5153 stream->write((uint64_t*)&cgen_var_387, 1 * 8);
5154 uint64_t cgen_var_388;
5155 stream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_388, 1);
5156 stream->write((uint64_t*)&cgen_var_388, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005157 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005158 uint64_t cgen_var_389 = (uint64_t)(uintptr_t)local_pAllocator;
5159 stream->putBe64(cgen_var_389);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005160 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005161 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005162 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005163 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005164 resources->destroyMapping()->mapHandles_VkSampler((VkSampler*)&sampler);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005165 mImpl->log("finish vkDestroySampler");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005166}
5167
5168VkResult VkEncoder::vkCreateDescriptorSetLayout(
5169 VkDevice device,
5170 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
5171 const VkAllocationCallbacks* pAllocator,
5172 VkDescriptorSetLayout* pSetLayout)
5173{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005174 mImpl->log("start vkCreateDescriptorSetLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005175 auto stream = mImpl->stream();
5176 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005177 auto resources = mImpl->resources();
5178 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005179 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005180 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005181 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005182 VkAllocationCallbacks* local_pAllocator;
5183 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005184 local_pCreateInfo = nullptr;
5185 if (pCreateInfo)
5186 {
5187 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
5188 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
5189 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005190 local_pAllocator = nullptr;
5191 if (pAllocator)
5192 {
5193 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5194 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5195 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005196 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005197 if (local_pCreateInfo)
5198 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005199 transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005200 }
5201 if (local_pAllocator)
5202 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005203 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005204 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005205 countingStream->rewind();
5206 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005207 uint64_t cgen_var_390;
5208 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_390, 1);
5209 countingStream->write((uint64_t*)&cgen_var_390, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005210 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005211 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005212 uint64_t cgen_var_391 = (uint64_t)(uintptr_t)local_pAllocator;
5213 countingStream->putBe64(cgen_var_391);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005214 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005215 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005216 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005217 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005218 uint64_t cgen_var_392;
5219 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_392, 1);
5220 countingStream->write((uint64_t*)&cgen_var_392, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005221 }
5222 uint32_t packetSize_vkCreateDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5223 countingStream->rewind();
5224 uint32_t opcode_vkCreateDescriptorSetLayout = OP_vkCreateDescriptorSetLayout;
5225 stream->write(&opcode_vkCreateDescriptorSetLayout, sizeof(uint32_t));
5226 stream->write(&packetSize_vkCreateDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005227 uint64_t cgen_var_393;
5228 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_393, 1);
5229 stream->write((uint64_t*)&cgen_var_393, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005230 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005231 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005232 uint64_t cgen_var_394 = (uint64_t)(uintptr_t)local_pAllocator;
5233 stream->putBe64(cgen_var_394);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005234 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005235 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005236 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005237 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005238 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005239 uint64_t cgen_var_395;
5240 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_395, 1);
5241 stream->write((uint64_t*)&cgen_var_395, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005242 stream->setHandleMapping(resources->unwrapMapping());
5243 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005244 uint64_t cgen_var_396;
5245 stream->read((uint64_t*)&cgen_var_396, 8);
5246 stream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(&cgen_var_396, (VkDescriptorSetLayout*)pSetLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005247 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005248 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
5249 stream->read(&vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005250 countingStream->clearPool();
5251 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005252 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005253 mImpl->log("finish vkCreateDescriptorSetLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005254 return vkCreateDescriptorSetLayout_VkResult_return;
5255}
5256
5257void VkEncoder::vkDestroyDescriptorSetLayout(
5258 VkDevice device,
5259 VkDescriptorSetLayout descriptorSetLayout,
5260 const VkAllocationCallbacks* pAllocator)
5261{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005262 mImpl->log("start vkDestroyDescriptorSetLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005263 auto stream = mImpl->stream();
5264 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005265 auto resources = mImpl->resources();
5266 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005267 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005268 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005269 VkDescriptorSetLayout local_descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005270 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005271 local_device = device;
5272 local_descriptorSetLayout = descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005273 local_pAllocator = nullptr;
5274 if (pAllocator)
5275 {
5276 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5277 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5278 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005279 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005280 if (local_pAllocator)
5281 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005282 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005283 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005284 countingStream->rewind();
5285 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005286 uint64_t cgen_var_397;
5287 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_397, 1);
5288 countingStream->write((uint64_t*)&cgen_var_397, 1 * 8);
5289 uint64_t cgen_var_398;
5290 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_398, 1);
5291 countingStream->write((uint64_t*)&cgen_var_398, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005292 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005293 uint64_t cgen_var_399 = (uint64_t)(uintptr_t)local_pAllocator;
5294 countingStream->putBe64(cgen_var_399);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005295 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005296 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005297 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005298 }
5299 }
5300 uint32_t packetSize_vkDestroyDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5301 countingStream->rewind();
5302 uint32_t opcode_vkDestroyDescriptorSetLayout = OP_vkDestroyDescriptorSetLayout;
5303 stream->write(&opcode_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
5304 stream->write(&packetSize_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005305 uint64_t cgen_var_400;
5306 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_400, 1);
5307 stream->write((uint64_t*)&cgen_var_400, 1 * 8);
5308 uint64_t cgen_var_401;
5309 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_401, 1);
5310 stream->write((uint64_t*)&cgen_var_401, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005311 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005312 uint64_t cgen_var_402 = (uint64_t)(uintptr_t)local_pAllocator;
5313 stream->putBe64(cgen_var_402);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005314 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005315 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005316 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005317 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005318 resources->destroyMapping()->mapHandles_VkDescriptorSetLayout((VkDescriptorSetLayout*)&descriptorSetLayout);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005319 mImpl->log("finish vkDestroyDescriptorSetLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005320}
5321
5322VkResult VkEncoder::vkCreateDescriptorPool(
5323 VkDevice device,
5324 const VkDescriptorPoolCreateInfo* pCreateInfo,
5325 const VkAllocationCallbacks* pAllocator,
5326 VkDescriptorPool* pDescriptorPool)
5327{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005328 mImpl->log("start vkCreateDescriptorPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005329 auto stream = mImpl->stream();
5330 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005331 auto resources = mImpl->resources();
5332 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005333 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005334 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005335 VkDescriptorPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005336 VkAllocationCallbacks* local_pAllocator;
5337 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005338 local_pCreateInfo = nullptr;
5339 if (pCreateInfo)
5340 {
5341 local_pCreateInfo = (VkDescriptorPoolCreateInfo*)pool->alloc(sizeof(const VkDescriptorPoolCreateInfo));
5342 deepcopy_VkDescriptorPoolCreateInfo(pool, pCreateInfo, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
5343 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005344 local_pAllocator = nullptr;
5345 if (pAllocator)
5346 {
5347 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5348 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5349 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005350 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005351 if (local_pCreateInfo)
5352 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005353 transform_tohost_VkDescriptorPoolCreateInfo(mImpl->resources(), (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005354 }
5355 if (local_pAllocator)
5356 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005357 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005358 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005359 countingStream->rewind();
5360 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005361 uint64_t cgen_var_403;
5362 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_403, 1);
5363 countingStream->write((uint64_t*)&cgen_var_403, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005364 marshal_VkDescriptorPoolCreateInfo(countingStream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005365 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005366 uint64_t cgen_var_404 = (uint64_t)(uintptr_t)local_pAllocator;
5367 countingStream->putBe64(cgen_var_404);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005368 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005369 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005370 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005371 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005372 uint64_t cgen_var_405;
5373 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_405, 1);
5374 countingStream->write((uint64_t*)&cgen_var_405, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005375 }
5376 uint32_t packetSize_vkCreateDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5377 countingStream->rewind();
5378 uint32_t opcode_vkCreateDescriptorPool = OP_vkCreateDescriptorPool;
5379 stream->write(&opcode_vkCreateDescriptorPool, sizeof(uint32_t));
5380 stream->write(&packetSize_vkCreateDescriptorPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005381 uint64_t cgen_var_406;
5382 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_406, 1);
5383 stream->write((uint64_t*)&cgen_var_406, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005384 marshal_VkDescriptorPoolCreateInfo(stream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005385 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005386 uint64_t cgen_var_407 = (uint64_t)(uintptr_t)local_pAllocator;
5387 stream->putBe64(cgen_var_407);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005388 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005389 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005390 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005391 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005392 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005393 uint64_t cgen_var_408;
5394 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_408, 1);
5395 stream->write((uint64_t*)&cgen_var_408, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005396 stream->setHandleMapping(resources->unwrapMapping());
5397 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005398 uint64_t cgen_var_409;
5399 stream->read((uint64_t*)&cgen_var_409, 8);
5400 stream->handleMapping()->mapHandles_u64_VkDescriptorPool(&cgen_var_409, (VkDescriptorPool*)pDescriptorPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005401 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005402 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
5403 stream->read(&vkCreateDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005404 countingStream->clearPool();
5405 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005406 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005407 mImpl->log("finish vkCreateDescriptorPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005408 return vkCreateDescriptorPool_VkResult_return;
5409}
5410
5411void VkEncoder::vkDestroyDescriptorPool(
5412 VkDevice device,
5413 VkDescriptorPool descriptorPool,
5414 const VkAllocationCallbacks* pAllocator)
5415{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005416 mImpl->log("start vkDestroyDescriptorPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005417 auto stream = mImpl->stream();
5418 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005419 auto resources = mImpl->resources();
5420 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005421 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005422 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005423 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005424 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005425 local_device = device;
5426 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005427 local_pAllocator = nullptr;
5428 if (pAllocator)
5429 {
5430 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5431 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5432 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005433 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005434 if (local_pAllocator)
5435 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005436 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005437 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005438 countingStream->rewind();
5439 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005440 uint64_t cgen_var_410;
5441 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_410, 1);
5442 countingStream->write((uint64_t*)&cgen_var_410, 1 * 8);
5443 uint64_t cgen_var_411;
5444 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_411, 1);
5445 countingStream->write((uint64_t*)&cgen_var_411, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005446 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005447 uint64_t cgen_var_412 = (uint64_t)(uintptr_t)local_pAllocator;
5448 countingStream->putBe64(cgen_var_412);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005449 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005450 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005451 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005452 }
5453 }
5454 uint32_t packetSize_vkDestroyDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5455 countingStream->rewind();
5456 uint32_t opcode_vkDestroyDescriptorPool = OP_vkDestroyDescriptorPool;
5457 stream->write(&opcode_vkDestroyDescriptorPool, sizeof(uint32_t));
5458 stream->write(&packetSize_vkDestroyDescriptorPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005459 uint64_t cgen_var_413;
5460 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_413, 1);
5461 stream->write((uint64_t*)&cgen_var_413, 1 * 8);
5462 uint64_t cgen_var_414;
5463 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_414, 1);
5464 stream->write((uint64_t*)&cgen_var_414, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005465 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005466 uint64_t cgen_var_415 = (uint64_t)(uintptr_t)local_pAllocator;
5467 stream->putBe64(cgen_var_415);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005468 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005469 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005470 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005471 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005472 resources->destroyMapping()->mapHandles_VkDescriptorPool((VkDescriptorPool*)&descriptorPool);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005473 mImpl->log("finish vkDestroyDescriptorPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005474}
5475
5476VkResult VkEncoder::vkResetDescriptorPool(
5477 VkDevice device,
5478 VkDescriptorPool descriptorPool,
5479 VkDescriptorPoolResetFlags flags)
5480{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005481 mImpl->log("start vkResetDescriptorPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005482 auto stream = mImpl->stream();
5483 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005484 auto resources = mImpl->resources();
5485 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005486 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005487 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005488 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005489 VkDescriptorPoolResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005490 local_device = device;
5491 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005492 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005493 countingStream->rewind();
5494 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005495 uint64_t cgen_var_416;
5496 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_416, 1);
5497 countingStream->write((uint64_t*)&cgen_var_416, 1 * 8);
5498 uint64_t cgen_var_417;
5499 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_417, 1);
5500 countingStream->write((uint64_t*)&cgen_var_417, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005501 countingStream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005502 }
5503 uint32_t packetSize_vkResetDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5504 countingStream->rewind();
5505 uint32_t opcode_vkResetDescriptorPool = OP_vkResetDescriptorPool;
5506 stream->write(&opcode_vkResetDescriptorPool, sizeof(uint32_t));
5507 stream->write(&packetSize_vkResetDescriptorPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005508 uint64_t cgen_var_418;
5509 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_418, 1);
5510 stream->write((uint64_t*)&cgen_var_418, 1 * 8);
5511 uint64_t cgen_var_419;
5512 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_419, 1);
5513 stream->write((uint64_t*)&cgen_var_419, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005514 stream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005515 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
5516 stream->read(&vkResetDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005517 countingStream->clearPool();
5518 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005519 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005520 mImpl->log("finish vkResetDescriptorPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005521 return vkResetDescriptorPool_VkResult_return;
5522}
5523
5524VkResult VkEncoder::vkAllocateDescriptorSets(
5525 VkDevice device,
5526 const VkDescriptorSetAllocateInfo* pAllocateInfo,
5527 VkDescriptorSet* pDescriptorSets)
5528{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005529 mImpl->log("start vkAllocateDescriptorSets");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005530 auto stream = mImpl->stream();
5531 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005532 auto resources = mImpl->resources();
5533 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005534 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005535 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005536 VkDescriptorSetAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005537 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005538 local_pAllocateInfo = nullptr;
5539 if (pAllocateInfo)
5540 {
5541 local_pAllocateInfo = (VkDescriptorSetAllocateInfo*)pool->alloc(sizeof(const VkDescriptorSetAllocateInfo));
5542 deepcopy_VkDescriptorSetAllocateInfo(pool, pAllocateInfo, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
5543 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08005544 if (local_pAllocateInfo)
5545 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005546 transform_tohost_VkDescriptorSetAllocateInfo(mImpl->resources(), (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005547 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005548 countingStream->rewind();
5549 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005550 uint64_t cgen_var_420;
5551 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_420, 1);
5552 countingStream->write((uint64_t*)&cgen_var_420, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005553 marshal_VkDescriptorSetAllocateInfo(countingStream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005554 if (pAllocateInfo->descriptorSetCount)
5555 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005556 uint64_t* cgen_var_421;
5557 countingStream->alloc((void**)&cgen_var_421, pAllocateInfo->descriptorSetCount * 8);
5558 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_421, pAllocateInfo->descriptorSetCount);
5559 countingStream->write((uint64_t*)cgen_var_421, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005560 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005561 }
5562 uint32_t packetSize_vkAllocateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5563 countingStream->rewind();
5564 uint32_t opcode_vkAllocateDescriptorSets = OP_vkAllocateDescriptorSets;
5565 stream->write(&opcode_vkAllocateDescriptorSets, sizeof(uint32_t));
5566 stream->write(&packetSize_vkAllocateDescriptorSets, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005567 uint64_t cgen_var_422;
5568 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_422, 1);
5569 stream->write((uint64_t*)&cgen_var_422, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005570 marshal_VkDescriptorSetAllocateInfo(stream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08005571 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08005572 if (pAllocateInfo->descriptorSetCount)
5573 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005574 uint64_t* cgen_var_423;
5575 stream->alloc((void**)&cgen_var_423, pAllocateInfo->descriptorSetCount * 8);
5576 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_423, pAllocateInfo->descriptorSetCount);
5577 stream->write((uint64_t*)cgen_var_423, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005578 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005579 stream->setHandleMapping(resources->unwrapMapping());
5580 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08005581 if (pAllocateInfo->descriptorSetCount)
5582 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005583 uint64_t* cgen_var_424;
5584 stream->alloc((void**)&cgen_var_424, pAllocateInfo->descriptorSetCount * 8);
5585 stream->read((uint64_t*)cgen_var_424, pAllocateInfo->descriptorSetCount * 8);
5586 stream->handleMapping()->mapHandles_u64_VkDescriptorSet(cgen_var_424, (VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005587 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005588 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005589 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
5590 stream->read(&vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005591 countingStream->clearPool();
5592 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005593 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005594 mImpl->log("finish vkAllocateDescriptorSets");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005595 return vkAllocateDescriptorSets_VkResult_return;
5596}
5597
5598VkResult VkEncoder::vkFreeDescriptorSets(
5599 VkDevice device,
5600 VkDescriptorPool descriptorPool,
5601 uint32_t descriptorSetCount,
5602 const VkDescriptorSet* pDescriptorSets)
5603{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005604 mImpl->log("start vkFreeDescriptorSets");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005605 auto stream = mImpl->stream();
5606 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005607 auto resources = mImpl->resources();
5608 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005609 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005610 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005611 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005612 uint32_t local_descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005613 VkDescriptorSet* local_pDescriptorSets;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005614 local_device = device;
5615 local_descriptorPool = descriptorPool;
5616 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005617 local_pDescriptorSets = nullptr;
5618 if (pDescriptorSets)
5619 {
5620 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
5621 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005622 countingStream->rewind();
5623 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005624 uint64_t cgen_var_425;
5625 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_425, 1);
5626 countingStream->write((uint64_t*)&cgen_var_425, 1 * 8);
5627 uint64_t cgen_var_426;
5628 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_426, 1);
5629 countingStream->write((uint64_t*)&cgen_var_426, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005630 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005631 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005632 uint64_t cgen_var_427 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5633 countingStream->putBe64(cgen_var_427);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005634 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005635 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005636 if (((descriptorSetCount)))
5637 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005638 uint64_t* cgen_var_428;
5639 countingStream->alloc((void**)&cgen_var_428, ((descriptorSetCount)) * 8);
5640 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_428, ((descriptorSetCount)));
5641 countingStream->write((uint64_t*)cgen_var_428, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005642 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005643 }
5644 }
5645 uint32_t packetSize_vkFreeDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5646 countingStream->rewind();
5647 uint32_t opcode_vkFreeDescriptorSets = OP_vkFreeDescriptorSets;
5648 stream->write(&opcode_vkFreeDescriptorSets, sizeof(uint32_t));
5649 stream->write(&packetSize_vkFreeDescriptorSets, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005650 uint64_t cgen_var_429;
5651 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_429, 1);
5652 stream->write((uint64_t*)&cgen_var_429, 1 * 8);
5653 uint64_t cgen_var_430;
5654 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_430, 1);
5655 stream->write((uint64_t*)&cgen_var_430, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005656 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005657 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005658 uint64_t cgen_var_431 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5659 stream->putBe64(cgen_var_431);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005660 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005661 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005662 if (((descriptorSetCount)))
5663 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005664 uint64_t* cgen_var_432;
5665 stream->alloc((void**)&cgen_var_432, ((descriptorSetCount)) * 8);
5666 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_432, ((descriptorSetCount)));
5667 stream->write((uint64_t*)cgen_var_432, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005668 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005669 }
5670 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
5671 stream->read(&vkFreeDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005672 countingStream->clearPool();
5673 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005674 pool->freeAll();
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08005675 if (pDescriptorSets)
5676 {
5677 resources->destroyMapping()->mapHandles_VkDescriptorSet((VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)));
5678 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005679 mImpl->log("finish vkFreeDescriptorSets");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005680 return vkFreeDescriptorSets_VkResult_return;
5681}
5682
5683void VkEncoder::vkUpdateDescriptorSets(
5684 VkDevice device,
5685 uint32_t descriptorWriteCount,
5686 const VkWriteDescriptorSet* pDescriptorWrites,
5687 uint32_t descriptorCopyCount,
5688 const VkCopyDescriptorSet* pDescriptorCopies)
5689{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005690 mImpl->log("start vkUpdateDescriptorSets");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005691 auto stream = mImpl->stream();
5692 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005693 auto resources = mImpl->resources();
5694 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005695 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005696 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005697 uint32_t local_descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005698 VkWriteDescriptorSet* local_pDescriptorWrites;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005699 uint32_t local_descriptorCopyCount;
5700 VkCopyDescriptorSet* local_pDescriptorCopies;
5701 local_device = device;
5702 local_descriptorWriteCount = descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005703 local_pDescriptorWrites = nullptr;
5704 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005705 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005706 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005707 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5708 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005709 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005710 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005711 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005712 local_descriptorCopyCount = descriptorCopyCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005713 local_pDescriptorCopies = nullptr;
5714 if (pDescriptorCopies)
5715 {
5716 local_pDescriptorCopies = (VkCopyDescriptorSet*)pool->alloc(((descriptorCopyCount)) * sizeof(const VkCopyDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005717 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5718 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005719 deepcopy_VkCopyDescriptorSet(pool, pDescriptorCopies + i, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
5720 }
5721 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08005722 if (local_pDescriptorWrites)
5723 {
5724 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5725 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005726 transform_tohost_VkWriteDescriptorSet(mImpl->resources(), (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005727 }
5728 }
5729 if (local_pDescriptorCopies)
5730 {
5731 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5732 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005733 transform_tohost_VkCopyDescriptorSet(mImpl->resources(), (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005734 }
5735 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005736 countingStream->rewind();
5737 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005738 uint64_t cgen_var_433;
5739 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_433, 1);
5740 countingStream->write((uint64_t*)&cgen_var_433, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005741 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
5742 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5743 {
5744 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
5745 }
5746 countingStream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
5747 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5748 {
5749 marshal_VkCopyDescriptorSet(countingStream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005750 }
5751 }
5752 uint32_t packetSize_vkUpdateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5753 countingStream->rewind();
5754 uint32_t opcode_vkUpdateDescriptorSets = OP_vkUpdateDescriptorSets;
5755 stream->write(&opcode_vkUpdateDescriptorSets, sizeof(uint32_t));
5756 stream->write(&packetSize_vkUpdateDescriptorSets, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005757 uint64_t cgen_var_434;
5758 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_434, 1);
5759 stream->write((uint64_t*)&cgen_var_434, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005760 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005761 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5762 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005763 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005764 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005765 stream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005766 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5767 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005768 marshal_VkCopyDescriptorSet(stream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005769 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005770 mImpl->log("finish vkUpdateDescriptorSets");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005771}
5772
5773VkResult VkEncoder::vkCreateFramebuffer(
5774 VkDevice device,
5775 const VkFramebufferCreateInfo* pCreateInfo,
5776 const VkAllocationCallbacks* pAllocator,
5777 VkFramebuffer* pFramebuffer)
5778{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005779 mImpl->log("start vkCreateFramebuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005780 auto stream = mImpl->stream();
5781 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005782 auto resources = mImpl->resources();
5783 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005784 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005785 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005786 VkFramebufferCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005787 VkAllocationCallbacks* local_pAllocator;
5788 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005789 local_pCreateInfo = nullptr;
5790 if (pCreateInfo)
5791 {
5792 local_pCreateInfo = (VkFramebufferCreateInfo*)pool->alloc(sizeof(const VkFramebufferCreateInfo));
5793 deepcopy_VkFramebufferCreateInfo(pool, pCreateInfo, (VkFramebufferCreateInfo*)(local_pCreateInfo));
5794 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005795 local_pAllocator = nullptr;
5796 if (pAllocator)
5797 {
5798 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5799 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5800 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005801 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005802 if (local_pCreateInfo)
5803 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005804 transform_tohost_VkFramebufferCreateInfo(mImpl->resources(), (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005805 }
5806 if (local_pAllocator)
5807 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005808 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005809 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005810 countingStream->rewind();
5811 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005812 uint64_t cgen_var_435;
5813 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_435, 1);
5814 countingStream->write((uint64_t*)&cgen_var_435, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005815 marshal_VkFramebufferCreateInfo(countingStream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005816 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005817 uint64_t cgen_var_436 = (uint64_t)(uintptr_t)local_pAllocator;
5818 countingStream->putBe64(cgen_var_436);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005819 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005820 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005821 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005822 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005823 uint64_t cgen_var_437;
5824 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_437, 1);
5825 countingStream->write((uint64_t*)&cgen_var_437, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005826 }
5827 uint32_t packetSize_vkCreateFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5828 countingStream->rewind();
5829 uint32_t opcode_vkCreateFramebuffer = OP_vkCreateFramebuffer;
5830 stream->write(&opcode_vkCreateFramebuffer, sizeof(uint32_t));
5831 stream->write(&packetSize_vkCreateFramebuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005832 uint64_t cgen_var_438;
5833 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_438, 1);
5834 stream->write((uint64_t*)&cgen_var_438, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005835 marshal_VkFramebufferCreateInfo(stream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005836 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005837 uint64_t cgen_var_439 = (uint64_t)(uintptr_t)local_pAllocator;
5838 stream->putBe64(cgen_var_439);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005839 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005840 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005841 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005842 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005843 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005844 uint64_t cgen_var_440;
5845 stream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_440, 1);
5846 stream->write((uint64_t*)&cgen_var_440, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005847 stream->setHandleMapping(resources->unwrapMapping());
5848 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005849 uint64_t cgen_var_441;
5850 stream->read((uint64_t*)&cgen_var_441, 8);
5851 stream->handleMapping()->mapHandles_u64_VkFramebuffer(&cgen_var_441, (VkFramebuffer*)pFramebuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005852 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005853 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
5854 stream->read(&vkCreateFramebuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005855 countingStream->clearPool();
5856 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005857 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005858 mImpl->log("finish vkCreateFramebuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005859 return vkCreateFramebuffer_VkResult_return;
5860}
5861
5862void VkEncoder::vkDestroyFramebuffer(
5863 VkDevice device,
5864 VkFramebuffer framebuffer,
5865 const VkAllocationCallbacks* pAllocator)
5866{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005867 mImpl->log("start vkDestroyFramebuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005868 auto stream = mImpl->stream();
5869 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005870 auto resources = mImpl->resources();
5871 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005872 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005873 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005874 VkFramebuffer local_framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005875 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005876 local_device = device;
5877 local_framebuffer = framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005878 local_pAllocator = nullptr;
5879 if (pAllocator)
5880 {
5881 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5882 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5883 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005884 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005885 if (local_pAllocator)
5886 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005887 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005888 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005889 countingStream->rewind();
5890 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005891 uint64_t cgen_var_442;
5892 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_442, 1);
5893 countingStream->write((uint64_t*)&cgen_var_442, 1 * 8);
5894 uint64_t cgen_var_443;
5895 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_443, 1);
5896 countingStream->write((uint64_t*)&cgen_var_443, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005897 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005898 uint64_t cgen_var_444 = (uint64_t)(uintptr_t)local_pAllocator;
5899 countingStream->putBe64(cgen_var_444);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005900 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005901 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005902 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005903 }
5904 }
5905 uint32_t packetSize_vkDestroyFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5906 countingStream->rewind();
5907 uint32_t opcode_vkDestroyFramebuffer = OP_vkDestroyFramebuffer;
5908 stream->write(&opcode_vkDestroyFramebuffer, sizeof(uint32_t));
5909 stream->write(&packetSize_vkDestroyFramebuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005910 uint64_t cgen_var_445;
5911 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_445, 1);
5912 stream->write((uint64_t*)&cgen_var_445, 1 * 8);
5913 uint64_t cgen_var_446;
5914 stream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_446, 1);
5915 stream->write((uint64_t*)&cgen_var_446, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005916 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005917 uint64_t cgen_var_447 = (uint64_t)(uintptr_t)local_pAllocator;
5918 stream->putBe64(cgen_var_447);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005919 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005920 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005921 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005922 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005923 resources->destroyMapping()->mapHandles_VkFramebuffer((VkFramebuffer*)&framebuffer);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005924 mImpl->log("finish vkDestroyFramebuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005925}
5926
5927VkResult VkEncoder::vkCreateRenderPass(
5928 VkDevice device,
5929 const VkRenderPassCreateInfo* pCreateInfo,
5930 const VkAllocationCallbacks* pAllocator,
5931 VkRenderPass* pRenderPass)
5932{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005933 mImpl->log("start vkCreateRenderPass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005934 auto stream = mImpl->stream();
5935 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005936 auto resources = mImpl->resources();
5937 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005938 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005939 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005940 VkRenderPassCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005941 VkAllocationCallbacks* local_pAllocator;
5942 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005943 local_pCreateInfo = nullptr;
5944 if (pCreateInfo)
5945 {
5946 local_pCreateInfo = (VkRenderPassCreateInfo*)pool->alloc(sizeof(const VkRenderPassCreateInfo));
5947 deepcopy_VkRenderPassCreateInfo(pool, pCreateInfo, (VkRenderPassCreateInfo*)(local_pCreateInfo));
5948 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005949 local_pAllocator = nullptr;
5950 if (pAllocator)
5951 {
5952 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5953 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5954 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005955 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005956 if (local_pCreateInfo)
5957 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005958 transform_tohost_VkRenderPassCreateInfo(mImpl->resources(), (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005959 }
5960 if (local_pAllocator)
5961 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005962 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005963 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005964 countingStream->rewind();
5965 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005966 uint64_t cgen_var_448;
5967 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_448, 1);
5968 countingStream->write((uint64_t*)&cgen_var_448, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005969 marshal_VkRenderPassCreateInfo(countingStream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005970 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005971 uint64_t cgen_var_449 = (uint64_t)(uintptr_t)local_pAllocator;
5972 countingStream->putBe64(cgen_var_449);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005973 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005974 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005975 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005976 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005977 uint64_t cgen_var_450;
5978 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_450, 1);
5979 countingStream->write((uint64_t*)&cgen_var_450, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005980 }
5981 uint32_t packetSize_vkCreateRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5982 countingStream->rewind();
5983 uint32_t opcode_vkCreateRenderPass = OP_vkCreateRenderPass;
5984 stream->write(&opcode_vkCreateRenderPass, sizeof(uint32_t));
5985 stream->write(&packetSize_vkCreateRenderPass, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005986 uint64_t cgen_var_451;
5987 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_451, 1);
5988 stream->write((uint64_t*)&cgen_var_451, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005989 marshal_VkRenderPassCreateInfo(stream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005990 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005991 uint64_t cgen_var_452 = (uint64_t)(uintptr_t)local_pAllocator;
5992 stream->putBe64(cgen_var_452);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005993 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005994 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005995 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005996 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005997 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005998 uint64_t cgen_var_453;
5999 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_453, 1);
6000 stream->write((uint64_t*)&cgen_var_453, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006001 stream->setHandleMapping(resources->unwrapMapping());
6002 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006003 uint64_t cgen_var_454;
6004 stream->read((uint64_t*)&cgen_var_454, 8);
6005 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_454, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006006 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006007 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
6008 stream->read(&vkCreateRenderPass_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006009 countingStream->clearPool();
6010 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006011 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006012 mImpl->log("finish vkCreateRenderPass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006013 return vkCreateRenderPass_VkResult_return;
6014}
6015
6016void VkEncoder::vkDestroyRenderPass(
6017 VkDevice device,
6018 VkRenderPass renderPass,
6019 const VkAllocationCallbacks* pAllocator)
6020{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006021 mImpl->log("start vkDestroyRenderPass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006022 auto stream = mImpl->stream();
6023 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006024 auto resources = mImpl->resources();
6025 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006026 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006027 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006028 VkRenderPass local_renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006029 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006030 local_device = device;
6031 local_renderPass = renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006032 local_pAllocator = nullptr;
6033 if (pAllocator)
6034 {
6035 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6036 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6037 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006038 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08006039 if (local_pAllocator)
6040 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006041 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006042 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006043 countingStream->rewind();
6044 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006045 uint64_t cgen_var_455;
6046 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_455, 1);
6047 countingStream->write((uint64_t*)&cgen_var_455, 1 * 8);
6048 uint64_t cgen_var_456;
6049 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_456, 1);
6050 countingStream->write((uint64_t*)&cgen_var_456, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006051 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006052 uint64_t cgen_var_457 = (uint64_t)(uintptr_t)local_pAllocator;
6053 countingStream->putBe64(cgen_var_457);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006054 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006055 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006056 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006057 }
6058 }
6059 uint32_t packetSize_vkDestroyRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6060 countingStream->rewind();
6061 uint32_t opcode_vkDestroyRenderPass = OP_vkDestroyRenderPass;
6062 stream->write(&opcode_vkDestroyRenderPass, sizeof(uint32_t));
6063 stream->write(&packetSize_vkDestroyRenderPass, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006064 uint64_t cgen_var_458;
6065 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_458, 1);
6066 stream->write((uint64_t*)&cgen_var_458, 1 * 8);
6067 uint64_t cgen_var_459;
6068 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_459, 1);
6069 stream->write((uint64_t*)&cgen_var_459, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006070 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006071 uint64_t cgen_var_460 = (uint64_t)(uintptr_t)local_pAllocator;
6072 stream->putBe64(cgen_var_460);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006073 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006074 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006075 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006076 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006077 resources->destroyMapping()->mapHandles_VkRenderPass((VkRenderPass*)&renderPass);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006078 mImpl->log("finish vkDestroyRenderPass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006079}
6080
6081void VkEncoder::vkGetRenderAreaGranularity(
6082 VkDevice device,
6083 VkRenderPass renderPass,
6084 VkExtent2D* pGranularity)
6085{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006086 mImpl->log("start vkGetRenderAreaGranularity");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006087 auto stream = mImpl->stream();
6088 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006089 auto resources = mImpl->resources();
6090 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006091 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006092 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006093 VkRenderPass local_renderPass;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006094 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006095 local_renderPass = renderPass;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006096 countingStream->rewind();
6097 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006098 uint64_t cgen_var_461;
6099 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_461, 1);
6100 countingStream->write((uint64_t*)&cgen_var_461, 1 * 8);
6101 uint64_t cgen_var_462;
6102 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_462, 1);
6103 countingStream->write((uint64_t*)&cgen_var_462, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006104 marshal_VkExtent2D(countingStream, (VkExtent2D*)(pGranularity));
6105 }
6106 uint32_t packetSize_vkGetRenderAreaGranularity = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6107 countingStream->rewind();
6108 uint32_t opcode_vkGetRenderAreaGranularity = OP_vkGetRenderAreaGranularity;
6109 stream->write(&opcode_vkGetRenderAreaGranularity, sizeof(uint32_t));
6110 stream->write(&packetSize_vkGetRenderAreaGranularity, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006111 uint64_t cgen_var_463;
6112 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_463, 1);
6113 stream->write((uint64_t*)&cgen_var_463, 1 * 8);
6114 uint64_t cgen_var_464;
6115 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_464, 1);
6116 stream->write((uint64_t*)&cgen_var_464, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006117 marshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
6118 unmarshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
Lingfeng Yang97a06702018-12-24 17:02:43 -08006119 if (pGranularity)
6120 {
6121 transform_fromhost_VkExtent2D(mImpl->resources(), (VkExtent2D*)(pGranularity));
6122 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006123 mImpl->log("finish vkGetRenderAreaGranularity");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006124}
6125
6126VkResult VkEncoder::vkCreateCommandPool(
6127 VkDevice device,
6128 const VkCommandPoolCreateInfo* pCreateInfo,
6129 const VkAllocationCallbacks* pAllocator,
6130 VkCommandPool* pCommandPool)
6131{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006132 mImpl->log("start vkCreateCommandPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006133 auto stream = mImpl->stream();
6134 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006135 auto resources = mImpl->resources();
6136 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006137 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006138 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006139 VkCommandPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006140 VkAllocationCallbacks* local_pAllocator;
6141 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006142 local_pCreateInfo = nullptr;
6143 if (pCreateInfo)
6144 {
6145 local_pCreateInfo = (VkCommandPoolCreateInfo*)pool->alloc(sizeof(const VkCommandPoolCreateInfo));
6146 deepcopy_VkCommandPoolCreateInfo(pool, pCreateInfo, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
6147 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006148 local_pAllocator = nullptr;
6149 if (pAllocator)
6150 {
6151 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6152 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6153 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006154 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08006155 if (local_pCreateInfo)
6156 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006157 transform_tohost_VkCommandPoolCreateInfo(mImpl->resources(), (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006158 }
6159 if (local_pAllocator)
6160 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006161 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006162 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006163 countingStream->rewind();
6164 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006165 uint64_t cgen_var_465;
6166 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_465, 1);
6167 countingStream->write((uint64_t*)&cgen_var_465, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006168 marshal_VkCommandPoolCreateInfo(countingStream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006169 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006170 uint64_t cgen_var_466 = (uint64_t)(uintptr_t)local_pAllocator;
6171 countingStream->putBe64(cgen_var_466);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006172 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006173 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006174 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006175 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006176 uint64_t cgen_var_467;
6177 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_467, 1);
6178 countingStream->write((uint64_t*)&cgen_var_467, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006179 }
6180 uint32_t packetSize_vkCreateCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6181 countingStream->rewind();
6182 uint32_t opcode_vkCreateCommandPool = OP_vkCreateCommandPool;
6183 stream->write(&opcode_vkCreateCommandPool, sizeof(uint32_t));
6184 stream->write(&packetSize_vkCreateCommandPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006185 uint64_t cgen_var_468;
6186 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_468, 1);
6187 stream->write((uint64_t*)&cgen_var_468, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006188 marshal_VkCommandPoolCreateInfo(stream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006189 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006190 uint64_t cgen_var_469 = (uint64_t)(uintptr_t)local_pAllocator;
6191 stream->putBe64(cgen_var_469);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006192 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006193 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006194 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006195 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006196 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006197 uint64_t cgen_var_470;
6198 stream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_470, 1);
6199 stream->write((uint64_t*)&cgen_var_470, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006200 stream->setHandleMapping(resources->unwrapMapping());
6201 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006202 uint64_t cgen_var_471;
6203 stream->read((uint64_t*)&cgen_var_471, 8);
6204 stream->handleMapping()->mapHandles_u64_VkCommandPool(&cgen_var_471, (VkCommandPool*)pCommandPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006205 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006206 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
6207 stream->read(&vkCreateCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006208 countingStream->clearPool();
6209 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006210 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006211 mImpl->log("finish vkCreateCommandPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006212 return vkCreateCommandPool_VkResult_return;
6213}
6214
6215void VkEncoder::vkDestroyCommandPool(
6216 VkDevice device,
6217 VkCommandPool commandPool,
6218 const VkAllocationCallbacks* pAllocator)
6219{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006220 mImpl->log("start vkDestroyCommandPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006221 auto stream = mImpl->stream();
6222 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006223 auto resources = mImpl->resources();
6224 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006225 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006226 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006227 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006228 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006229 local_device = device;
6230 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006231 local_pAllocator = nullptr;
6232 if (pAllocator)
6233 {
6234 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6235 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6236 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006237 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08006238 if (local_pAllocator)
6239 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006240 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006241 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006242 countingStream->rewind();
6243 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006244 uint64_t cgen_var_472;
6245 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_472, 1);
6246 countingStream->write((uint64_t*)&cgen_var_472, 1 * 8);
6247 uint64_t cgen_var_473;
6248 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_473, 1);
6249 countingStream->write((uint64_t*)&cgen_var_473, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006250 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006251 uint64_t cgen_var_474 = (uint64_t)(uintptr_t)local_pAllocator;
6252 countingStream->putBe64(cgen_var_474);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006253 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006254 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006255 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006256 }
6257 }
6258 uint32_t packetSize_vkDestroyCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6259 countingStream->rewind();
6260 uint32_t opcode_vkDestroyCommandPool = OP_vkDestroyCommandPool;
6261 stream->write(&opcode_vkDestroyCommandPool, sizeof(uint32_t));
6262 stream->write(&packetSize_vkDestroyCommandPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006263 uint64_t cgen_var_475;
6264 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_475, 1);
6265 stream->write((uint64_t*)&cgen_var_475, 1 * 8);
6266 uint64_t cgen_var_476;
6267 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_476, 1);
6268 stream->write((uint64_t*)&cgen_var_476, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006269 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006270 uint64_t cgen_var_477 = (uint64_t)(uintptr_t)local_pAllocator;
6271 stream->putBe64(cgen_var_477);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006272 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006273 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006274 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006275 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006276 resources->destroyMapping()->mapHandles_VkCommandPool((VkCommandPool*)&commandPool);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006277 mImpl->log("finish vkDestroyCommandPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006278}
6279
6280VkResult VkEncoder::vkResetCommandPool(
6281 VkDevice device,
6282 VkCommandPool commandPool,
6283 VkCommandPoolResetFlags flags)
6284{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006285 mImpl->log("start vkResetCommandPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006286 auto stream = mImpl->stream();
6287 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006288 auto resources = mImpl->resources();
6289 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006290 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006291 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006292 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006293 VkCommandPoolResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006294 local_device = device;
6295 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006296 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006297 countingStream->rewind();
6298 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006299 uint64_t cgen_var_478;
6300 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_478, 1);
6301 countingStream->write((uint64_t*)&cgen_var_478, 1 * 8);
6302 uint64_t cgen_var_479;
6303 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_479, 1);
6304 countingStream->write((uint64_t*)&cgen_var_479, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006305 countingStream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006306 }
6307 uint32_t packetSize_vkResetCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6308 countingStream->rewind();
6309 uint32_t opcode_vkResetCommandPool = OP_vkResetCommandPool;
6310 stream->write(&opcode_vkResetCommandPool, sizeof(uint32_t));
6311 stream->write(&packetSize_vkResetCommandPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006312 uint64_t cgen_var_480;
6313 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_480, 1);
6314 stream->write((uint64_t*)&cgen_var_480, 1 * 8);
6315 uint64_t cgen_var_481;
6316 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_481, 1);
6317 stream->write((uint64_t*)&cgen_var_481, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006318 stream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006319 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
6320 stream->read(&vkResetCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006321 countingStream->clearPool();
6322 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006323 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006324 mImpl->log("finish vkResetCommandPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006325 return vkResetCommandPool_VkResult_return;
6326}
6327
6328VkResult VkEncoder::vkAllocateCommandBuffers(
6329 VkDevice device,
6330 const VkCommandBufferAllocateInfo* pAllocateInfo,
6331 VkCommandBuffer* pCommandBuffers)
6332{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006333 mImpl->log("start vkAllocateCommandBuffers");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006334 auto stream = mImpl->stream();
6335 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006336 auto resources = mImpl->resources();
6337 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006338 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006339 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006340 VkCommandBufferAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006341 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006342 local_pAllocateInfo = nullptr;
6343 if (pAllocateInfo)
6344 {
6345 local_pAllocateInfo = (VkCommandBufferAllocateInfo*)pool->alloc(sizeof(const VkCommandBufferAllocateInfo));
6346 deepcopy_VkCommandBufferAllocateInfo(pool, pAllocateInfo, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
6347 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006348 if (local_pAllocateInfo)
6349 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006350 transform_tohost_VkCommandBufferAllocateInfo(mImpl->resources(), (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006351 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006352 countingStream->rewind();
6353 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006354 uint64_t cgen_var_482;
6355 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_482, 1);
6356 countingStream->write((uint64_t*)&cgen_var_482, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006357 marshal_VkCommandBufferAllocateInfo(countingStream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006358 if (pAllocateInfo->commandBufferCount)
6359 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006360 uint64_t* cgen_var_483;
6361 countingStream->alloc((void**)&cgen_var_483, pAllocateInfo->commandBufferCount * 8);
6362 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_483, pAllocateInfo->commandBufferCount);
6363 countingStream->write((uint64_t*)cgen_var_483, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006364 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006365 }
6366 uint32_t packetSize_vkAllocateCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6367 countingStream->rewind();
6368 uint32_t opcode_vkAllocateCommandBuffers = OP_vkAllocateCommandBuffers;
6369 stream->write(&opcode_vkAllocateCommandBuffers, sizeof(uint32_t));
6370 stream->write(&packetSize_vkAllocateCommandBuffers, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006371 uint64_t cgen_var_484;
6372 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_484, 1);
6373 stream->write((uint64_t*)&cgen_var_484, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006374 marshal_VkCommandBufferAllocateInfo(stream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08006375 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08006376 if (pAllocateInfo->commandBufferCount)
6377 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006378 uint64_t* cgen_var_485;
6379 stream->alloc((void**)&cgen_var_485, pAllocateInfo->commandBufferCount * 8);
6380 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_485, pAllocateInfo->commandBufferCount);
6381 stream->write((uint64_t*)cgen_var_485, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006382 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006383 stream->setHandleMapping(resources->unwrapMapping());
6384 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08006385 if (pAllocateInfo->commandBufferCount)
6386 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006387 uint64_t* cgen_var_486;
6388 stream->alloc((void**)&cgen_var_486, pAllocateInfo->commandBufferCount * 8);
6389 stream->read((uint64_t*)cgen_var_486, pAllocateInfo->commandBufferCount * 8);
6390 stream->handleMapping()->mapHandles_u64_VkCommandBuffer(cgen_var_486, (VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006391 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006392 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006393 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
6394 stream->read(&vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006395 countingStream->clearPool();
6396 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006397 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006398 mImpl->log("finish vkAllocateCommandBuffers");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006399 return vkAllocateCommandBuffers_VkResult_return;
6400}
6401
6402void VkEncoder::vkFreeCommandBuffers(
6403 VkDevice device,
6404 VkCommandPool commandPool,
6405 uint32_t commandBufferCount,
6406 const VkCommandBuffer* pCommandBuffers)
6407{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006408 mImpl->log("start vkFreeCommandBuffers");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006409 auto stream = mImpl->stream();
6410 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006411 auto resources = mImpl->resources();
6412 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006413 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006414 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006415 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006416 uint32_t local_commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006417 VkCommandBuffer* local_pCommandBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006418 local_device = device;
6419 local_commandPool = commandPool;
6420 local_commandBufferCount = commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006421 local_pCommandBuffers = nullptr;
6422 if (pCommandBuffers)
6423 {
6424 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
6425 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006426 countingStream->rewind();
6427 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006428 uint64_t cgen_var_487;
6429 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_487, 1);
6430 countingStream->write((uint64_t*)&cgen_var_487, 1 * 8);
6431 uint64_t cgen_var_488;
6432 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_488, 1);
6433 countingStream->write((uint64_t*)&cgen_var_488, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006434 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006435 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006436 uint64_t cgen_var_489 = (uint64_t)(uintptr_t)local_pCommandBuffers;
6437 countingStream->putBe64(cgen_var_489);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006438 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006439 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08006440 if (((commandBufferCount)))
6441 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006442 uint64_t* cgen_var_490;
6443 countingStream->alloc((void**)&cgen_var_490, ((commandBufferCount)) * 8);
6444 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_490, ((commandBufferCount)));
6445 countingStream->write((uint64_t*)cgen_var_490, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006446 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006447 }
6448 }
6449 uint32_t packetSize_vkFreeCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6450 countingStream->rewind();
6451 uint32_t opcode_vkFreeCommandBuffers = OP_vkFreeCommandBuffers;
6452 stream->write(&opcode_vkFreeCommandBuffers, sizeof(uint32_t));
6453 stream->write(&packetSize_vkFreeCommandBuffers, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006454 uint64_t cgen_var_491;
6455 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_491, 1);
6456 stream->write((uint64_t*)&cgen_var_491, 1 * 8);
6457 uint64_t cgen_var_492;
6458 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_492, 1);
6459 stream->write((uint64_t*)&cgen_var_492, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006460 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006461 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006462 uint64_t cgen_var_493 = (uint64_t)(uintptr_t)local_pCommandBuffers;
6463 stream->putBe64(cgen_var_493);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006464 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006465 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08006466 if (((commandBufferCount)))
6467 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006468 uint64_t* cgen_var_494;
6469 stream->alloc((void**)&cgen_var_494, ((commandBufferCount)) * 8);
6470 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_494, ((commandBufferCount)));
6471 stream->write((uint64_t*)cgen_var_494, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006472 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006473 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006474 if (pCommandBuffers)
6475 {
6476 resources->destroyMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)));
6477 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006478 mImpl->log("finish vkFreeCommandBuffers");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006479}
6480
6481VkResult VkEncoder::vkBeginCommandBuffer(
6482 VkCommandBuffer commandBuffer,
6483 const VkCommandBufferBeginInfo* pBeginInfo)
6484{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006485 mImpl->log("start vkBeginCommandBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006486 auto stream = mImpl->stream();
6487 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006488 auto resources = mImpl->resources();
6489 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006490 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006491 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006492 VkCommandBufferBeginInfo* local_pBeginInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006493 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006494 local_pBeginInfo = nullptr;
6495 if (pBeginInfo)
6496 {
6497 local_pBeginInfo = (VkCommandBufferBeginInfo*)pool->alloc(sizeof(const VkCommandBufferBeginInfo));
6498 deepcopy_VkCommandBufferBeginInfo(pool, pBeginInfo, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
6499 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006500 if (local_pBeginInfo)
6501 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006502 transform_tohost_VkCommandBufferBeginInfo(mImpl->resources(), (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006503 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006504 countingStream->rewind();
6505 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006506 uint64_t cgen_var_495;
6507 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_495, 1);
6508 countingStream->write((uint64_t*)&cgen_var_495, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006509 marshal_VkCommandBufferBeginInfo(countingStream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006510 }
6511 uint32_t packetSize_vkBeginCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6512 countingStream->rewind();
6513 uint32_t opcode_vkBeginCommandBuffer = OP_vkBeginCommandBuffer;
6514 stream->write(&opcode_vkBeginCommandBuffer, sizeof(uint32_t));
6515 stream->write(&packetSize_vkBeginCommandBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006516 uint64_t cgen_var_496;
6517 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_496, 1);
6518 stream->write((uint64_t*)&cgen_var_496, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006519 marshal_VkCommandBufferBeginInfo(stream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006520 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
6521 stream->read(&vkBeginCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006522 countingStream->clearPool();
6523 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006524 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006525 mImpl->log("finish vkBeginCommandBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006526 return vkBeginCommandBuffer_VkResult_return;
6527}
6528
6529VkResult VkEncoder::vkEndCommandBuffer(
6530 VkCommandBuffer commandBuffer)
6531{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006532 mImpl->log("start vkEndCommandBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006533 auto stream = mImpl->stream();
6534 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006535 auto resources = mImpl->resources();
6536 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006537 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006538 VkCommandBuffer local_commandBuffer;
6539 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006540 countingStream->rewind();
6541 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006542 uint64_t cgen_var_497;
6543 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_497, 1);
6544 countingStream->write((uint64_t*)&cgen_var_497, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006545 }
6546 uint32_t packetSize_vkEndCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6547 countingStream->rewind();
6548 uint32_t opcode_vkEndCommandBuffer = OP_vkEndCommandBuffer;
6549 stream->write(&opcode_vkEndCommandBuffer, sizeof(uint32_t));
6550 stream->write(&packetSize_vkEndCommandBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006551 uint64_t cgen_var_498;
6552 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_498, 1);
6553 stream->write((uint64_t*)&cgen_var_498, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006554 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
6555 stream->read(&vkEndCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006556 countingStream->clearPool();
6557 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006558 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006559 mImpl->log("finish vkEndCommandBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006560 return vkEndCommandBuffer_VkResult_return;
6561}
6562
6563VkResult VkEncoder::vkResetCommandBuffer(
6564 VkCommandBuffer commandBuffer,
6565 VkCommandBufferResetFlags flags)
6566{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006567 mImpl->log("start vkResetCommandBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006568 auto stream = mImpl->stream();
6569 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006570 auto resources = mImpl->resources();
6571 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006572 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006573 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006574 VkCommandBufferResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006575 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006576 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006577 countingStream->rewind();
6578 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006579 uint64_t cgen_var_499;
6580 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_499, 1);
6581 countingStream->write((uint64_t*)&cgen_var_499, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006582 countingStream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006583 }
6584 uint32_t packetSize_vkResetCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6585 countingStream->rewind();
6586 uint32_t opcode_vkResetCommandBuffer = OP_vkResetCommandBuffer;
6587 stream->write(&opcode_vkResetCommandBuffer, sizeof(uint32_t));
6588 stream->write(&packetSize_vkResetCommandBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006589 uint64_t cgen_var_500;
6590 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_500, 1);
6591 stream->write((uint64_t*)&cgen_var_500, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006592 stream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006593 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
6594 stream->read(&vkResetCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006595 countingStream->clearPool();
6596 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006597 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006598 mImpl->log("finish vkResetCommandBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006599 return vkResetCommandBuffer_VkResult_return;
6600}
6601
6602void VkEncoder::vkCmdBindPipeline(
6603 VkCommandBuffer commandBuffer,
6604 VkPipelineBindPoint pipelineBindPoint,
6605 VkPipeline pipeline)
6606{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006607 mImpl->log("start vkCmdBindPipeline");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006608 auto stream = mImpl->stream();
6609 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006610 auto resources = mImpl->resources();
6611 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006612 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006613 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006614 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006615 VkPipeline local_pipeline;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006616 local_commandBuffer = commandBuffer;
6617 local_pipelineBindPoint = pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006618 local_pipeline = pipeline;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006619 countingStream->rewind();
6620 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006621 uint64_t cgen_var_501;
6622 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_501, 1);
6623 countingStream->write((uint64_t*)&cgen_var_501, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006624 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006625 uint64_t cgen_var_502;
6626 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_502, 1);
6627 countingStream->write((uint64_t*)&cgen_var_502, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006628 }
6629 uint32_t packetSize_vkCmdBindPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6630 countingStream->rewind();
6631 uint32_t opcode_vkCmdBindPipeline = OP_vkCmdBindPipeline;
6632 stream->write(&opcode_vkCmdBindPipeline, sizeof(uint32_t));
6633 stream->write(&packetSize_vkCmdBindPipeline, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006634 uint64_t cgen_var_503;
6635 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_503, 1);
6636 stream->write((uint64_t*)&cgen_var_503, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006637 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006638 uint64_t cgen_var_504;
6639 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_504, 1);
6640 stream->write((uint64_t*)&cgen_var_504, 1 * 8);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006641 mImpl->log("finish vkCmdBindPipeline");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006642}
6643
6644void VkEncoder::vkCmdSetViewport(
6645 VkCommandBuffer commandBuffer,
6646 uint32_t firstViewport,
6647 uint32_t viewportCount,
6648 const VkViewport* pViewports)
6649{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006650 mImpl->log("start vkCmdSetViewport");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006651 auto stream = mImpl->stream();
6652 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006653 auto resources = mImpl->resources();
6654 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006655 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006656 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006657 uint32_t local_firstViewport;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006658 uint32_t local_viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006659 VkViewport* local_pViewports;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006660 local_commandBuffer = commandBuffer;
6661 local_firstViewport = firstViewport;
6662 local_viewportCount = viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006663 local_pViewports = nullptr;
6664 if (pViewports)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006665 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006666 local_pViewports = (VkViewport*)pool->alloc(((viewportCount)) * sizeof(const VkViewport));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006667 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6668 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006669 deepcopy_VkViewport(pool, pViewports + i, (VkViewport*)(local_pViewports + i));
6670 }
6671 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006672 if (local_pViewports)
6673 {
6674 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6675 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006676 transform_tohost_VkViewport(mImpl->resources(), (VkViewport*)(local_pViewports + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006677 }
6678 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006679 countingStream->rewind();
6680 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006681 uint64_t cgen_var_505;
6682 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_505, 1);
6683 countingStream->write((uint64_t*)&cgen_var_505, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006684 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
6685 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
6686 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6687 {
6688 marshal_VkViewport(countingStream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006689 }
6690 }
6691 uint32_t packetSize_vkCmdSetViewport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6692 countingStream->rewind();
6693 uint32_t opcode_vkCmdSetViewport = OP_vkCmdSetViewport;
6694 stream->write(&opcode_vkCmdSetViewport, sizeof(uint32_t));
6695 stream->write(&packetSize_vkCmdSetViewport, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006696 uint64_t cgen_var_506;
6697 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_506, 1);
6698 stream->write((uint64_t*)&cgen_var_506, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006699 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
6700 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006701 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6702 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006703 marshal_VkViewport(stream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006704 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006705 mImpl->log("finish vkCmdSetViewport");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006706}
6707
6708void VkEncoder::vkCmdSetScissor(
6709 VkCommandBuffer commandBuffer,
6710 uint32_t firstScissor,
6711 uint32_t scissorCount,
6712 const VkRect2D* pScissors)
6713{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006714 mImpl->log("start vkCmdSetScissor");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006715 auto stream = mImpl->stream();
6716 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006717 auto resources = mImpl->resources();
6718 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006719 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006720 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006721 uint32_t local_firstScissor;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006722 uint32_t local_scissorCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006723 VkRect2D* local_pScissors;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006724 local_commandBuffer = commandBuffer;
6725 local_firstScissor = firstScissor;
6726 local_scissorCount = scissorCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006727 local_pScissors = nullptr;
6728 if (pScissors)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006729 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006730 local_pScissors = (VkRect2D*)pool->alloc(((scissorCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006731 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6732 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006733 deepcopy_VkRect2D(pool, pScissors + i, (VkRect2D*)(local_pScissors + i));
6734 }
6735 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006736 if (local_pScissors)
6737 {
6738 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6739 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006740 transform_tohost_VkRect2D(mImpl->resources(), (VkRect2D*)(local_pScissors + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006741 }
6742 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006743 countingStream->rewind();
6744 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006745 uint64_t cgen_var_507;
6746 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_507, 1);
6747 countingStream->write((uint64_t*)&cgen_var_507, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006748 countingStream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
6749 countingStream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
6750 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6751 {
6752 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006753 }
6754 }
6755 uint32_t packetSize_vkCmdSetScissor = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6756 countingStream->rewind();
6757 uint32_t opcode_vkCmdSetScissor = OP_vkCmdSetScissor;
6758 stream->write(&opcode_vkCmdSetScissor, sizeof(uint32_t));
6759 stream->write(&packetSize_vkCmdSetScissor, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006760 uint64_t cgen_var_508;
6761 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_508, 1);
6762 stream->write((uint64_t*)&cgen_var_508, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006763 stream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
6764 stream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006765 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6766 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006767 marshal_VkRect2D(stream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006768 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006769 mImpl->log("finish vkCmdSetScissor");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006770}
6771
6772void VkEncoder::vkCmdSetLineWidth(
6773 VkCommandBuffer commandBuffer,
6774 float lineWidth)
6775{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006776 mImpl->log("start vkCmdSetLineWidth");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006777 auto stream = mImpl->stream();
6778 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006779 auto resources = mImpl->resources();
6780 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006781 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006782 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006783 float local_lineWidth;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006784 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006785 local_lineWidth = lineWidth;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006786 countingStream->rewind();
6787 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006788 uint64_t cgen_var_509;
6789 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_509, 1);
6790 countingStream->write((uint64_t*)&cgen_var_509, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006791 countingStream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006792 }
6793 uint32_t packetSize_vkCmdSetLineWidth = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6794 countingStream->rewind();
6795 uint32_t opcode_vkCmdSetLineWidth = OP_vkCmdSetLineWidth;
6796 stream->write(&opcode_vkCmdSetLineWidth, sizeof(uint32_t));
6797 stream->write(&packetSize_vkCmdSetLineWidth, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006798 uint64_t cgen_var_510;
6799 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_510, 1);
6800 stream->write((uint64_t*)&cgen_var_510, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006801 stream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006802 mImpl->log("finish vkCmdSetLineWidth");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006803}
6804
6805void VkEncoder::vkCmdSetDepthBias(
6806 VkCommandBuffer commandBuffer,
6807 float depthBiasConstantFactor,
6808 float depthBiasClamp,
6809 float depthBiasSlopeFactor)
6810{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006811 mImpl->log("start vkCmdSetDepthBias");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006812 auto stream = mImpl->stream();
6813 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006814 auto resources = mImpl->resources();
6815 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006816 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006817 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006818 float local_depthBiasConstantFactor;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006819 float local_depthBiasClamp;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006820 float local_depthBiasSlopeFactor;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006821 local_commandBuffer = commandBuffer;
6822 local_depthBiasConstantFactor = depthBiasConstantFactor;
6823 local_depthBiasClamp = depthBiasClamp;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006824 local_depthBiasSlopeFactor = depthBiasSlopeFactor;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006825 countingStream->rewind();
6826 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006827 uint64_t cgen_var_511;
6828 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_511, 1);
6829 countingStream->write((uint64_t*)&cgen_var_511, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006830 countingStream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
6831 countingStream->write((float*)&local_depthBiasClamp, sizeof(float));
6832 countingStream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006833 }
6834 uint32_t packetSize_vkCmdSetDepthBias = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6835 countingStream->rewind();
6836 uint32_t opcode_vkCmdSetDepthBias = OP_vkCmdSetDepthBias;
6837 stream->write(&opcode_vkCmdSetDepthBias, sizeof(uint32_t));
6838 stream->write(&packetSize_vkCmdSetDepthBias, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006839 uint64_t cgen_var_512;
6840 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_512, 1);
6841 stream->write((uint64_t*)&cgen_var_512, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006842 stream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
6843 stream->write((float*)&local_depthBiasClamp, sizeof(float));
6844 stream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006845 mImpl->log("finish vkCmdSetDepthBias");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006846}
6847
6848void VkEncoder::vkCmdSetBlendConstants(
6849 VkCommandBuffer commandBuffer,
6850 const float blendConstants)
6851{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006852 mImpl->log("start vkCmdSetBlendConstants");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006853 auto stream = mImpl->stream();
6854 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006855 auto resources = mImpl->resources();
6856 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006857 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006858 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006859 float local_blendConstants[4];
Lingfeng Yang9666b852018-11-13 23:09:59 -08006860 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006861 memcpy(&local_blendConstants, &blendConstants, 4 * sizeof(const float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006862 countingStream->rewind();
6863 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006864 uint64_t cgen_var_513;
6865 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_513, 1);
6866 countingStream->write((uint64_t*)&cgen_var_513, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006867 countingStream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006868 }
6869 uint32_t packetSize_vkCmdSetBlendConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6870 countingStream->rewind();
6871 uint32_t opcode_vkCmdSetBlendConstants = OP_vkCmdSetBlendConstants;
6872 stream->write(&opcode_vkCmdSetBlendConstants, sizeof(uint32_t));
6873 stream->write(&packetSize_vkCmdSetBlendConstants, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006874 uint64_t cgen_var_514;
6875 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_514, 1);
6876 stream->write((uint64_t*)&cgen_var_514, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006877 stream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006878 mImpl->log("finish vkCmdSetBlendConstants");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006879}
6880
6881void VkEncoder::vkCmdSetDepthBounds(
6882 VkCommandBuffer commandBuffer,
6883 float minDepthBounds,
6884 float maxDepthBounds)
6885{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006886 mImpl->log("start vkCmdSetDepthBounds");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006887 auto stream = mImpl->stream();
6888 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006889 auto resources = mImpl->resources();
6890 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006891 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006892 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006893 float local_minDepthBounds;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006894 float local_maxDepthBounds;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006895 local_commandBuffer = commandBuffer;
6896 local_minDepthBounds = minDepthBounds;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006897 local_maxDepthBounds = maxDepthBounds;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006898 countingStream->rewind();
6899 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006900 uint64_t cgen_var_515;
6901 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_515, 1);
6902 countingStream->write((uint64_t*)&cgen_var_515, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006903 countingStream->write((float*)&local_minDepthBounds, sizeof(float));
6904 countingStream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006905 }
6906 uint32_t packetSize_vkCmdSetDepthBounds = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6907 countingStream->rewind();
6908 uint32_t opcode_vkCmdSetDepthBounds = OP_vkCmdSetDepthBounds;
6909 stream->write(&opcode_vkCmdSetDepthBounds, sizeof(uint32_t));
6910 stream->write(&packetSize_vkCmdSetDepthBounds, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006911 uint64_t cgen_var_516;
6912 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_516, 1);
6913 stream->write((uint64_t*)&cgen_var_516, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006914 stream->write((float*)&local_minDepthBounds, sizeof(float));
6915 stream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006916 mImpl->log("finish vkCmdSetDepthBounds");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006917}
6918
6919void VkEncoder::vkCmdSetStencilCompareMask(
6920 VkCommandBuffer commandBuffer,
6921 VkStencilFaceFlags faceMask,
6922 uint32_t compareMask)
6923{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006924 mImpl->log("start vkCmdSetStencilCompareMask");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006925 auto stream = mImpl->stream();
6926 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006927 auto resources = mImpl->resources();
6928 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006929 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006930 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006931 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006932 uint32_t local_compareMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006933 local_commandBuffer = commandBuffer;
6934 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006935 local_compareMask = compareMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006936 countingStream->rewind();
6937 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006938 uint64_t cgen_var_517;
6939 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_517, 1);
6940 countingStream->write((uint64_t*)&cgen_var_517, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006941 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6942 countingStream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006943 }
6944 uint32_t packetSize_vkCmdSetStencilCompareMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6945 countingStream->rewind();
6946 uint32_t opcode_vkCmdSetStencilCompareMask = OP_vkCmdSetStencilCompareMask;
6947 stream->write(&opcode_vkCmdSetStencilCompareMask, sizeof(uint32_t));
6948 stream->write(&packetSize_vkCmdSetStencilCompareMask, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006949 uint64_t cgen_var_518;
6950 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_518, 1);
6951 stream->write((uint64_t*)&cgen_var_518, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006952 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6953 stream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006954 mImpl->log("finish vkCmdSetStencilCompareMask");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006955}
6956
6957void VkEncoder::vkCmdSetStencilWriteMask(
6958 VkCommandBuffer commandBuffer,
6959 VkStencilFaceFlags faceMask,
6960 uint32_t writeMask)
6961{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006962 mImpl->log("start vkCmdSetStencilWriteMask");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006963 auto stream = mImpl->stream();
6964 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006965 auto resources = mImpl->resources();
6966 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006967 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006968 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006969 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006970 uint32_t local_writeMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006971 local_commandBuffer = commandBuffer;
6972 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006973 local_writeMask = writeMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006974 countingStream->rewind();
6975 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006976 uint64_t cgen_var_519;
6977 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_519, 1);
6978 countingStream->write((uint64_t*)&cgen_var_519, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006979 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6980 countingStream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006981 }
6982 uint32_t packetSize_vkCmdSetStencilWriteMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6983 countingStream->rewind();
6984 uint32_t opcode_vkCmdSetStencilWriteMask = OP_vkCmdSetStencilWriteMask;
6985 stream->write(&opcode_vkCmdSetStencilWriteMask, sizeof(uint32_t));
6986 stream->write(&packetSize_vkCmdSetStencilWriteMask, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006987 uint64_t cgen_var_520;
6988 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_520, 1);
6989 stream->write((uint64_t*)&cgen_var_520, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006990 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6991 stream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006992 mImpl->log("finish vkCmdSetStencilWriteMask");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006993}
6994
6995void VkEncoder::vkCmdSetStencilReference(
6996 VkCommandBuffer commandBuffer,
6997 VkStencilFaceFlags faceMask,
6998 uint32_t reference)
6999{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007000 mImpl->log("start vkCmdSetStencilReference");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007001 auto stream = mImpl->stream();
7002 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007003 auto resources = mImpl->resources();
7004 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007005 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007006 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007007 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007008 uint32_t local_reference;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007009 local_commandBuffer = commandBuffer;
7010 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007011 local_reference = reference;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007012 countingStream->rewind();
7013 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007014 uint64_t cgen_var_521;
7015 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_521, 1);
7016 countingStream->write((uint64_t*)&cgen_var_521, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007017 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
7018 countingStream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007019 }
7020 uint32_t packetSize_vkCmdSetStencilReference = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7021 countingStream->rewind();
7022 uint32_t opcode_vkCmdSetStencilReference = OP_vkCmdSetStencilReference;
7023 stream->write(&opcode_vkCmdSetStencilReference, sizeof(uint32_t));
7024 stream->write(&packetSize_vkCmdSetStencilReference, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007025 uint64_t cgen_var_522;
7026 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_522, 1);
7027 stream->write((uint64_t*)&cgen_var_522, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007028 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
7029 stream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007030 mImpl->log("finish vkCmdSetStencilReference");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007031}
7032
7033void VkEncoder::vkCmdBindDescriptorSets(
7034 VkCommandBuffer commandBuffer,
7035 VkPipelineBindPoint pipelineBindPoint,
7036 VkPipelineLayout layout,
7037 uint32_t firstSet,
7038 uint32_t descriptorSetCount,
7039 const VkDescriptorSet* pDescriptorSets,
7040 uint32_t dynamicOffsetCount,
7041 const uint32_t* pDynamicOffsets)
7042{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007043 mImpl->log("start vkCmdBindDescriptorSets");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007044 auto stream = mImpl->stream();
7045 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007046 auto resources = mImpl->resources();
7047 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007048 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007049 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007050 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007051 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007052 uint32_t local_firstSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007053 uint32_t local_descriptorSetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007054 VkDescriptorSet* local_pDescriptorSets;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007055 uint32_t local_dynamicOffsetCount;
7056 uint32_t* local_pDynamicOffsets;
7057 local_commandBuffer = commandBuffer;
7058 local_pipelineBindPoint = pipelineBindPoint;
7059 local_layout = layout;
7060 local_firstSet = firstSet;
7061 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007062 local_pDescriptorSets = nullptr;
7063 if (pDescriptorSets)
7064 {
7065 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
7066 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007067 local_dynamicOffsetCount = dynamicOffsetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007068 local_pDynamicOffsets = nullptr;
7069 if (pDynamicOffsets)
7070 {
7071 local_pDynamicOffsets = (uint32_t*)pool->dupArray(pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t));
7072 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007073 countingStream->rewind();
7074 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007075 uint64_t cgen_var_523;
7076 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_523, 1);
7077 countingStream->write((uint64_t*)&cgen_var_523, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007078 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007079 uint64_t cgen_var_524;
7080 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_524, 1);
7081 countingStream->write((uint64_t*)&cgen_var_524, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007082 countingStream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
7083 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007084 if (((descriptorSetCount)))
7085 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007086 uint64_t* cgen_var_525;
7087 countingStream->alloc((void**)&cgen_var_525, ((descriptorSetCount)) * 8);
7088 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_525, ((descriptorSetCount)));
7089 countingStream->write((uint64_t*)cgen_var_525, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007090 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007091 countingStream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
7092 countingStream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007093 }
7094 uint32_t packetSize_vkCmdBindDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7095 countingStream->rewind();
7096 uint32_t opcode_vkCmdBindDescriptorSets = OP_vkCmdBindDescriptorSets;
7097 stream->write(&opcode_vkCmdBindDescriptorSets, sizeof(uint32_t));
7098 stream->write(&packetSize_vkCmdBindDescriptorSets, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007099 uint64_t cgen_var_526;
7100 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_526, 1);
7101 stream->write((uint64_t*)&cgen_var_526, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007102 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007103 uint64_t cgen_var_527;
7104 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_527, 1);
7105 stream->write((uint64_t*)&cgen_var_527, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007106 stream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
7107 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007108 if (((descriptorSetCount)))
7109 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007110 uint64_t* cgen_var_528;
7111 stream->alloc((void**)&cgen_var_528, ((descriptorSetCount)) * 8);
7112 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_528, ((descriptorSetCount)));
7113 stream->write((uint64_t*)cgen_var_528, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007114 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007115 stream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
7116 stream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007117 mImpl->log("finish vkCmdBindDescriptorSets");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007118}
7119
7120void VkEncoder::vkCmdBindIndexBuffer(
7121 VkCommandBuffer commandBuffer,
7122 VkBuffer buffer,
7123 VkDeviceSize offset,
7124 VkIndexType indexType)
7125{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007126 mImpl->log("start vkCmdBindIndexBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007127 auto stream = mImpl->stream();
7128 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007129 auto resources = mImpl->resources();
7130 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007131 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007132 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007133 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007134 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007135 VkIndexType local_indexType;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007136 local_commandBuffer = commandBuffer;
7137 local_buffer = buffer;
7138 local_offset = offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007139 local_indexType = indexType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007140 countingStream->rewind();
7141 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007142 uint64_t cgen_var_529;
7143 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_529, 1);
7144 countingStream->write((uint64_t*)&cgen_var_529, 1 * 8);
7145 uint64_t cgen_var_530;
7146 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_530, 1);
7147 countingStream->write((uint64_t*)&cgen_var_530, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007148 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7149 countingStream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007150 }
7151 uint32_t packetSize_vkCmdBindIndexBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7152 countingStream->rewind();
7153 uint32_t opcode_vkCmdBindIndexBuffer = OP_vkCmdBindIndexBuffer;
7154 stream->write(&opcode_vkCmdBindIndexBuffer, sizeof(uint32_t));
7155 stream->write(&packetSize_vkCmdBindIndexBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007156 uint64_t cgen_var_531;
7157 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_531, 1);
7158 stream->write((uint64_t*)&cgen_var_531, 1 * 8);
7159 uint64_t cgen_var_532;
7160 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_532, 1);
7161 stream->write((uint64_t*)&cgen_var_532, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007162 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7163 stream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007164 mImpl->log("finish vkCmdBindIndexBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007165}
7166
7167void VkEncoder::vkCmdBindVertexBuffers(
7168 VkCommandBuffer commandBuffer,
7169 uint32_t firstBinding,
7170 uint32_t bindingCount,
7171 const VkBuffer* pBuffers,
7172 const VkDeviceSize* pOffsets)
7173{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007174 mImpl->log("start vkCmdBindVertexBuffers");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007175 auto stream = mImpl->stream();
7176 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007177 auto resources = mImpl->resources();
7178 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007179 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007180 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007181 uint32_t local_firstBinding;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007182 uint32_t local_bindingCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007183 VkBuffer* local_pBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007184 VkDeviceSize* local_pOffsets;
7185 local_commandBuffer = commandBuffer;
7186 local_firstBinding = firstBinding;
7187 local_bindingCount = bindingCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007188 local_pBuffers = nullptr;
7189 if (pBuffers)
7190 {
7191 local_pBuffers = (VkBuffer*)pool->dupArray(pBuffers, ((bindingCount)) * sizeof(const VkBuffer));
7192 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007193 local_pOffsets = nullptr;
7194 if (pOffsets)
7195 {
7196 local_pOffsets = (VkDeviceSize*)pool->dupArray(pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize));
7197 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007198 countingStream->rewind();
7199 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007200 uint64_t cgen_var_533;
7201 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_533, 1);
7202 countingStream->write((uint64_t*)&cgen_var_533, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007203 countingStream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
7204 countingStream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007205 if (((bindingCount)))
7206 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007207 uint64_t* cgen_var_534;
7208 countingStream->alloc((void**)&cgen_var_534, ((bindingCount)) * 8);
7209 countingStream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_534, ((bindingCount)));
7210 countingStream->write((uint64_t*)cgen_var_534, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007211 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007212 countingStream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007213 }
7214 uint32_t packetSize_vkCmdBindVertexBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7215 countingStream->rewind();
7216 uint32_t opcode_vkCmdBindVertexBuffers = OP_vkCmdBindVertexBuffers;
7217 stream->write(&opcode_vkCmdBindVertexBuffers, sizeof(uint32_t));
7218 stream->write(&packetSize_vkCmdBindVertexBuffers, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007219 uint64_t cgen_var_535;
7220 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_535, 1);
7221 stream->write((uint64_t*)&cgen_var_535, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007222 stream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
7223 stream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007224 if (((bindingCount)))
7225 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007226 uint64_t* cgen_var_536;
7227 stream->alloc((void**)&cgen_var_536, ((bindingCount)) * 8);
7228 stream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_536, ((bindingCount)));
7229 stream->write((uint64_t*)cgen_var_536, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007230 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007231 stream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007232 mImpl->log("finish vkCmdBindVertexBuffers");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007233}
7234
7235void VkEncoder::vkCmdDraw(
7236 VkCommandBuffer commandBuffer,
7237 uint32_t vertexCount,
7238 uint32_t instanceCount,
7239 uint32_t firstVertex,
7240 uint32_t firstInstance)
7241{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007242 mImpl->log("start vkCmdDraw");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007243 auto stream = mImpl->stream();
7244 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007245 auto resources = mImpl->resources();
7246 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007247 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007248 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007249 uint32_t local_vertexCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007250 uint32_t local_instanceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007251 uint32_t local_firstVertex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007252 uint32_t local_firstInstance;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007253 local_commandBuffer = commandBuffer;
7254 local_vertexCount = vertexCount;
7255 local_instanceCount = instanceCount;
7256 local_firstVertex = firstVertex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007257 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007258 countingStream->rewind();
7259 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007260 uint64_t cgen_var_537;
7261 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_537, 1);
7262 countingStream->write((uint64_t*)&cgen_var_537, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007263 countingStream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
7264 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7265 countingStream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
7266 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007267 }
7268 uint32_t packetSize_vkCmdDraw = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7269 countingStream->rewind();
7270 uint32_t opcode_vkCmdDraw = OP_vkCmdDraw;
7271 stream->write(&opcode_vkCmdDraw, sizeof(uint32_t));
7272 stream->write(&packetSize_vkCmdDraw, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007273 uint64_t cgen_var_538;
7274 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_538, 1);
7275 stream->write((uint64_t*)&cgen_var_538, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007276 stream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
7277 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7278 stream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
7279 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007280 mImpl->log("finish vkCmdDraw");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007281}
7282
7283void VkEncoder::vkCmdDrawIndexed(
7284 VkCommandBuffer commandBuffer,
7285 uint32_t indexCount,
7286 uint32_t instanceCount,
7287 uint32_t firstIndex,
7288 int32_t vertexOffset,
7289 uint32_t firstInstance)
7290{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007291 mImpl->log("start vkCmdDrawIndexed");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007292 auto stream = mImpl->stream();
7293 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007294 auto resources = mImpl->resources();
7295 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007296 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007297 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007298 uint32_t local_indexCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007299 uint32_t local_instanceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007300 uint32_t local_firstIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007301 int32_t local_vertexOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007302 uint32_t local_firstInstance;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007303 local_commandBuffer = commandBuffer;
7304 local_indexCount = indexCount;
7305 local_instanceCount = instanceCount;
7306 local_firstIndex = firstIndex;
7307 local_vertexOffset = vertexOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007308 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007309 countingStream->rewind();
7310 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007311 uint64_t cgen_var_539;
7312 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_539, 1);
7313 countingStream->write((uint64_t*)&cgen_var_539, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007314 countingStream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
7315 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7316 countingStream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
7317 countingStream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
7318 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007319 }
7320 uint32_t packetSize_vkCmdDrawIndexed = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7321 countingStream->rewind();
7322 uint32_t opcode_vkCmdDrawIndexed = OP_vkCmdDrawIndexed;
7323 stream->write(&opcode_vkCmdDrawIndexed, sizeof(uint32_t));
7324 stream->write(&packetSize_vkCmdDrawIndexed, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007325 uint64_t cgen_var_540;
7326 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_540, 1);
7327 stream->write((uint64_t*)&cgen_var_540, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007328 stream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
7329 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7330 stream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
7331 stream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
7332 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007333 mImpl->log("finish vkCmdDrawIndexed");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007334}
7335
7336void VkEncoder::vkCmdDrawIndirect(
7337 VkCommandBuffer commandBuffer,
7338 VkBuffer buffer,
7339 VkDeviceSize offset,
7340 uint32_t drawCount,
7341 uint32_t stride)
7342{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007343 mImpl->log("start vkCmdDrawIndirect");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007344 auto stream = mImpl->stream();
7345 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007346 auto resources = mImpl->resources();
7347 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007348 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007349 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007350 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007351 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007352 uint32_t local_drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007353 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007354 local_commandBuffer = commandBuffer;
7355 local_buffer = buffer;
7356 local_offset = offset;
7357 local_drawCount = drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007358 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007359 countingStream->rewind();
7360 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007361 uint64_t cgen_var_541;
7362 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_541, 1);
7363 countingStream->write((uint64_t*)&cgen_var_541, 1 * 8);
7364 uint64_t cgen_var_542;
7365 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_542, 1);
7366 countingStream->write((uint64_t*)&cgen_var_542, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007367 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7368 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7369 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007370 }
7371 uint32_t packetSize_vkCmdDrawIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7372 countingStream->rewind();
7373 uint32_t opcode_vkCmdDrawIndirect = OP_vkCmdDrawIndirect;
7374 stream->write(&opcode_vkCmdDrawIndirect, sizeof(uint32_t));
7375 stream->write(&packetSize_vkCmdDrawIndirect, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007376 uint64_t cgen_var_543;
7377 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_543, 1);
7378 stream->write((uint64_t*)&cgen_var_543, 1 * 8);
7379 uint64_t cgen_var_544;
7380 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_544, 1);
7381 stream->write((uint64_t*)&cgen_var_544, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007382 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7383 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7384 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007385 mImpl->log("finish vkCmdDrawIndirect");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007386}
7387
7388void VkEncoder::vkCmdDrawIndexedIndirect(
7389 VkCommandBuffer commandBuffer,
7390 VkBuffer buffer,
7391 VkDeviceSize offset,
7392 uint32_t drawCount,
7393 uint32_t stride)
7394{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007395 mImpl->log("start vkCmdDrawIndexedIndirect");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007396 auto stream = mImpl->stream();
7397 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007398 auto resources = mImpl->resources();
7399 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007400 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007401 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007402 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007403 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007404 uint32_t local_drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007405 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007406 local_commandBuffer = commandBuffer;
7407 local_buffer = buffer;
7408 local_offset = offset;
7409 local_drawCount = drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007410 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007411 countingStream->rewind();
7412 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007413 uint64_t cgen_var_545;
7414 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_545, 1);
7415 countingStream->write((uint64_t*)&cgen_var_545, 1 * 8);
7416 uint64_t cgen_var_546;
7417 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_546, 1);
7418 countingStream->write((uint64_t*)&cgen_var_546, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007419 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7420 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7421 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007422 }
7423 uint32_t packetSize_vkCmdDrawIndexedIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7424 countingStream->rewind();
7425 uint32_t opcode_vkCmdDrawIndexedIndirect = OP_vkCmdDrawIndexedIndirect;
7426 stream->write(&opcode_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
7427 stream->write(&packetSize_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007428 uint64_t cgen_var_547;
7429 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_547, 1);
7430 stream->write((uint64_t*)&cgen_var_547, 1 * 8);
7431 uint64_t cgen_var_548;
7432 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_548, 1);
7433 stream->write((uint64_t*)&cgen_var_548, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007434 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7435 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7436 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007437 mImpl->log("finish vkCmdDrawIndexedIndirect");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007438}
7439
7440void VkEncoder::vkCmdDispatch(
7441 VkCommandBuffer commandBuffer,
7442 uint32_t groupCountX,
7443 uint32_t groupCountY,
7444 uint32_t groupCountZ)
7445{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007446 mImpl->log("start vkCmdDispatch");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007447 auto stream = mImpl->stream();
7448 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007449 auto resources = mImpl->resources();
7450 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007451 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007452 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007453 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007454 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007455 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007456 local_commandBuffer = commandBuffer;
7457 local_groupCountX = groupCountX;
7458 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007459 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007460 countingStream->rewind();
7461 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007462 uint64_t cgen_var_549;
7463 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_549, 1);
7464 countingStream->write((uint64_t*)&cgen_var_549, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007465 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
7466 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
7467 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007468 }
7469 uint32_t packetSize_vkCmdDispatch = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7470 countingStream->rewind();
7471 uint32_t opcode_vkCmdDispatch = OP_vkCmdDispatch;
7472 stream->write(&opcode_vkCmdDispatch, sizeof(uint32_t));
7473 stream->write(&packetSize_vkCmdDispatch, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007474 uint64_t cgen_var_550;
7475 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_550, 1);
7476 stream->write((uint64_t*)&cgen_var_550, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007477 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
7478 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
7479 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007480 mImpl->log("finish vkCmdDispatch");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007481}
7482
7483void VkEncoder::vkCmdDispatchIndirect(
7484 VkCommandBuffer commandBuffer,
7485 VkBuffer buffer,
7486 VkDeviceSize offset)
7487{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007488 mImpl->log("start vkCmdDispatchIndirect");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007489 auto stream = mImpl->stream();
7490 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007491 auto resources = mImpl->resources();
7492 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007493 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007494 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007495 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007496 VkDeviceSize local_offset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007497 local_commandBuffer = commandBuffer;
7498 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007499 local_offset = offset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007500 countingStream->rewind();
7501 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007502 uint64_t cgen_var_551;
7503 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_551, 1);
7504 countingStream->write((uint64_t*)&cgen_var_551, 1 * 8);
7505 uint64_t cgen_var_552;
7506 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_552, 1);
7507 countingStream->write((uint64_t*)&cgen_var_552, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007508 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007509 }
7510 uint32_t packetSize_vkCmdDispatchIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7511 countingStream->rewind();
7512 uint32_t opcode_vkCmdDispatchIndirect = OP_vkCmdDispatchIndirect;
7513 stream->write(&opcode_vkCmdDispatchIndirect, sizeof(uint32_t));
7514 stream->write(&packetSize_vkCmdDispatchIndirect, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007515 uint64_t cgen_var_553;
7516 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_553, 1);
7517 stream->write((uint64_t*)&cgen_var_553, 1 * 8);
7518 uint64_t cgen_var_554;
7519 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_554, 1);
7520 stream->write((uint64_t*)&cgen_var_554, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007521 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007522 mImpl->log("finish vkCmdDispatchIndirect");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007523}
7524
7525void VkEncoder::vkCmdCopyBuffer(
7526 VkCommandBuffer commandBuffer,
7527 VkBuffer srcBuffer,
7528 VkBuffer dstBuffer,
7529 uint32_t regionCount,
7530 const VkBufferCopy* pRegions)
7531{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007532 mImpl->log("start vkCmdCopyBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007533 auto stream = mImpl->stream();
7534 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007535 auto resources = mImpl->resources();
7536 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007537 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007538 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007539 VkBuffer local_srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007540 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007541 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007542 VkBufferCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007543 local_commandBuffer = commandBuffer;
7544 local_srcBuffer = srcBuffer;
7545 local_dstBuffer = dstBuffer;
7546 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007547 local_pRegions = nullptr;
7548 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007549 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007550 local_pRegions = (VkBufferCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007551 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7552 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007553 deepcopy_VkBufferCopy(pool, pRegions + i, (VkBufferCopy*)(local_pRegions + i));
7554 }
7555 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007556 if (local_pRegions)
7557 {
7558 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7559 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007560 transform_tohost_VkBufferCopy(mImpl->resources(), (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007561 }
7562 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007563 countingStream->rewind();
7564 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007565 uint64_t cgen_var_555;
7566 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_555, 1);
7567 countingStream->write((uint64_t*)&cgen_var_555, 1 * 8);
7568 uint64_t cgen_var_556;
7569 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_556, 1);
7570 countingStream->write((uint64_t*)&cgen_var_556, 1 * 8);
7571 uint64_t cgen_var_557;
7572 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_557, 1);
7573 countingStream->write((uint64_t*)&cgen_var_557, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007574 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7575 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7576 {
7577 marshal_VkBufferCopy(countingStream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007578 }
7579 }
7580 uint32_t packetSize_vkCmdCopyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7581 countingStream->rewind();
7582 uint32_t opcode_vkCmdCopyBuffer = OP_vkCmdCopyBuffer;
7583 stream->write(&opcode_vkCmdCopyBuffer, sizeof(uint32_t));
7584 stream->write(&packetSize_vkCmdCopyBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007585 uint64_t cgen_var_558;
7586 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_558, 1);
7587 stream->write((uint64_t*)&cgen_var_558, 1 * 8);
7588 uint64_t cgen_var_559;
7589 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_559, 1);
7590 stream->write((uint64_t*)&cgen_var_559, 1 * 8);
7591 uint64_t cgen_var_560;
7592 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_560, 1);
7593 stream->write((uint64_t*)&cgen_var_560, 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_VkBufferCopy(stream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007598 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007599 mImpl->log("finish vkCmdCopyBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007600}
7601
7602void VkEncoder::vkCmdCopyImage(
7603 VkCommandBuffer commandBuffer,
7604 VkImage srcImage,
7605 VkImageLayout srcImageLayout,
7606 VkImage dstImage,
7607 VkImageLayout dstImageLayout,
7608 uint32_t regionCount,
7609 const VkImageCopy* pRegions)
7610{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007611 mImpl->log("start vkCmdCopyImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007612 auto stream = mImpl->stream();
7613 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007614 auto resources = mImpl->resources();
7615 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007616 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007617 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007618 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007619 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007620 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007621 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007622 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007623 VkImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007624 local_commandBuffer = commandBuffer;
7625 local_srcImage = srcImage;
7626 local_srcImageLayout = srcImageLayout;
7627 local_dstImage = dstImage;
7628 local_dstImageLayout = dstImageLayout;
7629 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007630 local_pRegions = nullptr;
7631 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007632 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007633 local_pRegions = (VkImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007634 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7635 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007636 deepcopy_VkImageCopy(pool, pRegions + i, (VkImageCopy*)(local_pRegions + i));
7637 }
7638 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007639 if (local_pRegions)
7640 {
7641 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7642 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007643 transform_tohost_VkImageCopy(mImpl->resources(), (VkImageCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007644 }
7645 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007646 countingStream->rewind();
7647 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007648 uint64_t cgen_var_561;
7649 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_561, 1);
7650 countingStream->write((uint64_t*)&cgen_var_561, 1 * 8);
7651 uint64_t cgen_var_562;
7652 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_562, 1);
7653 countingStream->write((uint64_t*)&cgen_var_562, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007654 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007655 uint64_t cgen_var_563;
7656 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_563, 1);
7657 countingStream->write((uint64_t*)&cgen_var_563, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007658 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7659 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7660 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7661 {
7662 marshal_VkImageCopy(countingStream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007663 }
7664 }
7665 uint32_t packetSize_vkCmdCopyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7666 countingStream->rewind();
7667 uint32_t opcode_vkCmdCopyImage = OP_vkCmdCopyImage;
7668 stream->write(&opcode_vkCmdCopyImage, sizeof(uint32_t));
7669 stream->write(&packetSize_vkCmdCopyImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007670 uint64_t cgen_var_564;
7671 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_564, 1);
7672 stream->write((uint64_t*)&cgen_var_564, 1 * 8);
7673 uint64_t cgen_var_565;
7674 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_565, 1);
7675 stream->write((uint64_t*)&cgen_var_565, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007676 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007677 uint64_t cgen_var_566;
7678 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_566, 1);
7679 stream->write((uint64_t*)&cgen_var_566, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007680 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7681 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007682 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7683 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007684 marshal_VkImageCopy(stream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007685 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007686 mImpl->log("finish vkCmdCopyImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007687}
7688
7689void VkEncoder::vkCmdBlitImage(
7690 VkCommandBuffer commandBuffer,
7691 VkImage srcImage,
7692 VkImageLayout srcImageLayout,
7693 VkImage dstImage,
7694 VkImageLayout dstImageLayout,
7695 uint32_t regionCount,
7696 const VkImageBlit* pRegions,
7697 VkFilter filter)
7698{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007699 mImpl->log("start vkCmdBlitImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007700 auto stream = mImpl->stream();
7701 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007702 auto resources = mImpl->resources();
7703 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007704 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007705 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007706 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007707 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007708 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007709 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007710 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007711 VkImageBlit* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007712 VkFilter local_filter;
7713 local_commandBuffer = commandBuffer;
7714 local_srcImage = srcImage;
7715 local_srcImageLayout = srcImageLayout;
7716 local_dstImage = dstImage;
7717 local_dstImageLayout = dstImageLayout;
7718 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007719 local_pRegions = nullptr;
7720 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007721 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007722 local_pRegions = (VkImageBlit*)pool->alloc(((regionCount)) * sizeof(const VkImageBlit));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007723 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7724 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007725 deepcopy_VkImageBlit(pool, pRegions + i, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007726 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007727 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007728 local_filter = filter;
Lingfeng Yang62b23322018-12-24 12:45:47 -08007729 if (local_pRegions)
7730 {
7731 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7732 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007733 transform_tohost_VkImageBlit(mImpl->resources(), (VkImageBlit*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007734 }
7735 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007736 countingStream->rewind();
7737 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007738 uint64_t cgen_var_567;
7739 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_567, 1);
7740 countingStream->write((uint64_t*)&cgen_var_567, 1 * 8);
7741 uint64_t cgen_var_568;
7742 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_568, 1);
7743 countingStream->write((uint64_t*)&cgen_var_568, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007744 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007745 uint64_t cgen_var_569;
7746 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_569, 1);
7747 countingStream->write((uint64_t*)&cgen_var_569, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007748 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7749 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7750 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7751 {
7752 marshal_VkImageBlit(countingStream, (VkImageBlit*)(local_pRegions + i));
7753 }
7754 countingStream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007755 }
7756 uint32_t packetSize_vkCmdBlitImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7757 countingStream->rewind();
7758 uint32_t opcode_vkCmdBlitImage = OP_vkCmdBlitImage;
7759 stream->write(&opcode_vkCmdBlitImage, sizeof(uint32_t));
7760 stream->write(&packetSize_vkCmdBlitImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007761 uint64_t cgen_var_570;
7762 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_570, 1);
7763 stream->write((uint64_t*)&cgen_var_570, 1 * 8);
7764 uint64_t cgen_var_571;
7765 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_571, 1);
7766 stream->write((uint64_t*)&cgen_var_571, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007767 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007768 uint64_t cgen_var_572;
7769 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_572, 1);
7770 stream->write((uint64_t*)&cgen_var_572, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007771 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7772 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007773 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7774 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007775 marshal_VkImageBlit(stream, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007776 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007777 stream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007778 mImpl->log("finish vkCmdBlitImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007779}
7780
7781void VkEncoder::vkCmdCopyBufferToImage(
7782 VkCommandBuffer commandBuffer,
7783 VkBuffer srcBuffer,
7784 VkImage dstImage,
7785 VkImageLayout dstImageLayout,
7786 uint32_t regionCount,
7787 const VkBufferImageCopy* pRegions)
7788{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007789 mImpl->log("start vkCmdCopyBufferToImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007790 auto stream = mImpl->stream();
7791 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007792 auto resources = mImpl->resources();
7793 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007794 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007795 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007796 VkBuffer local_srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007797 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007798 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007799 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007800 VkBufferImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007801 local_commandBuffer = commandBuffer;
7802 local_srcBuffer = srcBuffer;
7803 local_dstImage = dstImage;
7804 local_dstImageLayout = dstImageLayout;
7805 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007806 local_pRegions = nullptr;
7807 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007808 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007809 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007810 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7811 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007812 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
7813 }
7814 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007815 if (local_pRegions)
7816 {
7817 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7818 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007819 transform_tohost_VkBufferImageCopy(mImpl->resources(), (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007820 }
7821 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007822 countingStream->rewind();
7823 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007824 uint64_t cgen_var_573;
7825 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_573, 1);
7826 countingStream->write((uint64_t*)&cgen_var_573, 1 * 8);
7827 uint64_t cgen_var_574;
7828 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_574, 1);
7829 countingStream->write((uint64_t*)&cgen_var_574, 1 * 8);
7830 uint64_t cgen_var_575;
7831 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_575, 1);
7832 countingStream->write((uint64_t*)&cgen_var_575, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007833 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7834 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7835 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7836 {
7837 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007838 }
7839 }
7840 uint32_t packetSize_vkCmdCopyBufferToImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7841 countingStream->rewind();
7842 uint32_t opcode_vkCmdCopyBufferToImage = OP_vkCmdCopyBufferToImage;
7843 stream->write(&opcode_vkCmdCopyBufferToImage, sizeof(uint32_t));
7844 stream->write(&packetSize_vkCmdCopyBufferToImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007845 uint64_t cgen_var_576;
7846 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_576, 1);
7847 stream->write((uint64_t*)&cgen_var_576, 1 * 8);
7848 uint64_t cgen_var_577;
7849 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_577, 1);
7850 stream->write((uint64_t*)&cgen_var_577, 1 * 8);
7851 uint64_t cgen_var_578;
7852 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_578, 1);
7853 stream->write((uint64_t*)&cgen_var_578, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007854 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7855 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007856 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7857 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007858 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007859 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007860 mImpl->log("finish vkCmdCopyBufferToImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007861}
7862
7863void VkEncoder::vkCmdCopyImageToBuffer(
7864 VkCommandBuffer commandBuffer,
7865 VkImage srcImage,
7866 VkImageLayout srcImageLayout,
7867 VkBuffer dstBuffer,
7868 uint32_t regionCount,
7869 const VkBufferImageCopy* pRegions)
7870{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007871 mImpl->log("start vkCmdCopyImageToBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007872 auto stream = mImpl->stream();
7873 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007874 auto resources = mImpl->resources();
7875 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007876 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007877 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007878 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007879 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007880 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007881 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007882 VkBufferImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007883 local_commandBuffer = commandBuffer;
7884 local_srcImage = srcImage;
7885 local_srcImageLayout = srcImageLayout;
7886 local_dstBuffer = dstBuffer;
7887 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007888 local_pRegions = nullptr;
7889 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007890 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007891 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007892 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7893 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007894 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
7895 }
7896 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007897 if (local_pRegions)
7898 {
7899 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7900 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007901 transform_tohost_VkBufferImageCopy(mImpl->resources(), (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007902 }
7903 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007904 countingStream->rewind();
7905 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007906 uint64_t cgen_var_579;
7907 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_579, 1);
7908 countingStream->write((uint64_t*)&cgen_var_579, 1 * 8);
7909 uint64_t cgen_var_580;
7910 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_580, 1);
7911 countingStream->write((uint64_t*)&cgen_var_580, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007912 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007913 uint64_t cgen_var_581;
7914 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_581, 1);
7915 countingStream->write((uint64_t*)&cgen_var_581, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007916 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7917 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7918 {
7919 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007920 }
7921 }
7922 uint32_t packetSize_vkCmdCopyImageToBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7923 countingStream->rewind();
7924 uint32_t opcode_vkCmdCopyImageToBuffer = OP_vkCmdCopyImageToBuffer;
7925 stream->write(&opcode_vkCmdCopyImageToBuffer, sizeof(uint32_t));
7926 stream->write(&packetSize_vkCmdCopyImageToBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007927 uint64_t cgen_var_582;
7928 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_582, 1);
7929 stream->write((uint64_t*)&cgen_var_582, 1 * 8);
7930 uint64_t cgen_var_583;
7931 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_583, 1);
7932 stream->write((uint64_t*)&cgen_var_583, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007933 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007934 uint64_t cgen_var_584;
7935 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_584, 1);
7936 stream->write((uint64_t*)&cgen_var_584, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007937 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007938 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7939 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007940 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007941 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007942 mImpl->log("finish vkCmdCopyImageToBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007943}
7944
7945void VkEncoder::vkCmdUpdateBuffer(
7946 VkCommandBuffer commandBuffer,
7947 VkBuffer dstBuffer,
7948 VkDeviceSize dstOffset,
7949 VkDeviceSize dataSize,
7950 const void* pData)
7951{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007952 mImpl->log("start vkCmdUpdateBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007953 auto stream = mImpl->stream();
7954 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007955 auto resources = mImpl->resources();
7956 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007957 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007958 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007959 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007960 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007961 VkDeviceSize local_dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007962 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007963 local_commandBuffer = commandBuffer;
7964 local_dstBuffer = dstBuffer;
7965 local_dstOffset = dstOffset;
7966 local_dataSize = dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007967 local_pData = nullptr;
7968 if (pData)
7969 {
7970 local_pData = (void*)pool->dupArray(pData, ((dataSize)) * sizeof(const uint8_t));
7971 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007972 countingStream->rewind();
7973 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007974 uint64_t cgen_var_585;
7975 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_585, 1);
7976 countingStream->write((uint64_t*)&cgen_var_585, 1 * 8);
7977 uint64_t cgen_var_586;
7978 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_586, 1);
7979 countingStream->write((uint64_t*)&cgen_var_586, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007980 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7981 countingStream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
7982 countingStream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007983 }
7984 uint32_t packetSize_vkCmdUpdateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7985 countingStream->rewind();
7986 uint32_t opcode_vkCmdUpdateBuffer = OP_vkCmdUpdateBuffer;
7987 stream->write(&opcode_vkCmdUpdateBuffer, sizeof(uint32_t));
7988 stream->write(&packetSize_vkCmdUpdateBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007989 uint64_t cgen_var_587;
7990 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_587, 1);
7991 stream->write((uint64_t*)&cgen_var_587, 1 * 8);
7992 uint64_t cgen_var_588;
7993 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_588, 1);
7994 stream->write((uint64_t*)&cgen_var_588, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007995 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7996 stream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
7997 stream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007998 mImpl->log("finish vkCmdUpdateBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007999}
8000
8001void VkEncoder::vkCmdFillBuffer(
8002 VkCommandBuffer commandBuffer,
8003 VkBuffer dstBuffer,
8004 VkDeviceSize dstOffset,
8005 VkDeviceSize size,
8006 uint32_t data)
8007{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008008 mImpl->log("start vkCmdFillBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008009 auto stream = mImpl->stream();
8010 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008011 auto resources = mImpl->resources();
8012 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008013 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008014 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008015 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008016 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008017 VkDeviceSize local_size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008018 uint32_t local_data;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008019 local_commandBuffer = commandBuffer;
8020 local_dstBuffer = dstBuffer;
8021 local_dstOffset = dstOffset;
8022 local_size = size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008023 local_data = data;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008024 countingStream->rewind();
8025 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008026 uint64_t cgen_var_589;
8027 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_589, 1);
8028 countingStream->write((uint64_t*)&cgen_var_589, 1 * 8);
8029 uint64_t cgen_var_590;
8030 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_590, 1);
8031 countingStream->write((uint64_t*)&cgen_var_590, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008032 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8033 countingStream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
8034 countingStream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008035 }
8036 uint32_t packetSize_vkCmdFillBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8037 countingStream->rewind();
8038 uint32_t opcode_vkCmdFillBuffer = OP_vkCmdFillBuffer;
8039 stream->write(&opcode_vkCmdFillBuffer, sizeof(uint32_t));
8040 stream->write(&packetSize_vkCmdFillBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008041 uint64_t cgen_var_591;
8042 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_591, 1);
8043 stream->write((uint64_t*)&cgen_var_591, 1 * 8);
8044 uint64_t cgen_var_592;
8045 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_592, 1);
8046 stream->write((uint64_t*)&cgen_var_592, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008047 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8048 stream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
8049 stream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008050 mImpl->log("finish vkCmdFillBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008051}
8052
8053void VkEncoder::vkCmdClearColorImage(
8054 VkCommandBuffer commandBuffer,
8055 VkImage image,
8056 VkImageLayout imageLayout,
8057 const VkClearColorValue* pColor,
8058 uint32_t rangeCount,
8059 const VkImageSubresourceRange* pRanges)
8060{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008061 mImpl->log("start vkCmdClearColorImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008062 auto stream = mImpl->stream();
8063 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008064 auto resources = mImpl->resources();
8065 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008066 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008067 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008068 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008069 VkImageLayout local_imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008070 VkClearColorValue* local_pColor;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008071 uint32_t local_rangeCount;
8072 VkImageSubresourceRange* local_pRanges;
8073 local_commandBuffer = commandBuffer;
8074 local_image = image;
8075 local_imageLayout = imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008076 local_pColor = nullptr;
8077 if (pColor)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008078 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008079 local_pColor = (VkClearColorValue*)pool->alloc(sizeof(const VkClearColorValue));
8080 deepcopy_VkClearColorValue(pool, pColor, (VkClearColorValue*)(local_pColor));
8081 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008082 local_rangeCount = rangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008083 local_pRanges = nullptr;
8084 if (pRanges)
8085 {
8086 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008087 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8088 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008089 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
8090 }
8091 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008092 if (local_pColor)
8093 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008094 transform_tohost_VkClearColorValue(mImpl->resources(), (VkClearColorValue*)(local_pColor));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008095 }
8096 if (local_pRanges)
8097 {
8098 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8099 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008100 transform_tohost_VkImageSubresourceRange(mImpl->resources(), (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008101 }
8102 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008103 countingStream->rewind();
8104 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008105 uint64_t cgen_var_593;
8106 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_593, 1);
8107 countingStream->write((uint64_t*)&cgen_var_593, 1 * 8);
8108 uint64_t cgen_var_594;
8109 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_594, 1);
8110 countingStream->write((uint64_t*)&cgen_var_594, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008111 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8112 marshal_VkClearColorValue(countingStream, (VkClearColorValue*)(local_pColor));
8113 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
8114 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8115 {
8116 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008117 }
8118 }
8119 uint32_t packetSize_vkCmdClearColorImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8120 countingStream->rewind();
8121 uint32_t opcode_vkCmdClearColorImage = OP_vkCmdClearColorImage;
8122 stream->write(&opcode_vkCmdClearColorImage, sizeof(uint32_t));
8123 stream->write(&packetSize_vkCmdClearColorImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008124 uint64_t cgen_var_595;
8125 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_595, 1);
8126 stream->write((uint64_t*)&cgen_var_595, 1 * 8);
8127 uint64_t cgen_var_596;
8128 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_596, 1);
8129 stream->write((uint64_t*)&cgen_var_596, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008130 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8131 marshal_VkClearColorValue(stream, (VkClearColorValue*)(local_pColor));
8132 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008133 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8134 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008135 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008136 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008137 mImpl->log("finish vkCmdClearColorImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008138}
8139
8140void VkEncoder::vkCmdClearDepthStencilImage(
8141 VkCommandBuffer commandBuffer,
8142 VkImage image,
8143 VkImageLayout imageLayout,
8144 const VkClearDepthStencilValue* pDepthStencil,
8145 uint32_t rangeCount,
8146 const VkImageSubresourceRange* pRanges)
8147{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008148 mImpl->log("start vkCmdClearDepthStencilImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008149 auto stream = mImpl->stream();
8150 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008151 auto resources = mImpl->resources();
8152 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008153 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008154 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008155 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008156 VkImageLayout local_imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008157 VkClearDepthStencilValue* local_pDepthStencil;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008158 uint32_t local_rangeCount;
8159 VkImageSubresourceRange* local_pRanges;
8160 local_commandBuffer = commandBuffer;
8161 local_image = image;
8162 local_imageLayout = imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008163 local_pDepthStencil = nullptr;
8164 if (pDepthStencil)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008165 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008166 local_pDepthStencil = (VkClearDepthStencilValue*)pool->alloc(sizeof(const VkClearDepthStencilValue));
8167 deepcopy_VkClearDepthStencilValue(pool, pDepthStencil, (VkClearDepthStencilValue*)(local_pDepthStencil));
8168 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008169 local_rangeCount = rangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008170 local_pRanges = nullptr;
8171 if (pRanges)
8172 {
8173 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008174 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8175 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008176 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
8177 }
8178 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008179 if (local_pDepthStencil)
8180 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008181 transform_tohost_VkClearDepthStencilValue(mImpl->resources(), (VkClearDepthStencilValue*)(local_pDepthStencil));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008182 }
8183 if (local_pRanges)
8184 {
8185 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8186 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008187 transform_tohost_VkImageSubresourceRange(mImpl->resources(), (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008188 }
8189 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008190 countingStream->rewind();
8191 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008192 uint64_t cgen_var_597;
8193 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_597, 1);
8194 countingStream->write((uint64_t*)&cgen_var_597, 1 * 8);
8195 uint64_t cgen_var_598;
8196 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_598, 1);
8197 countingStream->write((uint64_t*)&cgen_var_598, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008198 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8199 marshal_VkClearDepthStencilValue(countingStream, (VkClearDepthStencilValue*)(local_pDepthStencil));
8200 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
8201 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8202 {
8203 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008204 }
8205 }
8206 uint32_t packetSize_vkCmdClearDepthStencilImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8207 countingStream->rewind();
8208 uint32_t opcode_vkCmdClearDepthStencilImage = OP_vkCmdClearDepthStencilImage;
8209 stream->write(&opcode_vkCmdClearDepthStencilImage, sizeof(uint32_t));
8210 stream->write(&packetSize_vkCmdClearDepthStencilImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008211 uint64_t cgen_var_599;
8212 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_599, 1);
8213 stream->write((uint64_t*)&cgen_var_599, 1 * 8);
8214 uint64_t cgen_var_600;
8215 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_600, 1);
8216 stream->write((uint64_t*)&cgen_var_600, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008217 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8218 marshal_VkClearDepthStencilValue(stream, (VkClearDepthStencilValue*)(local_pDepthStencil));
8219 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008220 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8221 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008222 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008223 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008224 mImpl->log("finish vkCmdClearDepthStencilImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008225}
8226
8227void VkEncoder::vkCmdClearAttachments(
8228 VkCommandBuffer commandBuffer,
8229 uint32_t attachmentCount,
8230 const VkClearAttachment* pAttachments,
8231 uint32_t rectCount,
8232 const VkClearRect* pRects)
8233{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008234 mImpl->log("start vkCmdClearAttachments");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008235 auto stream = mImpl->stream();
8236 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008237 auto resources = mImpl->resources();
8238 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008239 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008240 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008241 uint32_t local_attachmentCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008242 VkClearAttachment* local_pAttachments;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008243 uint32_t local_rectCount;
8244 VkClearRect* local_pRects;
8245 local_commandBuffer = commandBuffer;
8246 local_attachmentCount = attachmentCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008247 local_pAttachments = nullptr;
8248 if (pAttachments)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008249 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008250 local_pAttachments = (VkClearAttachment*)pool->alloc(((attachmentCount)) * sizeof(const VkClearAttachment));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008251 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8252 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008253 deepcopy_VkClearAttachment(pool, pAttachments + i, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008254 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008255 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008256 local_rectCount = rectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008257 local_pRects = nullptr;
8258 if (pRects)
8259 {
8260 local_pRects = (VkClearRect*)pool->alloc(((rectCount)) * sizeof(const VkClearRect));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008261 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8262 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008263 deepcopy_VkClearRect(pool, pRects + i, (VkClearRect*)(local_pRects + i));
8264 }
8265 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008266 if (local_pAttachments)
8267 {
8268 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8269 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008270 transform_tohost_VkClearAttachment(mImpl->resources(), (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008271 }
8272 }
8273 if (local_pRects)
8274 {
8275 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8276 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008277 transform_tohost_VkClearRect(mImpl->resources(), (VkClearRect*)(local_pRects + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008278 }
8279 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008280 countingStream->rewind();
8281 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008282 uint64_t cgen_var_601;
8283 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_601, 1);
8284 countingStream->write((uint64_t*)&cgen_var_601, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008285 countingStream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
8286 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8287 {
8288 marshal_VkClearAttachment(countingStream, (VkClearAttachment*)(local_pAttachments + i));
8289 }
8290 countingStream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
8291 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8292 {
8293 marshal_VkClearRect(countingStream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008294 }
8295 }
8296 uint32_t packetSize_vkCmdClearAttachments = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8297 countingStream->rewind();
8298 uint32_t opcode_vkCmdClearAttachments = OP_vkCmdClearAttachments;
8299 stream->write(&opcode_vkCmdClearAttachments, sizeof(uint32_t));
8300 stream->write(&packetSize_vkCmdClearAttachments, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008301 uint64_t cgen_var_602;
8302 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_602, 1);
8303 stream->write((uint64_t*)&cgen_var_602, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008304 stream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008305 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8306 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008307 marshal_VkClearAttachment(stream, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008308 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008309 stream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008310 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8311 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008312 marshal_VkClearRect(stream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008313 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008314 mImpl->log("finish vkCmdClearAttachments");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008315}
8316
8317void VkEncoder::vkCmdResolveImage(
8318 VkCommandBuffer commandBuffer,
8319 VkImage srcImage,
8320 VkImageLayout srcImageLayout,
8321 VkImage dstImage,
8322 VkImageLayout dstImageLayout,
8323 uint32_t regionCount,
8324 const VkImageResolve* pRegions)
8325{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008326 mImpl->log("start vkCmdResolveImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008327 auto stream = mImpl->stream();
8328 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008329 auto resources = mImpl->resources();
8330 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008331 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008332 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008333 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008334 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008335 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008336 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008337 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008338 VkImageResolve* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008339 local_commandBuffer = commandBuffer;
8340 local_srcImage = srcImage;
8341 local_srcImageLayout = srcImageLayout;
8342 local_dstImage = dstImage;
8343 local_dstImageLayout = dstImageLayout;
8344 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008345 local_pRegions = nullptr;
8346 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008347 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008348 local_pRegions = (VkImageResolve*)pool->alloc(((regionCount)) * sizeof(const VkImageResolve));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008349 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8350 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008351 deepcopy_VkImageResolve(pool, pRegions + i, (VkImageResolve*)(local_pRegions + i));
8352 }
8353 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008354 if (local_pRegions)
8355 {
8356 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8357 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008358 transform_tohost_VkImageResolve(mImpl->resources(), (VkImageResolve*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008359 }
8360 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008361 countingStream->rewind();
8362 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008363 uint64_t cgen_var_603;
8364 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_603, 1);
8365 countingStream->write((uint64_t*)&cgen_var_603, 1 * 8);
8366 uint64_t cgen_var_604;
8367 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_604, 1);
8368 countingStream->write((uint64_t*)&cgen_var_604, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008369 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008370 uint64_t cgen_var_605;
8371 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_605, 1);
8372 countingStream->write((uint64_t*)&cgen_var_605, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008373 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8374 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
8375 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8376 {
8377 marshal_VkImageResolve(countingStream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008378 }
8379 }
8380 uint32_t packetSize_vkCmdResolveImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8381 countingStream->rewind();
8382 uint32_t opcode_vkCmdResolveImage = OP_vkCmdResolveImage;
8383 stream->write(&opcode_vkCmdResolveImage, sizeof(uint32_t));
8384 stream->write(&packetSize_vkCmdResolveImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008385 uint64_t cgen_var_606;
8386 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_606, 1);
8387 stream->write((uint64_t*)&cgen_var_606, 1 * 8);
8388 uint64_t cgen_var_607;
8389 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_607, 1);
8390 stream->write((uint64_t*)&cgen_var_607, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008391 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008392 uint64_t cgen_var_608;
8393 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_608, 1);
8394 stream->write((uint64_t*)&cgen_var_608, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008395 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8396 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008397 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8398 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008399 marshal_VkImageResolve(stream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008400 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008401 mImpl->log("finish vkCmdResolveImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008402}
8403
8404void VkEncoder::vkCmdSetEvent(
8405 VkCommandBuffer commandBuffer,
8406 VkEvent event,
8407 VkPipelineStageFlags stageMask)
8408{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008409 mImpl->log("start vkCmdSetEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008410 auto stream = mImpl->stream();
8411 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008412 auto resources = mImpl->resources();
8413 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008414 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008415 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008416 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008417 VkPipelineStageFlags local_stageMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008418 local_commandBuffer = commandBuffer;
8419 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008420 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008421 countingStream->rewind();
8422 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008423 uint64_t cgen_var_609;
8424 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_609, 1);
8425 countingStream->write((uint64_t*)&cgen_var_609, 1 * 8);
8426 uint64_t cgen_var_610;
8427 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_610, 1);
8428 countingStream->write((uint64_t*)&cgen_var_610, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008429 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008430 }
8431 uint32_t packetSize_vkCmdSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8432 countingStream->rewind();
8433 uint32_t opcode_vkCmdSetEvent = OP_vkCmdSetEvent;
8434 stream->write(&opcode_vkCmdSetEvent, sizeof(uint32_t));
8435 stream->write(&packetSize_vkCmdSetEvent, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008436 uint64_t cgen_var_611;
8437 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_611, 1);
8438 stream->write((uint64_t*)&cgen_var_611, 1 * 8);
8439 uint64_t cgen_var_612;
8440 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_612, 1);
8441 stream->write((uint64_t*)&cgen_var_612, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008442 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008443 mImpl->log("finish vkCmdSetEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008444}
8445
8446void VkEncoder::vkCmdResetEvent(
8447 VkCommandBuffer commandBuffer,
8448 VkEvent event,
8449 VkPipelineStageFlags stageMask)
8450{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008451 mImpl->log("start vkCmdResetEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008452 auto stream = mImpl->stream();
8453 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008454 auto resources = mImpl->resources();
8455 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008456 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008457 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008458 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008459 VkPipelineStageFlags local_stageMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008460 local_commandBuffer = commandBuffer;
8461 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008462 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008463 countingStream->rewind();
8464 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008465 uint64_t cgen_var_613;
8466 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_613, 1);
8467 countingStream->write((uint64_t*)&cgen_var_613, 1 * 8);
8468 uint64_t cgen_var_614;
8469 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_614, 1);
8470 countingStream->write((uint64_t*)&cgen_var_614, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008471 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008472 }
8473 uint32_t packetSize_vkCmdResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8474 countingStream->rewind();
8475 uint32_t opcode_vkCmdResetEvent = OP_vkCmdResetEvent;
8476 stream->write(&opcode_vkCmdResetEvent, sizeof(uint32_t));
8477 stream->write(&packetSize_vkCmdResetEvent, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008478 uint64_t cgen_var_615;
8479 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_615, 1);
8480 stream->write((uint64_t*)&cgen_var_615, 1 * 8);
8481 uint64_t cgen_var_616;
8482 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_616, 1);
8483 stream->write((uint64_t*)&cgen_var_616, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008484 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008485 mImpl->log("finish vkCmdResetEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008486}
8487
8488void VkEncoder::vkCmdWaitEvents(
8489 VkCommandBuffer commandBuffer,
8490 uint32_t eventCount,
8491 const VkEvent* pEvents,
8492 VkPipelineStageFlags srcStageMask,
8493 VkPipelineStageFlags dstStageMask,
8494 uint32_t memoryBarrierCount,
8495 const VkMemoryBarrier* pMemoryBarriers,
8496 uint32_t bufferMemoryBarrierCount,
8497 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
8498 uint32_t imageMemoryBarrierCount,
8499 const VkImageMemoryBarrier* pImageMemoryBarriers)
8500{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008501 mImpl->log("start vkCmdWaitEvents");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008502 auto stream = mImpl->stream();
8503 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008504 auto resources = mImpl->resources();
8505 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008506 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008507 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008508 uint32_t local_eventCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008509 VkEvent* local_pEvents;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008510 VkPipelineStageFlags local_srcStageMask;
8511 VkPipelineStageFlags local_dstStageMask;
8512 uint32_t local_memoryBarrierCount;
8513 VkMemoryBarrier* local_pMemoryBarriers;
8514 uint32_t local_bufferMemoryBarrierCount;
8515 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
8516 uint32_t local_imageMemoryBarrierCount;
8517 VkImageMemoryBarrier* local_pImageMemoryBarriers;
8518 local_commandBuffer = commandBuffer;
8519 local_eventCount = eventCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008520 local_pEvents = nullptr;
8521 if (pEvents)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008522 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008523 local_pEvents = (VkEvent*)pool->dupArray(pEvents, ((eventCount)) * sizeof(const VkEvent));
8524 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008525 local_srcStageMask = srcStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008526 local_dstStageMask = dstStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008527 local_memoryBarrierCount = memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008528 local_pMemoryBarriers = nullptr;
8529 if (pMemoryBarriers)
8530 {
8531 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008532 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8533 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008534 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008535 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008536 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008537 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008538 local_pBufferMemoryBarriers = nullptr;
8539 if (pBufferMemoryBarriers)
8540 {
8541 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008542 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8543 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008544 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008545 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008546 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008547 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008548 local_pImageMemoryBarriers = nullptr;
8549 if (pImageMemoryBarriers)
8550 {
8551 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008552 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8553 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008554 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
8555 }
8556 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008557 if (local_pMemoryBarriers)
8558 {
8559 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8560 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008561 transform_tohost_VkMemoryBarrier(mImpl->resources(), (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008562 }
8563 }
8564 if (local_pBufferMemoryBarriers)
8565 {
8566 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8567 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008568 transform_tohost_VkBufferMemoryBarrier(mImpl->resources(), (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008569 }
8570 }
8571 if (local_pImageMemoryBarriers)
8572 {
8573 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8574 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008575 transform_tohost_VkImageMemoryBarrier(mImpl->resources(), (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008576 }
8577 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008578 countingStream->rewind();
8579 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008580 uint64_t cgen_var_617;
8581 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_617, 1);
8582 countingStream->write((uint64_t*)&cgen_var_617, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008583 countingStream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008584 if (((eventCount)))
8585 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008586 uint64_t* cgen_var_618;
8587 countingStream->alloc((void**)&cgen_var_618, ((eventCount)) * 8);
8588 countingStream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_618, ((eventCount)));
8589 countingStream->write((uint64_t*)cgen_var_618, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008590 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008591 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8592 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8593 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
8594 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8595 {
8596 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
8597 }
8598 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
8599 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8600 {
8601 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
8602 }
8603 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
8604 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8605 {
8606 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008607 }
8608 }
8609 uint32_t packetSize_vkCmdWaitEvents = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8610 countingStream->rewind();
8611 uint32_t opcode_vkCmdWaitEvents = OP_vkCmdWaitEvents;
8612 stream->write(&opcode_vkCmdWaitEvents, sizeof(uint32_t));
8613 stream->write(&packetSize_vkCmdWaitEvents, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008614 uint64_t cgen_var_619;
8615 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_619, 1);
8616 stream->write((uint64_t*)&cgen_var_619, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008617 stream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008618 if (((eventCount)))
8619 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008620 uint64_t* cgen_var_620;
8621 stream->alloc((void**)&cgen_var_620, ((eventCount)) * 8);
8622 stream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_620, ((eventCount)));
8623 stream->write((uint64_t*)cgen_var_620, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008624 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008625 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8626 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8627 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008628 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8629 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008630 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008631 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008632 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008633 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8634 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008635 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008636 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008637 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008638 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8639 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008640 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008641 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008642 mImpl->log("finish vkCmdWaitEvents");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008643}
8644
8645void VkEncoder::vkCmdPipelineBarrier(
8646 VkCommandBuffer commandBuffer,
8647 VkPipelineStageFlags srcStageMask,
8648 VkPipelineStageFlags dstStageMask,
8649 VkDependencyFlags dependencyFlags,
8650 uint32_t memoryBarrierCount,
8651 const VkMemoryBarrier* pMemoryBarriers,
8652 uint32_t bufferMemoryBarrierCount,
8653 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
8654 uint32_t imageMemoryBarrierCount,
8655 const VkImageMemoryBarrier* pImageMemoryBarriers)
8656{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008657 mImpl->log("start vkCmdPipelineBarrier");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008658 auto stream = mImpl->stream();
8659 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008660 auto resources = mImpl->resources();
8661 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008662 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008663 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008664 VkPipelineStageFlags local_srcStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008665 VkPipelineStageFlags local_dstStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008666 VkDependencyFlags local_dependencyFlags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008667 uint32_t local_memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008668 VkMemoryBarrier* local_pMemoryBarriers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008669 uint32_t local_bufferMemoryBarrierCount;
8670 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
8671 uint32_t local_imageMemoryBarrierCount;
8672 VkImageMemoryBarrier* local_pImageMemoryBarriers;
8673 local_commandBuffer = commandBuffer;
8674 local_srcStageMask = srcStageMask;
8675 local_dstStageMask = dstStageMask;
8676 local_dependencyFlags = dependencyFlags;
8677 local_memoryBarrierCount = memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008678 local_pMemoryBarriers = nullptr;
8679 if (pMemoryBarriers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008680 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008681 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008682 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8683 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008684 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008685 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008686 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008687 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008688 local_pBufferMemoryBarriers = nullptr;
8689 if (pBufferMemoryBarriers)
8690 {
8691 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008692 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8693 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008694 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008695 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008696 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008697 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008698 local_pImageMemoryBarriers = nullptr;
8699 if (pImageMemoryBarriers)
8700 {
8701 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008702 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8703 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008704 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
8705 }
8706 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008707 if (local_pMemoryBarriers)
8708 {
8709 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8710 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008711 transform_tohost_VkMemoryBarrier(mImpl->resources(), (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008712 }
8713 }
8714 if (local_pBufferMemoryBarriers)
8715 {
8716 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8717 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008718 transform_tohost_VkBufferMemoryBarrier(mImpl->resources(), (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008719 }
8720 }
8721 if (local_pImageMemoryBarriers)
8722 {
8723 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8724 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008725 transform_tohost_VkImageMemoryBarrier(mImpl->resources(), (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008726 }
8727 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008728 countingStream->rewind();
8729 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008730 uint64_t cgen_var_621;
8731 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_621, 1);
8732 countingStream->write((uint64_t*)&cgen_var_621, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008733 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8734 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8735 countingStream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
8736 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
8737 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8738 {
8739 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
8740 }
8741 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
8742 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8743 {
8744 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
8745 }
8746 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
8747 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8748 {
8749 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008750 }
8751 }
8752 uint32_t packetSize_vkCmdPipelineBarrier = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8753 countingStream->rewind();
8754 uint32_t opcode_vkCmdPipelineBarrier = OP_vkCmdPipelineBarrier;
8755 stream->write(&opcode_vkCmdPipelineBarrier, sizeof(uint32_t));
8756 stream->write(&packetSize_vkCmdPipelineBarrier, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008757 uint64_t cgen_var_622;
8758 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_622, 1);
8759 stream->write((uint64_t*)&cgen_var_622, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008760 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8761 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8762 stream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
8763 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008764 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8765 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008766 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008767 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008768 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008769 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8770 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008771 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008772 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008773 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008774 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8775 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008776 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008777 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008778 mImpl->log("finish vkCmdPipelineBarrier");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008779}
8780
8781void VkEncoder::vkCmdBeginQuery(
8782 VkCommandBuffer commandBuffer,
8783 VkQueryPool queryPool,
8784 uint32_t query,
8785 VkQueryControlFlags flags)
8786{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008787 mImpl->log("start vkCmdBeginQuery");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008788 auto stream = mImpl->stream();
8789 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008790 auto resources = mImpl->resources();
8791 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008792 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008793 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008794 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008795 uint32_t local_query;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008796 VkQueryControlFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008797 local_commandBuffer = commandBuffer;
8798 local_queryPool = queryPool;
8799 local_query = query;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008800 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008801 countingStream->rewind();
8802 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008803 uint64_t cgen_var_623;
8804 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_623, 1);
8805 countingStream->write((uint64_t*)&cgen_var_623, 1 * 8);
8806 uint64_t cgen_var_624;
8807 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_624, 1);
8808 countingStream->write((uint64_t*)&cgen_var_624, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008809 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
8810 countingStream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008811 }
8812 uint32_t packetSize_vkCmdBeginQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8813 countingStream->rewind();
8814 uint32_t opcode_vkCmdBeginQuery = OP_vkCmdBeginQuery;
8815 stream->write(&opcode_vkCmdBeginQuery, sizeof(uint32_t));
8816 stream->write(&packetSize_vkCmdBeginQuery, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008817 uint64_t cgen_var_625;
8818 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_625, 1);
8819 stream->write((uint64_t*)&cgen_var_625, 1 * 8);
8820 uint64_t cgen_var_626;
8821 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_626, 1);
8822 stream->write((uint64_t*)&cgen_var_626, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008823 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
8824 stream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008825 mImpl->log("finish vkCmdBeginQuery");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008826}
8827
8828void VkEncoder::vkCmdEndQuery(
8829 VkCommandBuffer commandBuffer,
8830 VkQueryPool queryPool,
8831 uint32_t query)
8832{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008833 mImpl->log("start vkCmdEndQuery");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008834 auto stream = mImpl->stream();
8835 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008836 auto resources = mImpl->resources();
8837 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008838 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008839 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008840 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008841 uint32_t local_query;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008842 local_commandBuffer = commandBuffer;
8843 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008844 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008845 countingStream->rewind();
8846 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008847 uint64_t cgen_var_627;
8848 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_627, 1);
8849 countingStream->write((uint64_t*)&cgen_var_627, 1 * 8);
8850 uint64_t cgen_var_628;
8851 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_628, 1);
8852 countingStream->write((uint64_t*)&cgen_var_628, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008853 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008854 }
8855 uint32_t packetSize_vkCmdEndQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8856 countingStream->rewind();
8857 uint32_t opcode_vkCmdEndQuery = OP_vkCmdEndQuery;
8858 stream->write(&opcode_vkCmdEndQuery, sizeof(uint32_t));
8859 stream->write(&packetSize_vkCmdEndQuery, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008860 uint64_t cgen_var_629;
8861 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_629, 1);
8862 stream->write((uint64_t*)&cgen_var_629, 1 * 8);
8863 uint64_t cgen_var_630;
8864 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_630, 1);
8865 stream->write((uint64_t*)&cgen_var_630, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008866 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008867 mImpl->log("finish vkCmdEndQuery");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008868}
8869
8870void VkEncoder::vkCmdResetQueryPool(
8871 VkCommandBuffer commandBuffer,
8872 VkQueryPool queryPool,
8873 uint32_t firstQuery,
8874 uint32_t queryCount)
8875{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008876 mImpl->log("start vkCmdResetQueryPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008877 auto stream = mImpl->stream();
8878 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008879 auto resources = mImpl->resources();
8880 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008881 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008882 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008883 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008884 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008885 uint32_t local_queryCount;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008886 local_commandBuffer = commandBuffer;
8887 local_queryPool = queryPool;
8888 local_firstQuery = firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008889 local_queryCount = queryCount;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008890 countingStream->rewind();
8891 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008892 uint64_t cgen_var_631;
8893 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_631, 1);
8894 countingStream->write((uint64_t*)&cgen_var_631, 1 * 8);
8895 uint64_t cgen_var_632;
8896 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_632, 1);
8897 countingStream->write((uint64_t*)&cgen_var_632, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008898 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8899 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008900 }
8901 uint32_t packetSize_vkCmdResetQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8902 countingStream->rewind();
8903 uint32_t opcode_vkCmdResetQueryPool = OP_vkCmdResetQueryPool;
8904 stream->write(&opcode_vkCmdResetQueryPool, sizeof(uint32_t));
8905 stream->write(&packetSize_vkCmdResetQueryPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008906 uint64_t cgen_var_633;
8907 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_633, 1);
8908 stream->write((uint64_t*)&cgen_var_633, 1 * 8);
8909 uint64_t cgen_var_634;
8910 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_634, 1);
8911 stream->write((uint64_t*)&cgen_var_634, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008912 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8913 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008914 mImpl->log("finish vkCmdResetQueryPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008915}
8916
8917void VkEncoder::vkCmdWriteTimestamp(
8918 VkCommandBuffer commandBuffer,
8919 VkPipelineStageFlagBits pipelineStage,
8920 VkQueryPool queryPool,
8921 uint32_t query)
8922{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008923 mImpl->log("start vkCmdWriteTimestamp");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008924 auto stream = mImpl->stream();
8925 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008926 auto resources = mImpl->resources();
8927 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008928 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008929 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008930 VkPipelineStageFlagBits local_pipelineStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008931 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008932 uint32_t local_query;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008933 local_commandBuffer = commandBuffer;
8934 local_pipelineStage = pipelineStage;
8935 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008936 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008937 countingStream->rewind();
8938 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008939 uint64_t cgen_var_635;
8940 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_635, 1);
8941 countingStream->write((uint64_t*)&cgen_var_635, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008942 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008943 uint64_t cgen_var_636;
8944 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_636, 1);
8945 countingStream->write((uint64_t*)&cgen_var_636, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008946 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008947 }
8948 uint32_t packetSize_vkCmdWriteTimestamp = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8949 countingStream->rewind();
8950 uint32_t opcode_vkCmdWriteTimestamp = OP_vkCmdWriteTimestamp;
8951 stream->write(&opcode_vkCmdWriteTimestamp, sizeof(uint32_t));
8952 stream->write(&packetSize_vkCmdWriteTimestamp, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008953 uint64_t cgen_var_637;
8954 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_637, 1);
8955 stream->write((uint64_t*)&cgen_var_637, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008956 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008957 uint64_t cgen_var_638;
8958 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_638, 1);
8959 stream->write((uint64_t*)&cgen_var_638, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008960 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008961 mImpl->log("finish vkCmdWriteTimestamp");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008962}
8963
8964void VkEncoder::vkCmdCopyQueryPoolResults(
8965 VkCommandBuffer commandBuffer,
8966 VkQueryPool queryPool,
8967 uint32_t firstQuery,
8968 uint32_t queryCount,
8969 VkBuffer dstBuffer,
8970 VkDeviceSize dstOffset,
8971 VkDeviceSize stride,
8972 VkQueryResultFlags flags)
8973{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008974 mImpl->log("start vkCmdCopyQueryPoolResults");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008975 auto stream = mImpl->stream();
8976 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008977 auto resources = mImpl->resources();
8978 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008979 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008980 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008981 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008982 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008983 uint32_t local_queryCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008984 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008985 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008986 VkDeviceSize local_stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008987 VkQueryResultFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008988 local_commandBuffer = commandBuffer;
8989 local_queryPool = queryPool;
8990 local_firstQuery = firstQuery;
8991 local_queryCount = queryCount;
8992 local_dstBuffer = dstBuffer;
8993 local_dstOffset = dstOffset;
8994 local_stride = stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008995 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008996 countingStream->rewind();
8997 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008998 uint64_t cgen_var_639;
8999 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_639, 1);
9000 countingStream->write((uint64_t*)&cgen_var_639, 1 * 8);
9001 uint64_t cgen_var_640;
9002 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_640, 1);
9003 countingStream->write((uint64_t*)&cgen_var_640, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009004 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
9005 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009006 uint64_t cgen_var_641;
9007 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_641, 1);
9008 countingStream->write((uint64_t*)&cgen_var_641, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009009 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
9010 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
9011 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009012 }
9013 uint32_t packetSize_vkCmdCopyQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9014 countingStream->rewind();
9015 uint32_t opcode_vkCmdCopyQueryPoolResults = OP_vkCmdCopyQueryPoolResults;
9016 stream->write(&opcode_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
9017 stream->write(&packetSize_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009018 uint64_t cgen_var_642;
9019 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_642, 1);
9020 stream->write((uint64_t*)&cgen_var_642, 1 * 8);
9021 uint64_t cgen_var_643;
9022 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_643, 1);
9023 stream->write((uint64_t*)&cgen_var_643, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009024 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
9025 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009026 uint64_t cgen_var_644;
9027 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_644, 1);
9028 stream->write((uint64_t*)&cgen_var_644, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009029 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
9030 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
9031 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009032 mImpl->log("finish vkCmdCopyQueryPoolResults");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009033}
9034
9035void VkEncoder::vkCmdPushConstants(
9036 VkCommandBuffer commandBuffer,
9037 VkPipelineLayout layout,
9038 VkShaderStageFlags stageFlags,
9039 uint32_t offset,
9040 uint32_t size,
9041 const void* pValues)
9042{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009043 mImpl->log("start vkCmdPushConstants");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009044 auto stream = mImpl->stream();
9045 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009046 auto resources = mImpl->resources();
9047 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009048 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009049 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009050 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009051 VkShaderStageFlags local_stageFlags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009052 uint32_t local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009053 uint32_t local_size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009054 void* local_pValues;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009055 local_commandBuffer = commandBuffer;
9056 local_layout = layout;
9057 local_stageFlags = stageFlags;
9058 local_offset = offset;
9059 local_size = size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009060 local_pValues = nullptr;
9061 if (pValues)
9062 {
9063 local_pValues = (void*)pool->dupArray(pValues, ((size)) * sizeof(const uint8_t));
9064 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009065 countingStream->rewind();
9066 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009067 uint64_t cgen_var_645;
9068 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_645, 1);
9069 countingStream->write((uint64_t*)&cgen_var_645, 1 * 8);
9070 uint64_t cgen_var_646;
9071 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_646, 1);
9072 countingStream->write((uint64_t*)&cgen_var_646, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009073 countingStream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
9074 countingStream->write((uint32_t*)&local_offset, sizeof(uint32_t));
9075 countingStream->write((uint32_t*)&local_size, sizeof(uint32_t));
9076 countingStream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009077 }
9078 uint32_t packetSize_vkCmdPushConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9079 countingStream->rewind();
9080 uint32_t opcode_vkCmdPushConstants = OP_vkCmdPushConstants;
9081 stream->write(&opcode_vkCmdPushConstants, sizeof(uint32_t));
9082 stream->write(&packetSize_vkCmdPushConstants, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009083 uint64_t cgen_var_647;
9084 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_647, 1);
9085 stream->write((uint64_t*)&cgen_var_647, 1 * 8);
9086 uint64_t cgen_var_648;
9087 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_648, 1);
9088 stream->write((uint64_t*)&cgen_var_648, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009089 stream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
9090 stream->write((uint32_t*)&local_offset, sizeof(uint32_t));
9091 stream->write((uint32_t*)&local_size, sizeof(uint32_t));
9092 stream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009093 mImpl->log("finish vkCmdPushConstants");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009094}
9095
9096void VkEncoder::vkCmdBeginRenderPass(
9097 VkCommandBuffer commandBuffer,
9098 const VkRenderPassBeginInfo* pRenderPassBegin,
9099 VkSubpassContents contents)
9100{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009101 mImpl->log("start vkCmdBeginRenderPass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009102 auto stream = mImpl->stream();
9103 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009104 auto resources = mImpl->resources();
9105 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009106 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009107 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009108 VkRenderPassBeginInfo* local_pRenderPassBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009109 VkSubpassContents local_contents;
9110 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009111 local_pRenderPassBegin = nullptr;
9112 if (pRenderPassBegin)
9113 {
9114 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
9115 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
9116 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009117 local_contents = contents;
Lingfeng Yang62b23322018-12-24 12:45:47 -08009118 if (local_pRenderPassBegin)
9119 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009120 transform_tohost_VkRenderPassBeginInfo(mImpl->resources(), (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009121 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009122 countingStream->rewind();
9123 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009124 uint64_t cgen_var_649;
9125 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_649, 1);
9126 countingStream->write((uint64_t*)&cgen_var_649, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009127 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
9128 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009129 }
9130 uint32_t packetSize_vkCmdBeginRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9131 countingStream->rewind();
9132 uint32_t opcode_vkCmdBeginRenderPass = OP_vkCmdBeginRenderPass;
9133 stream->write(&opcode_vkCmdBeginRenderPass, sizeof(uint32_t));
9134 stream->write(&packetSize_vkCmdBeginRenderPass, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009135 uint64_t cgen_var_650;
9136 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_650, 1);
9137 stream->write((uint64_t*)&cgen_var_650, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009138 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
9139 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009140 mImpl->log("finish vkCmdBeginRenderPass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009141}
9142
9143void VkEncoder::vkCmdNextSubpass(
9144 VkCommandBuffer commandBuffer,
9145 VkSubpassContents contents)
9146{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009147 mImpl->log("start vkCmdNextSubpass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009148 auto stream = mImpl->stream();
9149 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009150 auto resources = mImpl->resources();
9151 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009152 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009153 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009154 VkSubpassContents local_contents;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009155 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009156 local_contents = contents;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009157 countingStream->rewind();
9158 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009159 uint64_t cgen_var_651;
9160 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_651, 1);
9161 countingStream->write((uint64_t*)&cgen_var_651, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009162 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009163 }
9164 uint32_t packetSize_vkCmdNextSubpass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9165 countingStream->rewind();
9166 uint32_t opcode_vkCmdNextSubpass = OP_vkCmdNextSubpass;
9167 stream->write(&opcode_vkCmdNextSubpass, sizeof(uint32_t));
9168 stream->write(&packetSize_vkCmdNextSubpass, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009169 uint64_t cgen_var_652;
9170 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_652, 1);
9171 stream->write((uint64_t*)&cgen_var_652, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009172 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009173 mImpl->log("finish vkCmdNextSubpass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009174}
9175
9176void VkEncoder::vkCmdEndRenderPass(
9177 VkCommandBuffer commandBuffer)
9178{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009179 mImpl->log("start vkCmdEndRenderPass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009180 auto stream = mImpl->stream();
9181 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009182 auto resources = mImpl->resources();
9183 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009184 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009185 VkCommandBuffer local_commandBuffer;
9186 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009187 countingStream->rewind();
9188 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009189 uint64_t cgen_var_653;
9190 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_653, 1);
9191 countingStream->write((uint64_t*)&cgen_var_653, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009192 }
9193 uint32_t packetSize_vkCmdEndRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9194 countingStream->rewind();
9195 uint32_t opcode_vkCmdEndRenderPass = OP_vkCmdEndRenderPass;
9196 stream->write(&opcode_vkCmdEndRenderPass, sizeof(uint32_t));
9197 stream->write(&packetSize_vkCmdEndRenderPass, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009198 uint64_t cgen_var_654;
9199 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_654, 1);
9200 stream->write((uint64_t*)&cgen_var_654, 1 * 8);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009201 mImpl->log("finish vkCmdEndRenderPass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009202}
9203
9204void VkEncoder::vkCmdExecuteCommands(
9205 VkCommandBuffer commandBuffer,
9206 uint32_t commandBufferCount,
9207 const VkCommandBuffer* pCommandBuffers)
9208{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009209 mImpl->log("start vkCmdExecuteCommands");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009210 auto stream = mImpl->stream();
9211 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009212 auto resources = mImpl->resources();
9213 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009214 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009215 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009216 uint32_t local_commandBufferCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009217 VkCommandBuffer* local_pCommandBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009218 local_commandBuffer = commandBuffer;
9219 local_commandBufferCount = commandBufferCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009220 local_pCommandBuffers = nullptr;
9221 if (pCommandBuffers)
9222 {
9223 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
9224 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009225 countingStream->rewind();
9226 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009227 uint64_t cgen_var_655;
9228 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_655, 1);
9229 countingStream->write((uint64_t*)&cgen_var_655, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009230 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009231 if (((commandBufferCount)))
9232 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009233 uint64_t* cgen_var_656;
9234 countingStream->alloc((void**)&cgen_var_656, ((commandBufferCount)) * 8);
9235 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_656, ((commandBufferCount)));
9236 countingStream->write((uint64_t*)cgen_var_656, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08009237 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009238 }
9239 uint32_t packetSize_vkCmdExecuteCommands = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9240 countingStream->rewind();
9241 uint32_t opcode_vkCmdExecuteCommands = OP_vkCmdExecuteCommands;
9242 stream->write(&opcode_vkCmdExecuteCommands, sizeof(uint32_t));
9243 stream->write(&packetSize_vkCmdExecuteCommands, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009244 uint64_t cgen_var_657;
9245 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_657, 1);
9246 stream->write((uint64_t*)&cgen_var_657, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009247 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009248 if (((commandBufferCount)))
9249 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009250 uint64_t* cgen_var_658;
9251 stream->alloc((void**)&cgen_var_658, ((commandBufferCount)) * 8);
9252 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_658, ((commandBufferCount)));
9253 stream->write((uint64_t*)cgen_var_658, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08009254 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009255 mImpl->log("finish vkCmdExecuteCommands");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009256}
9257
9258#endif
9259#ifdef VK_VERSION_1_1
9260VkResult VkEncoder::vkEnumerateInstanceVersion(
9261 uint32_t* pApiVersion)
9262{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009263 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08009264 vkEnumerateInstanceVersion_VkResult_return = mImpl->resources()->on_vkEnumerateInstanceVersion(this, VK_SUCCESS, pApiVersion);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009265 mImpl->log("finish vkEnumerateInstanceVersion");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009266 return vkEnumerateInstanceVersion_VkResult_return;
9267}
9268
9269VkResult VkEncoder::vkBindBufferMemory2(
9270 VkDevice device,
9271 uint32_t bindInfoCount,
9272 const VkBindBufferMemoryInfo* pBindInfos)
9273{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009274 mImpl->log("start vkBindBufferMemory2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009275 auto stream = mImpl->stream();
9276 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009277 auto resources = mImpl->resources();
9278 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009279 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009280 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009281 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009282 VkBindBufferMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009283 local_device = device;
9284 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009285 local_pBindInfos = nullptr;
9286 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009287 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009288 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009289 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9290 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009291 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
9292 }
9293 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009294 if (local_pBindInfos)
9295 {
9296 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9297 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009298 transform_tohost_VkBindBufferMemoryInfo(mImpl->resources(), (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009299 }
9300 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009301 countingStream->rewind();
9302 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009303 uint64_t cgen_var_659;
9304 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_659, 1);
9305 countingStream->write((uint64_t*)&cgen_var_659, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009306 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
9307 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9308 {
9309 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009310 }
9311 }
9312 uint32_t packetSize_vkBindBufferMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9313 countingStream->rewind();
9314 uint32_t opcode_vkBindBufferMemory2 = OP_vkBindBufferMemory2;
9315 stream->write(&opcode_vkBindBufferMemory2, sizeof(uint32_t));
9316 stream->write(&packetSize_vkBindBufferMemory2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009317 uint64_t cgen_var_660;
9318 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_660, 1);
9319 stream->write((uint64_t*)&cgen_var_660, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009320 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009321 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9322 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009323 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009324 }
9325 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
9326 stream->read(&vkBindBufferMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009327 countingStream->clearPool();
9328 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009329 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009330 mImpl->log("finish vkBindBufferMemory2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009331 return vkBindBufferMemory2_VkResult_return;
9332}
9333
9334VkResult VkEncoder::vkBindImageMemory2(
9335 VkDevice device,
9336 uint32_t bindInfoCount,
9337 const VkBindImageMemoryInfo* pBindInfos)
9338{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009339 mImpl->log("start vkBindImageMemory2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009340 auto stream = mImpl->stream();
9341 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009342 auto resources = mImpl->resources();
9343 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009344 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009345 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009346 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009347 VkBindImageMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009348 local_device = device;
9349 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009350 local_pBindInfos = nullptr;
9351 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009352 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009353 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009354 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9355 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009356 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
9357 }
9358 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009359 if (local_pBindInfos)
9360 {
9361 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9362 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009363 transform_tohost_VkBindImageMemoryInfo(mImpl->resources(), (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009364 }
9365 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009366 countingStream->rewind();
9367 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009368 uint64_t cgen_var_661;
9369 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_661, 1);
9370 countingStream->write((uint64_t*)&cgen_var_661, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009371 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
9372 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9373 {
9374 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009375 }
9376 }
9377 uint32_t packetSize_vkBindImageMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9378 countingStream->rewind();
9379 uint32_t opcode_vkBindImageMemory2 = OP_vkBindImageMemory2;
9380 stream->write(&opcode_vkBindImageMemory2, sizeof(uint32_t));
9381 stream->write(&packetSize_vkBindImageMemory2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009382 uint64_t cgen_var_662;
9383 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_662, 1);
9384 stream->write((uint64_t*)&cgen_var_662, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009385 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009386 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9387 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009388 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009389 }
9390 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
9391 stream->read(&vkBindImageMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009392 countingStream->clearPool();
9393 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009394 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009395 mImpl->log("finish vkBindImageMemory2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009396 return vkBindImageMemory2_VkResult_return;
9397}
9398
9399void VkEncoder::vkGetDeviceGroupPeerMemoryFeatures(
9400 VkDevice device,
9401 uint32_t heapIndex,
9402 uint32_t localDeviceIndex,
9403 uint32_t remoteDeviceIndex,
9404 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
9405{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009406 mImpl->log("start vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009407 auto stream = mImpl->stream();
9408 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009409 auto resources = mImpl->resources();
9410 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009411 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009412 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009413 uint32_t local_heapIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009414 uint32_t local_localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009415 uint32_t local_remoteDeviceIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009416 local_device = device;
9417 local_heapIndex = heapIndex;
9418 local_localDeviceIndex = localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009419 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009420 countingStream->rewind();
9421 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009422 uint64_t cgen_var_663;
9423 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_663, 1);
9424 countingStream->write((uint64_t*)&cgen_var_663, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009425 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
9426 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
9427 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009428 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
9429 }
9430 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9431 countingStream->rewind();
9432 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeatures = OP_vkGetDeviceGroupPeerMemoryFeatures;
9433 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
9434 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009435 uint64_t cgen_var_664;
9436 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_664, 1);
9437 stream->write((uint64_t*)&cgen_var_664, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009438 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
9439 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
9440 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009441 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
9442 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009443 mImpl->log("finish vkGetDeviceGroupPeerMemoryFeatures");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009444}
9445
9446void VkEncoder::vkCmdSetDeviceMask(
9447 VkCommandBuffer commandBuffer,
9448 uint32_t deviceMask)
9449{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009450 mImpl->log("start vkCmdSetDeviceMask");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009451 auto stream = mImpl->stream();
9452 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009453 auto resources = mImpl->resources();
9454 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009455 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009456 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009457 uint32_t local_deviceMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009458 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009459 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009460 countingStream->rewind();
9461 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009462 uint64_t cgen_var_665;
9463 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_665, 1);
9464 countingStream->write((uint64_t*)&cgen_var_665, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009465 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009466 }
9467 uint32_t packetSize_vkCmdSetDeviceMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9468 countingStream->rewind();
9469 uint32_t opcode_vkCmdSetDeviceMask = OP_vkCmdSetDeviceMask;
9470 stream->write(&opcode_vkCmdSetDeviceMask, sizeof(uint32_t));
9471 stream->write(&packetSize_vkCmdSetDeviceMask, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009472 uint64_t cgen_var_666;
9473 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_666, 1);
9474 stream->write((uint64_t*)&cgen_var_666, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009475 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009476 mImpl->log("finish vkCmdSetDeviceMask");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009477}
9478
9479void VkEncoder::vkCmdDispatchBase(
9480 VkCommandBuffer commandBuffer,
9481 uint32_t baseGroupX,
9482 uint32_t baseGroupY,
9483 uint32_t baseGroupZ,
9484 uint32_t groupCountX,
9485 uint32_t groupCountY,
9486 uint32_t groupCountZ)
9487{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009488 mImpl->log("start vkCmdDispatchBase");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009489 auto stream = mImpl->stream();
9490 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009491 auto resources = mImpl->resources();
9492 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009493 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009494 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009495 uint32_t local_baseGroupX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009496 uint32_t local_baseGroupY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009497 uint32_t local_baseGroupZ;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009498 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009499 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009500 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009501 local_commandBuffer = commandBuffer;
9502 local_baseGroupX = baseGroupX;
9503 local_baseGroupY = baseGroupY;
9504 local_baseGroupZ = baseGroupZ;
9505 local_groupCountX = groupCountX;
9506 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009507 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009508 countingStream->rewind();
9509 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009510 uint64_t cgen_var_667;
9511 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_667, 1);
9512 countingStream->write((uint64_t*)&cgen_var_667, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009513 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
9514 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
9515 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
9516 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
9517 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
9518 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009519 }
9520 uint32_t packetSize_vkCmdDispatchBase = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9521 countingStream->rewind();
9522 uint32_t opcode_vkCmdDispatchBase = OP_vkCmdDispatchBase;
9523 stream->write(&opcode_vkCmdDispatchBase, sizeof(uint32_t));
9524 stream->write(&packetSize_vkCmdDispatchBase, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009525 uint64_t cgen_var_668;
9526 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_668, 1);
9527 stream->write((uint64_t*)&cgen_var_668, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009528 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
9529 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
9530 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
9531 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
9532 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
9533 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009534 mImpl->log("finish vkCmdDispatchBase");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009535}
9536
9537VkResult VkEncoder::vkEnumeratePhysicalDeviceGroups(
9538 VkInstance instance,
9539 uint32_t* pPhysicalDeviceGroupCount,
9540 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
9541{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009542 mImpl->log("start vkEnumeratePhysicalDeviceGroups");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009543 auto stream = mImpl->stream();
9544 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009545 auto resources = mImpl->resources();
9546 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009547 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009548 VkInstance local_instance;
9549 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009550 countingStream->rewind();
9551 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009552 uint64_t cgen_var_669;
9553 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_669, 1);
9554 countingStream->write((uint64_t*)&cgen_var_669, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009555 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009556 uint64_t cgen_var_670 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
9557 countingStream->putBe64(cgen_var_670);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009558 if (pPhysicalDeviceGroupCount)
9559 {
9560 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
9561 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009562 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009563 uint64_t cgen_var_671 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
9564 countingStream->putBe64(cgen_var_671);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009565 if (pPhysicalDeviceGroupProperties)
9566 {
9567 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
9568 {
9569 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
9570 }
9571 }
9572 }
9573 uint32_t packetSize_vkEnumeratePhysicalDeviceGroups = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9574 countingStream->rewind();
9575 uint32_t opcode_vkEnumeratePhysicalDeviceGroups = OP_vkEnumeratePhysicalDeviceGroups;
9576 stream->write(&opcode_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
9577 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009578 uint64_t cgen_var_672;
9579 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_672, 1);
9580 stream->write((uint64_t*)&cgen_var_672, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009581 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009582 uint64_t cgen_var_673 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
9583 stream->putBe64(cgen_var_673);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009584 if (pPhysicalDeviceGroupCount)
9585 {
9586 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
9587 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009588 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009589 uint64_t cgen_var_674 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
9590 stream->putBe64(cgen_var_674);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009591 if (pPhysicalDeviceGroupProperties)
9592 {
9593 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
9594 {
9595 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
9596 }
9597 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009598 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009599 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009600 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009601 if (pPhysicalDeviceGroupCount)
9602 {
9603 if (!(check_pPhysicalDeviceGroupCount))
9604 {
9605 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
9606 }
9607 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
9608 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009609 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009610 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009611 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009612 if (pPhysicalDeviceGroupProperties)
9613 {
9614 if (!(check_pPhysicalDeviceGroupProperties))
9615 {
9616 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
9617 }
9618 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
9619 {
9620 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
9621 }
9622 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08009623 if (pPhysicalDeviceGroupProperties)
9624 {
9625 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
9626 {
9627 transform_fromhost_VkPhysicalDeviceGroupProperties(mImpl->resources(), (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
9628 }
9629 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009630 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
9631 stream->read(&vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009632 countingStream->clearPool();
9633 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009634 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009635 mImpl->log("finish vkEnumeratePhysicalDeviceGroups");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009636 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
9637}
9638
9639void VkEncoder::vkGetImageMemoryRequirements2(
9640 VkDevice device,
9641 const VkImageMemoryRequirementsInfo2* pInfo,
9642 VkMemoryRequirements2* pMemoryRequirements)
9643{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009644 mImpl->log("start vkGetImageMemoryRequirements2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009645 auto stream = mImpl->stream();
9646 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009647 auto resources = mImpl->resources();
9648 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009649 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009650 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009651 VkImageMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009652 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009653 local_pInfo = nullptr;
9654 if (pInfo)
9655 {
9656 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
9657 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
9658 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009659 if (local_pInfo)
9660 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009661 transform_tohost_VkImageMemoryRequirementsInfo2(mImpl->resources(), (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009662 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009663 countingStream->rewind();
9664 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009665 uint64_t cgen_var_677;
9666 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_677, 1);
9667 countingStream->write((uint64_t*)&cgen_var_677, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009668 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009669 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
9670 }
9671 uint32_t packetSize_vkGetImageMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9672 countingStream->rewind();
9673 uint32_t opcode_vkGetImageMemoryRequirements2 = OP_vkGetImageMemoryRequirements2;
9674 stream->write(&opcode_vkGetImageMemoryRequirements2, sizeof(uint32_t));
9675 stream->write(&packetSize_vkGetImageMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009676 uint64_t cgen_var_678;
9677 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_678, 1);
9678 stream->write((uint64_t*)&cgen_var_678, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009679 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009680 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
9681 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -08009682 if (pMemoryRequirements)
9683 {
9684 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
9685 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009686 mImpl->log("finish vkGetImageMemoryRequirements2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009687}
9688
9689void VkEncoder::vkGetBufferMemoryRequirements2(
9690 VkDevice device,
9691 const VkBufferMemoryRequirementsInfo2* pInfo,
9692 VkMemoryRequirements2* pMemoryRequirements)
9693{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009694 mImpl->log("start vkGetBufferMemoryRequirements2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009695 auto stream = mImpl->stream();
9696 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009697 auto resources = mImpl->resources();
9698 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009699 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009700 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009701 VkBufferMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009702 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009703 local_pInfo = nullptr;
9704 if (pInfo)
9705 {
9706 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
9707 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
9708 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009709 if (local_pInfo)
9710 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009711 transform_tohost_VkBufferMemoryRequirementsInfo2(mImpl->resources(), (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009712 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009713 countingStream->rewind();
9714 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009715 uint64_t cgen_var_679;
9716 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_679, 1);
9717 countingStream->write((uint64_t*)&cgen_var_679, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009718 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009719 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
9720 }
9721 uint32_t packetSize_vkGetBufferMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9722 countingStream->rewind();
9723 uint32_t opcode_vkGetBufferMemoryRequirements2 = OP_vkGetBufferMemoryRequirements2;
9724 stream->write(&opcode_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
9725 stream->write(&packetSize_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009726 uint64_t cgen_var_680;
9727 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_680, 1);
9728 stream->write((uint64_t*)&cgen_var_680, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009729 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009730 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
9731 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -08009732 if (pMemoryRequirements)
9733 {
9734 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
9735 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009736 mImpl->log("finish vkGetBufferMemoryRequirements2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009737}
9738
9739void VkEncoder::vkGetImageSparseMemoryRequirements2(
9740 VkDevice device,
9741 const VkImageSparseMemoryRequirementsInfo2* pInfo,
9742 uint32_t* pSparseMemoryRequirementCount,
9743 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
9744{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009745 mImpl->log("start vkGetImageSparseMemoryRequirements2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009746 auto stream = mImpl->stream();
9747 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009748 auto resources = mImpl->resources();
9749 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009750 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009751 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009752 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009753 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009754 local_pInfo = nullptr;
9755 if (pInfo)
9756 {
9757 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
9758 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
9759 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009760 if (local_pInfo)
9761 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009762 transform_tohost_VkImageSparseMemoryRequirementsInfo2(mImpl->resources(), (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009763 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009764 countingStream->rewind();
9765 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009766 uint64_t cgen_var_681;
9767 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_681, 1);
9768 countingStream->write((uint64_t*)&cgen_var_681, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009769 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009770 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009771 uint64_t cgen_var_682 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
9772 countingStream->putBe64(cgen_var_682);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009773 if (pSparseMemoryRequirementCount)
9774 {
9775 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
9776 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009777 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009778 uint64_t cgen_var_683 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
9779 countingStream->putBe64(cgen_var_683);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009780 if (pSparseMemoryRequirements)
9781 {
9782 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
9783 {
9784 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
9785 }
9786 }
9787 }
9788 uint32_t packetSize_vkGetImageSparseMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9789 countingStream->rewind();
9790 uint32_t opcode_vkGetImageSparseMemoryRequirements2 = OP_vkGetImageSparseMemoryRequirements2;
9791 stream->write(&opcode_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
9792 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009793 uint64_t cgen_var_684;
9794 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_684, 1);
9795 stream->write((uint64_t*)&cgen_var_684, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009796 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009797 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009798 uint64_t cgen_var_685 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
9799 stream->putBe64(cgen_var_685);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009800 if (pSparseMemoryRequirementCount)
9801 {
9802 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
9803 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009804 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009805 uint64_t cgen_var_686 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
9806 stream->putBe64(cgen_var_686);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009807 if (pSparseMemoryRequirements)
9808 {
9809 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
9810 {
9811 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
9812 }
9813 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009814 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009815 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009816 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009817 if (pSparseMemoryRequirementCount)
9818 {
9819 if (!(check_pSparseMemoryRequirementCount))
9820 {
9821 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
9822 }
9823 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
9824 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009825 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009826 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009827 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009828 if (pSparseMemoryRequirements)
9829 {
9830 if (!(check_pSparseMemoryRequirements))
9831 {
9832 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
9833 }
9834 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
9835 {
9836 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
9837 }
9838 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08009839 if (pSparseMemoryRequirements)
9840 {
9841 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
9842 {
9843 transform_fromhost_VkSparseImageMemoryRequirements2(mImpl->resources(), (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
9844 }
9845 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009846 mImpl->log("finish vkGetImageSparseMemoryRequirements2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009847}
9848
9849void VkEncoder::vkGetPhysicalDeviceFeatures2(
9850 VkPhysicalDevice physicalDevice,
9851 VkPhysicalDeviceFeatures2* pFeatures)
9852{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009853 mImpl->log("start vkGetPhysicalDeviceFeatures2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009854 auto stream = mImpl->stream();
9855 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009856 auto resources = mImpl->resources();
9857 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009858 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009859 VkPhysicalDevice local_physicalDevice;
9860 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009861 countingStream->rewind();
9862 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009863 uint64_t cgen_var_689;
9864 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_689, 1);
9865 countingStream->write((uint64_t*)&cgen_var_689, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009866 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
9867 }
9868 uint32_t packetSize_vkGetPhysicalDeviceFeatures2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9869 countingStream->rewind();
9870 uint32_t opcode_vkGetPhysicalDeviceFeatures2 = OP_vkGetPhysicalDeviceFeatures2;
9871 stream->write(&opcode_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
9872 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009873 uint64_t cgen_var_690;
9874 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_690, 1);
9875 stream->write((uint64_t*)&cgen_var_690, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009876 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
9877 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -08009878 if (pFeatures)
9879 {
9880 transform_fromhost_VkPhysicalDeviceFeatures2(mImpl->resources(), (VkPhysicalDeviceFeatures2*)(pFeatures));
9881 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009882 mImpl->log("finish vkGetPhysicalDeviceFeatures2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009883}
9884
9885void VkEncoder::vkGetPhysicalDeviceProperties2(
9886 VkPhysicalDevice physicalDevice,
9887 VkPhysicalDeviceProperties2* pProperties)
9888{
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009889 mImpl->log("start vkGetPhysicalDeviceProperties2");
9890 auto stream = mImpl->stream();
9891 auto countingStream = mImpl->countingStream();
9892 auto resources = mImpl->resources();
9893 auto pool = mImpl->pool();
9894 stream->setHandleMapping(resources->unwrapMapping());
9895 VkPhysicalDevice local_physicalDevice;
9896 local_physicalDevice = physicalDevice;
9897 countingStream->rewind();
9898 {
9899 uint64_t cgen_var_691;
9900 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_691, 1);
9901 countingStream->write((uint64_t*)&cgen_var_691, 1 * 8);
9902 marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
9903 }
9904 uint32_t packetSize_vkGetPhysicalDeviceProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9905 countingStream->rewind();
9906 uint32_t opcode_vkGetPhysicalDeviceProperties2 = OP_vkGetPhysicalDeviceProperties2;
9907 stream->write(&opcode_vkGetPhysicalDeviceProperties2, sizeof(uint32_t));
9908 stream->write(&packetSize_vkGetPhysicalDeviceProperties2, sizeof(uint32_t));
9909 uint64_t cgen_var_692;
9910 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_692, 1);
9911 stream->write((uint64_t*)&cgen_var_692, 1 * 8);
9912 marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
9913 unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
9914 if (pProperties)
9915 {
9916 transform_fromhost_VkPhysicalDeviceProperties2(mImpl->resources(), (VkPhysicalDeviceProperties2*)(pProperties));
9917 }
9918 mImpl->log("finish vkGetPhysicalDeviceProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009919}
9920
9921void VkEncoder::vkGetPhysicalDeviceFormatProperties2(
9922 VkPhysicalDevice physicalDevice,
9923 VkFormat format,
9924 VkFormatProperties2* pFormatProperties)
9925{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009926 mImpl->log("start vkGetPhysicalDeviceFormatProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009927 auto stream = mImpl->stream();
9928 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009929 auto resources = mImpl->resources();
9930 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009931 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009932 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009933 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009934 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009935 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009936 countingStream->rewind();
9937 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009938 uint64_t cgen_var_693;
9939 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_693, 1);
9940 countingStream->write((uint64_t*)&cgen_var_693, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009941 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009942 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
9943 }
9944 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9945 countingStream->rewind();
9946 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2 = OP_vkGetPhysicalDeviceFormatProperties2;
9947 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
9948 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009949 uint64_t cgen_var_694;
9950 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_694, 1);
9951 stream->write((uint64_t*)&cgen_var_694, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009952 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009953 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
9954 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -08009955 if (pFormatProperties)
9956 {
9957 transform_fromhost_VkFormatProperties2(mImpl->resources(), (VkFormatProperties2*)(pFormatProperties));
9958 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009959 mImpl->log("finish vkGetPhysicalDeviceFormatProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009960}
9961
9962VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2(
9963 VkPhysicalDevice physicalDevice,
9964 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
9965 VkImageFormatProperties2* pImageFormatProperties)
9966{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009967 mImpl->log("start vkGetPhysicalDeviceImageFormatProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009968 auto stream = mImpl->stream();
9969 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009970 auto resources = mImpl->resources();
9971 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009972 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009973 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009974 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009975 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009976 local_pImageFormatInfo = nullptr;
9977 if (pImageFormatInfo)
9978 {
9979 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
9980 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
9981 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009982 if (local_pImageFormatInfo)
9983 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009984 transform_tohost_VkPhysicalDeviceImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009985 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009986 countingStream->rewind();
9987 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009988 uint64_t cgen_var_695;
9989 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_695, 1);
9990 countingStream->write((uint64_t*)&cgen_var_695, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009991 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009992 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
9993 }
9994 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9995 countingStream->rewind();
9996 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2 = OP_vkGetPhysicalDeviceImageFormatProperties2;
9997 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
9998 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009999 uint64_t cgen_var_696;
10000 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_696, 1);
10001 stream->write((uint64_t*)&cgen_var_696, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010002 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010003 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
10004 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010005 if (pImageFormatProperties)
10006 {
10007 transform_fromhost_VkImageFormatProperties2(mImpl->resources(), (VkImageFormatProperties2*)(pImageFormatProperties));
10008 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010009 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
10010 stream->read(&vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010011 countingStream->clearPool();
10012 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010013 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010014 mImpl->log("finish vkGetPhysicalDeviceImageFormatProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010015 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
10016}
10017
10018void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2(
10019 VkPhysicalDevice physicalDevice,
10020 uint32_t* pQueueFamilyPropertyCount,
10021 VkQueueFamilyProperties2* pQueueFamilyProperties)
10022{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010023 mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010024 auto stream = mImpl->stream();
10025 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010026 auto resources = mImpl->resources();
10027 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010028 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010029 VkPhysicalDevice local_physicalDevice;
10030 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010031 countingStream->rewind();
10032 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010033 uint64_t cgen_var_697;
10034 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_697, 1);
10035 countingStream->write((uint64_t*)&cgen_var_697, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010036 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010037 uint64_t cgen_var_698 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
10038 countingStream->putBe64(cgen_var_698);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010039 if (pQueueFamilyPropertyCount)
10040 {
10041 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
10042 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010043 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010044 uint64_t cgen_var_699 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
10045 countingStream->putBe64(cgen_var_699);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010046 if (pQueueFamilyProperties)
10047 {
10048 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
10049 {
10050 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
10051 }
10052 }
10053 }
10054 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10055 countingStream->rewind();
10056 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2 = OP_vkGetPhysicalDeviceQueueFamilyProperties2;
10057 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
10058 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010059 uint64_t cgen_var_700;
10060 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_700, 1);
10061 stream->write((uint64_t*)&cgen_var_700, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010062 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010063 uint64_t cgen_var_701 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
10064 stream->putBe64(cgen_var_701);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010065 if (pQueueFamilyPropertyCount)
10066 {
10067 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
10068 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010069 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010070 uint64_t cgen_var_702 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
10071 stream->putBe64(cgen_var_702);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010072 if (pQueueFamilyProperties)
10073 {
10074 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
10075 {
10076 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
10077 }
10078 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010079 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010080 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010081 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010082 if (pQueueFamilyPropertyCount)
10083 {
10084 if (!(check_pQueueFamilyPropertyCount))
10085 {
10086 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
10087 }
10088 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
10089 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010090 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010091 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010092 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010093 if (pQueueFamilyProperties)
10094 {
10095 if (!(check_pQueueFamilyProperties))
10096 {
10097 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
10098 }
10099 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
10100 {
10101 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
10102 }
10103 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080010104 if (pQueueFamilyProperties)
10105 {
10106 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
10107 {
10108 transform_fromhost_VkQueueFamilyProperties2(mImpl->resources(), (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
10109 }
10110 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010111 mImpl->log("finish vkGetPhysicalDeviceQueueFamilyProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010112}
10113
10114void VkEncoder::vkGetPhysicalDeviceMemoryProperties2(
10115 VkPhysicalDevice physicalDevice,
10116 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
10117{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010118 mImpl->log("start vkGetPhysicalDeviceMemoryProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010119 auto stream = mImpl->stream();
10120 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010121 auto resources = mImpl->resources();
10122 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010123 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010124 VkPhysicalDevice local_physicalDevice;
10125 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010126 countingStream->rewind();
10127 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010128 uint64_t cgen_var_705;
10129 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_705, 1);
10130 countingStream->write((uint64_t*)&cgen_var_705, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010131 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
10132 }
10133 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10134 countingStream->rewind();
10135 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2 = OP_vkGetPhysicalDeviceMemoryProperties2;
10136 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
10137 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010138 uint64_t cgen_var_706;
10139 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_706, 1);
10140 stream->write((uint64_t*)&cgen_var_706, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010141 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
10142 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010143 if (pMemoryProperties)
10144 {
10145 transform_fromhost_VkPhysicalDeviceMemoryProperties2(mImpl->resources(), (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
10146 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010147 mImpl->resources()->on_vkGetPhysicalDeviceMemoryProperties2(this, physicalDevice, pMemoryProperties);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010148 mImpl->log("finish vkGetPhysicalDeviceMemoryProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010149}
10150
10151void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2(
10152 VkPhysicalDevice physicalDevice,
10153 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
10154 uint32_t* pPropertyCount,
10155 VkSparseImageFormatProperties2* pProperties)
10156{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010157 mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010158 auto stream = mImpl->stream();
10159 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010160 auto resources = mImpl->resources();
10161 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010162 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010163 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010164 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010165 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010166 local_pFormatInfo = nullptr;
10167 if (pFormatInfo)
10168 {
10169 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
10170 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
10171 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010172 if (local_pFormatInfo)
10173 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010174 transform_tohost_VkPhysicalDeviceSparseImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010175 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010176 countingStream->rewind();
10177 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010178 uint64_t cgen_var_707;
10179 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_707, 1);
10180 countingStream->write((uint64_t*)&cgen_var_707, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010181 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010182 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010183 uint64_t cgen_var_708 = (uint64_t)(uintptr_t)pPropertyCount;
10184 countingStream->putBe64(cgen_var_708);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010185 if (pPropertyCount)
10186 {
10187 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10188 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010189 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010190 uint64_t cgen_var_709 = (uint64_t)(uintptr_t)pProperties;
10191 countingStream->putBe64(cgen_var_709);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010192 if (pProperties)
10193 {
10194 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10195 {
10196 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
10197 }
10198 }
10199 }
10200 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10201 countingStream->rewind();
10202 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2 = OP_vkGetPhysicalDeviceSparseImageFormatProperties2;
10203 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
10204 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010205 uint64_t cgen_var_710;
10206 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_710, 1);
10207 stream->write((uint64_t*)&cgen_var_710, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010208 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010209 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010210 uint64_t cgen_var_711 = (uint64_t)(uintptr_t)pPropertyCount;
10211 stream->putBe64(cgen_var_711);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010212 if (pPropertyCount)
10213 {
10214 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10215 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010216 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010217 uint64_t cgen_var_712 = (uint64_t)(uintptr_t)pProperties;
10218 stream->putBe64(cgen_var_712);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010219 if (pProperties)
10220 {
10221 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10222 {
10223 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
10224 }
10225 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010226 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010227 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010228 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010229 if (pPropertyCount)
10230 {
10231 if (!(check_pPropertyCount))
10232 {
10233 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
10234 }
10235 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
10236 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010237 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010238 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010239 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010240 if (pProperties)
10241 {
10242 if (!(check_pProperties))
10243 {
10244 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
10245 }
10246 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10247 {
10248 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
10249 }
10250 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080010251 if (pProperties)
10252 {
10253 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10254 {
10255 transform_fromhost_VkSparseImageFormatProperties2(mImpl->resources(), (VkSparseImageFormatProperties2*)(pProperties + i));
10256 }
10257 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010258 mImpl->log("finish vkGetPhysicalDeviceSparseImageFormatProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010259}
10260
10261void VkEncoder::vkTrimCommandPool(
10262 VkDevice device,
10263 VkCommandPool commandPool,
10264 VkCommandPoolTrimFlags flags)
10265{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010266 mImpl->log("start vkTrimCommandPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010267 auto stream = mImpl->stream();
10268 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010269 auto resources = mImpl->resources();
10270 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010271 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010272 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010273 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010274 VkCommandPoolTrimFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010275 local_device = device;
10276 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010277 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010278 countingStream->rewind();
10279 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010280 uint64_t cgen_var_715;
10281 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_715, 1);
10282 countingStream->write((uint64_t*)&cgen_var_715, 1 * 8);
10283 uint64_t cgen_var_716;
10284 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_716, 1);
10285 countingStream->write((uint64_t*)&cgen_var_716, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010286 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010287 }
10288 uint32_t packetSize_vkTrimCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10289 countingStream->rewind();
10290 uint32_t opcode_vkTrimCommandPool = OP_vkTrimCommandPool;
10291 stream->write(&opcode_vkTrimCommandPool, sizeof(uint32_t));
10292 stream->write(&packetSize_vkTrimCommandPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010293 uint64_t cgen_var_717;
10294 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_717, 1);
10295 stream->write((uint64_t*)&cgen_var_717, 1 * 8);
10296 uint64_t cgen_var_718;
10297 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_718, 1);
10298 stream->write((uint64_t*)&cgen_var_718, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010299 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010300 mImpl->log("finish vkTrimCommandPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010301}
10302
10303void VkEncoder::vkGetDeviceQueue2(
10304 VkDevice device,
10305 const VkDeviceQueueInfo2* pQueueInfo,
10306 VkQueue* pQueue)
10307{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010308 mImpl->log("start vkGetDeviceQueue2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010309 auto stream = mImpl->stream();
10310 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010311 auto resources = mImpl->resources();
10312 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010313 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010314 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010315 VkDeviceQueueInfo2* local_pQueueInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010316 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010317 local_pQueueInfo = nullptr;
10318 if (pQueueInfo)
10319 {
10320 local_pQueueInfo = (VkDeviceQueueInfo2*)pool->alloc(sizeof(const VkDeviceQueueInfo2));
10321 deepcopy_VkDeviceQueueInfo2(pool, pQueueInfo, (VkDeviceQueueInfo2*)(local_pQueueInfo));
10322 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010323 if (local_pQueueInfo)
10324 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010325 transform_tohost_VkDeviceQueueInfo2(mImpl->resources(), (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010326 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010327 countingStream->rewind();
10328 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010329 uint64_t cgen_var_719;
10330 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_719, 1);
10331 countingStream->write((uint64_t*)&cgen_var_719, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010332 marshal_VkDeviceQueueInfo2(countingStream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010333 uint64_t cgen_var_720;
10334 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_720, 1);
10335 countingStream->write((uint64_t*)&cgen_var_720, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010336 }
10337 uint32_t packetSize_vkGetDeviceQueue2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10338 countingStream->rewind();
10339 uint32_t opcode_vkGetDeviceQueue2 = OP_vkGetDeviceQueue2;
10340 stream->write(&opcode_vkGetDeviceQueue2, sizeof(uint32_t));
10341 stream->write(&packetSize_vkGetDeviceQueue2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010342 uint64_t cgen_var_721;
10343 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_721, 1);
10344 stream->write((uint64_t*)&cgen_var_721, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010345 marshal_VkDeviceQueueInfo2(stream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -080010346 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010347 uint64_t cgen_var_722;
10348 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_722, 1);
10349 stream->write((uint64_t*)&cgen_var_722, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010350 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010351 uint64_t cgen_var_723;
10352 stream->read((uint64_t*)&cgen_var_723, 8);
10353 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_723, (VkQueue*)pQueue, 1);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010354 mImpl->log("finish vkGetDeviceQueue2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010355}
10356
10357VkResult VkEncoder::vkCreateSamplerYcbcrConversion(
10358 VkDevice device,
10359 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
10360 const VkAllocationCallbacks* pAllocator,
10361 VkSamplerYcbcrConversion* pYcbcrConversion)
10362{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010363 mImpl->log("start vkCreateSamplerYcbcrConversion");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010364 auto stream = mImpl->stream();
10365 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010366 auto resources = mImpl->resources();
10367 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010368 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010369 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010370 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010371 VkAllocationCallbacks* local_pAllocator;
10372 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010373 local_pCreateInfo = nullptr;
10374 if (pCreateInfo)
10375 {
10376 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
10377 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
10378 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010379 local_pAllocator = nullptr;
10380 if (pAllocator)
10381 {
10382 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10383 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10384 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010385 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010386 if (local_pCreateInfo)
10387 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010388 transform_tohost_VkSamplerYcbcrConversionCreateInfo(mImpl->resources(), (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010389 }
10390 if (local_pAllocator)
10391 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010392 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010393 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010394 countingStream->rewind();
10395 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010396 uint64_t cgen_var_724;
10397 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_724, 1);
10398 countingStream->write((uint64_t*)&cgen_var_724, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010399 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010400 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010401 uint64_t cgen_var_725 = (uint64_t)(uintptr_t)local_pAllocator;
10402 countingStream->putBe64(cgen_var_725);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010403 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010404 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010405 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010406 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010407 uint64_t cgen_var_726;
10408 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_726, 1);
10409 countingStream->write((uint64_t*)&cgen_var_726, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010410 }
10411 uint32_t packetSize_vkCreateSamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10412 countingStream->rewind();
10413 uint32_t opcode_vkCreateSamplerYcbcrConversion = OP_vkCreateSamplerYcbcrConversion;
10414 stream->write(&opcode_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
10415 stream->write(&packetSize_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010416 uint64_t cgen_var_727;
10417 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_727, 1);
10418 stream->write((uint64_t*)&cgen_var_727, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010419 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010420 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010421 uint64_t cgen_var_728 = (uint64_t)(uintptr_t)local_pAllocator;
10422 stream->putBe64(cgen_var_728);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010423 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010424 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010425 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010426 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010427 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010428 uint64_t cgen_var_729;
10429 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_729, 1);
10430 stream->write((uint64_t*)&cgen_var_729, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010431 stream->setHandleMapping(resources->unwrapMapping());
10432 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010433 uint64_t cgen_var_730;
10434 stream->read((uint64_t*)&cgen_var_730, 8);
10435 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_730, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010436 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010437 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
10438 stream->read(&vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010439 countingStream->clearPool();
10440 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010441 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010442 mImpl->log("finish vkCreateSamplerYcbcrConversion");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010443 return vkCreateSamplerYcbcrConversion_VkResult_return;
10444}
10445
10446void VkEncoder::vkDestroySamplerYcbcrConversion(
10447 VkDevice device,
10448 VkSamplerYcbcrConversion ycbcrConversion,
10449 const VkAllocationCallbacks* pAllocator)
10450{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010451 mImpl->log("start vkDestroySamplerYcbcrConversion");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010452 auto stream = mImpl->stream();
10453 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010454 auto resources = mImpl->resources();
10455 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010456 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010457 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010458 VkSamplerYcbcrConversion local_ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010459 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010460 local_device = device;
10461 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010462 local_pAllocator = nullptr;
10463 if (pAllocator)
10464 {
10465 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10466 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10467 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010468 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010469 if (local_pAllocator)
10470 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010471 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010472 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010473 countingStream->rewind();
10474 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010475 uint64_t cgen_var_731;
10476 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_731, 1);
10477 countingStream->write((uint64_t*)&cgen_var_731, 1 * 8);
10478 uint64_t cgen_var_732;
10479 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_732, 1);
10480 countingStream->write((uint64_t*)&cgen_var_732, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010481 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010482 uint64_t cgen_var_733 = (uint64_t)(uintptr_t)local_pAllocator;
10483 countingStream->putBe64(cgen_var_733);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010484 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010485 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010486 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010487 }
10488 }
10489 uint32_t packetSize_vkDestroySamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10490 countingStream->rewind();
10491 uint32_t opcode_vkDestroySamplerYcbcrConversion = OP_vkDestroySamplerYcbcrConversion;
10492 stream->write(&opcode_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
10493 stream->write(&packetSize_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010494 uint64_t cgen_var_734;
10495 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_734, 1);
10496 stream->write((uint64_t*)&cgen_var_734, 1 * 8);
10497 uint64_t cgen_var_735;
10498 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_735, 1);
10499 stream->write((uint64_t*)&cgen_var_735, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010500 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010501 uint64_t cgen_var_736 = (uint64_t)(uintptr_t)local_pAllocator;
10502 stream->putBe64(cgen_var_736);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010503 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010504 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010505 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010506 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010507 resources->destroyMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&ycbcrConversion);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010508 mImpl->log("finish vkDestroySamplerYcbcrConversion");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010509}
10510
10511VkResult VkEncoder::vkCreateDescriptorUpdateTemplate(
10512 VkDevice device,
10513 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
10514 const VkAllocationCallbacks* pAllocator,
10515 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
10516{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010517 mImpl->log("start vkCreateDescriptorUpdateTemplate");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010518 auto stream = mImpl->stream();
10519 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010520 auto resources = mImpl->resources();
10521 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010522 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010523 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010524 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010525 VkAllocationCallbacks* local_pAllocator;
10526 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010527 local_pCreateInfo = nullptr;
10528 if (pCreateInfo)
10529 {
10530 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
10531 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
10532 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010533 local_pAllocator = nullptr;
10534 if (pAllocator)
10535 {
10536 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10537 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10538 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010539 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010540 if (local_pCreateInfo)
10541 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010542 transform_tohost_VkDescriptorUpdateTemplateCreateInfo(mImpl->resources(), (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010543 }
10544 if (local_pAllocator)
10545 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010546 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010547 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010548 countingStream->rewind();
10549 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010550 uint64_t cgen_var_737;
10551 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_737, 1);
10552 countingStream->write((uint64_t*)&cgen_var_737, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010553 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010554 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010555 uint64_t cgen_var_738 = (uint64_t)(uintptr_t)local_pAllocator;
10556 countingStream->putBe64(cgen_var_738);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010557 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010558 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010559 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010560 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010561 uint64_t cgen_var_739;
10562 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_739, 1);
10563 countingStream->write((uint64_t*)&cgen_var_739, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010564 }
10565 uint32_t packetSize_vkCreateDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10566 countingStream->rewind();
10567 uint32_t opcode_vkCreateDescriptorUpdateTemplate = OP_vkCreateDescriptorUpdateTemplate;
10568 stream->write(&opcode_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
10569 stream->write(&packetSize_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010570 uint64_t cgen_var_740;
10571 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_740, 1);
10572 stream->write((uint64_t*)&cgen_var_740, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010573 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010574 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010575 uint64_t cgen_var_741 = (uint64_t)(uintptr_t)local_pAllocator;
10576 stream->putBe64(cgen_var_741);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010577 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010578 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010579 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010580 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010581 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010582 uint64_t cgen_var_742;
10583 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_742, 1);
10584 stream->write((uint64_t*)&cgen_var_742, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010585 stream->setHandleMapping(resources->unwrapMapping());
10586 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010587 uint64_t cgen_var_743;
10588 stream->read((uint64_t*)&cgen_var_743, 8);
10589 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_743, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010590 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010591 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
10592 stream->read(&vkCreateDescriptorUpdateTemplate_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010593 countingStream->clearPool();
10594 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010595 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010596 mImpl->log("finish vkCreateDescriptorUpdateTemplate");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010597 return vkCreateDescriptorUpdateTemplate_VkResult_return;
10598}
10599
10600void VkEncoder::vkDestroyDescriptorUpdateTemplate(
10601 VkDevice device,
10602 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
10603 const VkAllocationCallbacks* pAllocator)
10604{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010605 mImpl->log("start vkDestroyDescriptorUpdateTemplate");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010606 auto stream = mImpl->stream();
10607 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010608 auto resources = mImpl->resources();
10609 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010610 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010611 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010612 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010613 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010614 local_device = device;
10615 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010616 local_pAllocator = nullptr;
10617 if (pAllocator)
10618 {
10619 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10620 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10621 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010622 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010623 if (local_pAllocator)
10624 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010625 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010626 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010627 countingStream->rewind();
10628 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010629 uint64_t cgen_var_744;
10630 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_744, 1);
10631 countingStream->write((uint64_t*)&cgen_var_744, 1 * 8);
10632 uint64_t cgen_var_745;
10633 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_745, 1);
10634 countingStream->write((uint64_t*)&cgen_var_745, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010635 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010636 uint64_t cgen_var_746 = (uint64_t)(uintptr_t)local_pAllocator;
10637 countingStream->putBe64(cgen_var_746);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010638 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010639 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010640 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010641 }
10642 }
10643 uint32_t packetSize_vkDestroyDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10644 countingStream->rewind();
10645 uint32_t opcode_vkDestroyDescriptorUpdateTemplate = OP_vkDestroyDescriptorUpdateTemplate;
10646 stream->write(&opcode_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
10647 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010648 uint64_t cgen_var_747;
10649 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_747, 1);
10650 stream->write((uint64_t*)&cgen_var_747, 1 * 8);
10651 uint64_t cgen_var_748;
10652 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_748, 1);
10653 stream->write((uint64_t*)&cgen_var_748, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010654 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010655 uint64_t cgen_var_749 = (uint64_t)(uintptr_t)local_pAllocator;
10656 stream->putBe64(cgen_var_749);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010657 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010658 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010659 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010660 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010661 resources->destroyMapping()->mapHandles_VkDescriptorUpdateTemplate((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010662 mImpl->log("finish vkDestroyDescriptorUpdateTemplate");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010663}
10664
10665void VkEncoder::vkUpdateDescriptorSetWithTemplate(
10666 VkDevice device,
10667 VkDescriptorSet descriptorSet,
10668 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
10669 const void* pData)
10670{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010671 mImpl->log("start vkUpdateDescriptorSetWithTemplate");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010672 auto stream = mImpl->stream();
10673 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010674 auto resources = mImpl->resources();
10675 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010676 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010677 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010678 VkDescriptorSet local_descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010679 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010680 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010681 local_device = device;
10682 local_descriptorSet = descriptorSet;
10683 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010684 local_pData = nullptr;
10685 if (pData)
10686 {
10687 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
10688 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010689 countingStream->rewind();
10690 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010691 uint64_t cgen_var_750;
10692 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_750, 1);
10693 countingStream->write((uint64_t*)&cgen_var_750, 1 * 8);
10694 uint64_t cgen_var_751;
10695 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_751, 1);
10696 countingStream->write((uint64_t*)&cgen_var_751, 1 * 8);
10697 uint64_t cgen_var_752;
10698 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_752, 1);
10699 countingStream->write((uint64_t*)&cgen_var_752, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010700 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010701 uint64_t cgen_var_753 = (uint64_t)(uintptr_t)local_pData;
10702 countingStream->putBe64(cgen_var_753);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010703 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010704 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010705 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010706 }
10707 }
10708 uint32_t packetSize_vkUpdateDescriptorSetWithTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10709 countingStream->rewind();
10710 uint32_t opcode_vkUpdateDescriptorSetWithTemplate = OP_vkUpdateDescriptorSetWithTemplate;
10711 stream->write(&opcode_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
10712 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010713 uint64_t cgen_var_754;
10714 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_754, 1);
10715 stream->write((uint64_t*)&cgen_var_754, 1 * 8);
10716 uint64_t cgen_var_755;
10717 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_755, 1);
10718 stream->write((uint64_t*)&cgen_var_755, 1 * 8);
10719 uint64_t cgen_var_756;
10720 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_756, 1);
10721 stream->write((uint64_t*)&cgen_var_756, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010722 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010723 uint64_t cgen_var_757 = (uint64_t)(uintptr_t)local_pData;
10724 stream->putBe64(cgen_var_757);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010725 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010726 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010727 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010728 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010729 mImpl->log("finish vkUpdateDescriptorSetWithTemplate");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010730}
10731
10732void VkEncoder::vkGetPhysicalDeviceExternalBufferProperties(
10733 VkPhysicalDevice physicalDevice,
10734 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
10735 VkExternalBufferProperties* pExternalBufferProperties)
10736{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010737 mImpl->log("start vkGetPhysicalDeviceExternalBufferProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010738 auto stream = mImpl->stream();
10739 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010740 auto resources = mImpl->resources();
10741 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010742 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010743 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010744 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010745 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010746 local_pExternalBufferInfo = nullptr;
10747 if (pExternalBufferInfo)
10748 {
10749 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
10750 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
10751 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010752 if (local_pExternalBufferInfo)
10753 {
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -080010754 mImpl->resources()->transformImpl_VkPhysicalDeviceExternalBufferInfo_tohost(local_pExternalBufferInfo, 1);
Lingfeng Yang97a06702018-12-24 17:02:43 -080010755 transform_tohost_VkPhysicalDeviceExternalBufferInfo(mImpl->resources(), (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010756 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010757 countingStream->rewind();
10758 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010759 uint64_t cgen_var_758;
10760 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_758, 1);
10761 countingStream->write((uint64_t*)&cgen_var_758, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010762 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010763 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
10764 }
10765 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10766 countingStream->rewind();
10767 uint32_t opcode_vkGetPhysicalDeviceExternalBufferProperties = OP_vkGetPhysicalDeviceExternalBufferProperties;
10768 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
10769 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010770 uint64_t cgen_var_759;
10771 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_759, 1);
10772 stream->write((uint64_t*)&cgen_var_759, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010773 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010774 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
10775 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010776 if (pExternalBufferProperties)
10777 {
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -080010778 mImpl->resources()->transformImpl_VkExternalBufferProperties_fromhost(pExternalBufferProperties, 1);
Lingfeng Yang97a06702018-12-24 17:02:43 -080010779 transform_fromhost_VkExternalBufferProperties(mImpl->resources(), (VkExternalBufferProperties*)(pExternalBufferProperties));
10780 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010781 mImpl->log("finish vkGetPhysicalDeviceExternalBufferProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010782}
10783
10784void VkEncoder::vkGetPhysicalDeviceExternalFenceProperties(
10785 VkPhysicalDevice physicalDevice,
10786 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
10787 VkExternalFenceProperties* pExternalFenceProperties)
10788{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010789 mImpl->log("start vkGetPhysicalDeviceExternalFenceProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010790 auto stream = mImpl->stream();
10791 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010792 auto resources = mImpl->resources();
10793 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010794 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010795 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010796 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010797 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010798 local_pExternalFenceInfo = nullptr;
10799 if (pExternalFenceInfo)
10800 {
10801 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
10802 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
10803 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010804 if (local_pExternalFenceInfo)
10805 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010806 transform_tohost_VkPhysicalDeviceExternalFenceInfo(mImpl->resources(), (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010807 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010808 countingStream->rewind();
10809 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010810 uint64_t cgen_var_760;
10811 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_760, 1);
10812 countingStream->write((uint64_t*)&cgen_var_760, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010813 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010814 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
10815 }
10816 uint32_t packetSize_vkGetPhysicalDeviceExternalFenceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10817 countingStream->rewind();
10818 uint32_t opcode_vkGetPhysicalDeviceExternalFenceProperties = OP_vkGetPhysicalDeviceExternalFenceProperties;
10819 stream->write(&opcode_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
10820 stream->write(&packetSize_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010821 uint64_t cgen_var_761;
10822 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_761, 1);
10823 stream->write((uint64_t*)&cgen_var_761, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010824 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010825 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
10826 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010827 if (pExternalFenceProperties)
10828 {
10829 transform_fromhost_VkExternalFenceProperties(mImpl->resources(), (VkExternalFenceProperties*)(pExternalFenceProperties));
10830 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010831 mImpl->log("finish vkGetPhysicalDeviceExternalFenceProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010832}
10833
10834void VkEncoder::vkGetPhysicalDeviceExternalSemaphoreProperties(
10835 VkPhysicalDevice physicalDevice,
10836 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
10837 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
10838{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010839 mImpl->log("start vkGetPhysicalDeviceExternalSemaphoreProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010840 auto stream = mImpl->stream();
10841 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010842 auto resources = mImpl->resources();
10843 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010844 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010845 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010846 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010847 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010848 local_pExternalSemaphoreInfo = nullptr;
10849 if (pExternalSemaphoreInfo)
10850 {
10851 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
10852 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
10853 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010854 if (local_pExternalSemaphoreInfo)
10855 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010856 transform_tohost_VkPhysicalDeviceExternalSemaphoreInfo(mImpl->resources(), (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010857 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010858 countingStream->rewind();
10859 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010860 uint64_t cgen_var_762;
10861 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_762, 1);
10862 countingStream->write((uint64_t*)&cgen_var_762, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010863 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010864 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
10865 }
10866 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10867 countingStream->rewind();
10868 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphoreProperties = OP_vkGetPhysicalDeviceExternalSemaphoreProperties;
10869 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
10870 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010871 uint64_t cgen_var_763;
10872 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_763, 1);
10873 stream->write((uint64_t*)&cgen_var_763, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010874 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010875 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
10876 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010877 if (pExternalSemaphoreProperties)
10878 {
10879 transform_fromhost_VkExternalSemaphoreProperties(mImpl->resources(), (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
10880 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010881 mImpl->log("finish vkGetPhysicalDeviceExternalSemaphoreProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010882}
10883
10884void VkEncoder::vkGetDescriptorSetLayoutSupport(
10885 VkDevice device,
10886 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
10887 VkDescriptorSetLayoutSupport* pSupport)
10888{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010889 mImpl->log("start vkGetDescriptorSetLayoutSupport");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010890 auto stream = mImpl->stream();
10891 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010892 auto resources = mImpl->resources();
10893 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010894 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010895 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010896 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010897 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010898 local_pCreateInfo = nullptr;
10899 if (pCreateInfo)
10900 {
10901 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
10902 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
10903 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010904 if (local_pCreateInfo)
10905 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010906 transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010907 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010908 countingStream->rewind();
10909 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010910 uint64_t cgen_var_764;
10911 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_764, 1);
10912 countingStream->write((uint64_t*)&cgen_var_764, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010913 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010914 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
10915 }
10916 uint32_t packetSize_vkGetDescriptorSetLayoutSupport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10917 countingStream->rewind();
10918 uint32_t opcode_vkGetDescriptorSetLayoutSupport = OP_vkGetDescriptorSetLayoutSupport;
10919 stream->write(&opcode_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
10920 stream->write(&packetSize_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010921 uint64_t cgen_var_765;
10922 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_765, 1);
10923 stream->write((uint64_t*)&cgen_var_765, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010924 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010925 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
10926 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010927 if (pSupport)
10928 {
10929 transform_fromhost_VkDescriptorSetLayoutSupport(mImpl->resources(), (VkDescriptorSetLayoutSupport*)(pSupport));
10930 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010931 mImpl->log("finish vkGetDescriptorSetLayoutSupport");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010932}
10933
10934#endif
10935#ifdef VK_KHR_surface
10936void VkEncoder::vkDestroySurfaceKHR(
10937 VkInstance instance,
10938 VkSurfaceKHR surface,
10939 const VkAllocationCallbacks* pAllocator)
10940{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010941 mImpl->log("start vkDestroySurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010942 auto stream = mImpl->stream();
10943 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010944 auto resources = mImpl->resources();
10945 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010946 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010947 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010948 VkSurfaceKHR local_surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010949 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010950 local_instance = instance;
10951 local_surface = surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010952 local_pAllocator = nullptr;
10953 if (pAllocator)
10954 {
10955 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10956 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10957 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010958 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010959 if (local_pAllocator)
10960 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010961 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010962 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010963 countingStream->rewind();
10964 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010965 uint64_t cgen_var_766;
10966 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_766, 1);
10967 countingStream->write((uint64_t*)&cgen_var_766, 1 * 8);
10968 uint64_t cgen_var_767;
10969 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_767, 1);
10970 countingStream->write((uint64_t*)&cgen_var_767, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010971 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010972 uint64_t cgen_var_768 = (uint64_t)(uintptr_t)local_pAllocator;
10973 countingStream->putBe64(cgen_var_768);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010974 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010975 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010976 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010977 }
10978 }
10979 uint32_t packetSize_vkDestroySurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10980 countingStream->rewind();
10981 uint32_t opcode_vkDestroySurfaceKHR = OP_vkDestroySurfaceKHR;
10982 stream->write(&opcode_vkDestroySurfaceKHR, sizeof(uint32_t));
10983 stream->write(&packetSize_vkDestroySurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010984 uint64_t cgen_var_769;
10985 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_769, 1);
10986 stream->write((uint64_t*)&cgen_var_769, 1 * 8);
10987 uint64_t cgen_var_770;
10988 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_770, 1);
10989 stream->write((uint64_t*)&cgen_var_770, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010990 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010991 uint64_t cgen_var_771 = (uint64_t)(uintptr_t)local_pAllocator;
10992 stream->putBe64(cgen_var_771);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010993 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010994 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010995 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010996 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010997 resources->destroyMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&surface);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010998 mImpl->log("finish vkDestroySurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010999}
11000
11001VkResult VkEncoder::vkGetPhysicalDeviceSurfaceSupportKHR(
11002 VkPhysicalDevice physicalDevice,
11003 uint32_t queueFamilyIndex,
11004 VkSurfaceKHR surface,
11005 VkBool32* pSupported)
11006{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011007 mImpl->log("start vkGetPhysicalDeviceSurfaceSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011008 auto stream = mImpl->stream();
11009 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011010 auto resources = mImpl->resources();
11011 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011012 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011013 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011014 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011015 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011016 local_physicalDevice = physicalDevice;
11017 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011018 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011019 countingStream->rewind();
11020 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011021 uint64_t cgen_var_772;
11022 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_772, 1);
11023 countingStream->write((uint64_t*)&cgen_var_772, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011024 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011025 uint64_t cgen_var_773;
11026 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_773, 1);
11027 countingStream->write((uint64_t*)&cgen_var_773, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011028 countingStream->write((VkBool32*)pSupported, sizeof(VkBool32));
11029 }
11030 uint32_t packetSize_vkGetPhysicalDeviceSurfaceSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11031 countingStream->rewind();
11032 uint32_t opcode_vkGetPhysicalDeviceSurfaceSupportKHR = OP_vkGetPhysicalDeviceSurfaceSupportKHR;
11033 stream->write(&opcode_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
11034 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011035 uint64_t cgen_var_774;
11036 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_774, 1);
11037 stream->write((uint64_t*)&cgen_var_774, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011038 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011039 uint64_t cgen_var_775;
11040 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_775, 1);
11041 stream->write((uint64_t*)&cgen_var_775, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011042 stream->write((VkBool32*)pSupported, sizeof(VkBool32));
11043 stream->read((VkBool32*)pSupported, sizeof(VkBool32));
11044 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
11045 stream->read(&vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011046 countingStream->clearPool();
11047 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011048 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011049 mImpl->log("finish vkGetPhysicalDeviceSurfaceSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011050 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
11051}
11052
11053VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
11054 VkPhysicalDevice physicalDevice,
11055 VkSurfaceKHR surface,
11056 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
11057{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011058 mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011059 auto stream = mImpl->stream();
11060 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011061 auto resources = mImpl->resources();
11062 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011063 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011064 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011065 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011066 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011067 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011068 countingStream->rewind();
11069 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011070 uint64_t cgen_var_776;
11071 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_776, 1);
11072 countingStream->write((uint64_t*)&cgen_var_776, 1 * 8);
11073 uint64_t cgen_var_777;
11074 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_777, 1);
11075 countingStream->write((uint64_t*)&cgen_var_777, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011076 marshal_VkSurfaceCapabilitiesKHR(countingStream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
11077 }
11078 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11079 countingStream->rewind();
11080 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
11081 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
11082 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011083 uint64_t cgen_var_778;
11084 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_778, 1);
11085 stream->write((uint64_t*)&cgen_var_778, 1 * 8);
11086 uint64_t cgen_var_779;
11087 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_779, 1);
11088 stream->write((uint64_t*)&cgen_var_779, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011089 marshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
11090 unmarshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080011091 if (pSurfaceCapabilities)
11092 {
11093 transform_fromhost_VkSurfaceCapabilitiesKHR(mImpl->resources(), (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
11094 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011095 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
11096 stream->read(&vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011097 countingStream->clearPool();
11098 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011099 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011100 mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilitiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011101 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
11102}
11103
11104VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormatsKHR(
11105 VkPhysicalDevice physicalDevice,
11106 VkSurfaceKHR surface,
11107 uint32_t* pSurfaceFormatCount,
11108 VkSurfaceFormatKHR* pSurfaceFormats)
11109{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011110 mImpl->log("start vkGetPhysicalDeviceSurfaceFormatsKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011111 auto stream = mImpl->stream();
11112 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011113 auto resources = mImpl->resources();
11114 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011115 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011116 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011117 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011118 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011119 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011120 countingStream->rewind();
11121 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011122 uint64_t cgen_var_780;
11123 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_780, 1);
11124 countingStream->write((uint64_t*)&cgen_var_780, 1 * 8);
11125 uint64_t cgen_var_781;
11126 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_781, 1);
11127 countingStream->write((uint64_t*)&cgen_var_781, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011128 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011129 uint64_t cgen_var_782 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
11130 countingStream->putBe64(cgen_var_782);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011131 if (pSurfaceFormatCount)
11132 {
11133 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
11134 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011135 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011136 uint64_t cgen_var_783 = (uint64_t)(uintptr_t)pSurfaceFormats;
11137 countingStream->putBe64(cgen_var_783);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011138 if (pSurfaceFormats)
11139 {
11140 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11141 {
11142 marshal_VkSurfaceFormatKHR(countingStream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11143 }
11144 }
11145 }
11146 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11147 countingStream->rewind();
11148 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormatsKHR = OP_vkGetPhysicalDeviceSurfaceFormatsKHR;
11149 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
11150 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011151 uint64_t cgen_var_784;
11152 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_784, 1);
11153 stream->write((uint64_t*)&cgen_var_784, 1 * 8);
11154 uint64_t cgen_var_785;
11155 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_785, 1);
11156 stream->write((uint64_t*)&cgen_var_785, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011157 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011158 uint64_t cgen_var_786 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
11159 stream->putBe64(cgen_var_786);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011160 if (pSurfaceFormatCount)
11161 {
11162 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
11163 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011164 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011165 uint64_t cgen_var_787 = (uint64_t)(uintptr_t)pSurfaceFormats;
11166 stream->putBe64(cgen_var_787);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011167 if (pSurfaceFormats)
11168 {
11169 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11170 {
11171 marshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11172 }
11173 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011174 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011175 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011176 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011177 if (pSurfaceFormatCount)
11178 {
11179 if (!(check_pSurfaceFormatCount))
11180 {
11181 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
11182 }
11183 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
11184 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011185 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011186 VkSurfaceFormatKHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011187 check_pSurfaceFormats = (VkSurfaceFormatKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011188 if (pSurfaceFormats)
11189 {
11190 if (!(check_pSurfaceFormats))
11191 {
11192 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
11193 }
11194 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11195 {
11196 unmarshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11197 }
11198 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080011199 if (pSurfaceFormats)
11200 {
11201 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11202 {
11203 transform_fromhost_VkSurfaceFormatKHR(mImpl->resources(), (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11204 }
11205 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011206 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
11207 stream->read(&vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011208 countingStream->clearPool();
11209 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011210 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011211 mImpl->log("finish vkGetPhysicalDeviceSurfaceFormatsKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011212 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
11213}
11214
11215VkResult VkEncoder::vkGetPhysicalDeviceSurfacePresentModesKHR(
11216 VkPhysicalDevice physicalDevice,
11217 VkSurfaceKHR surface,
11218 uint32_t* pPresentModeCount,
11219 VkPresentModeKHR* pPresentModes)
11220{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011221 mImpl->log("start vkGetPhysicalDeviceSurfacePresentModesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011222 auto stream = mImpl->stream();
11223 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011224 auto resources = mImpl->resources();
11225 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011226 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011227 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011228 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011229 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011230 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011231 countingStream->rewind();
11232 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011233 uint64_t cgen_var_790;
11234 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_790, 1);
11235 countingStream->write((uint64_t*)&cgen_var_790, 1 * 8);
11236 uint64_t cgen_var_791;
11237 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_791, 1);
11238 countingStream->write((uint64_t*)&cgen_var_791, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011239 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011240 uint64_t cgen_var_792 = (uint64_t)(uintptr_t)pPresentModeCount;
11241 countingStream->putBe64(cgen_var_792);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011242 if (pPresentModeCount)
11243 {
11244 countingStream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
11245 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011246 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011247 uint64_t cgen_var_793 = (uint64_t)(uintptr_t)pPresentModes;
11248 countingStream->putBe64(cgen_var_793);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011249 if (pPresentModes)
11250 {
11251 countingStream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
11252 }
11253 }
11254 uint32_t packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11255 countingStream->rewind();
11256 uint32_t opcode_vkGetPhysicalDeviceSurfacePresentModesKHR = OP_vkGetPhysicalDeviceSurfacePresentModesKHR;
11257 stream->write(&opcode_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
11258 stream->write(&packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011259 uint64_t cgen_var_794;
11260 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_794, 1);
11261 stream->write((uint64_t*)&cgen_var_794, 1 * 8);
11262 uint64_t cgen_var_795;
11263 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_795, 1);
11264 stream->write((uint64_t*)&cgen_var_795, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011265 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011266 uint64_t cgen_var_796 = (uint64_t)(uintptr_t)pPresentModeCount;
11267 stream->putBe64(cgen_var_796);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011268 if (pPresentModeCount)
11269 {
11270 stream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
11271 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011272 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011273 uint64_t cgen_var_797 = (uint64_t)(uintptr_t)pPresentModes;
11274 stream->putBe64(cgen_var_797);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011275 if (pPresentModes)
11276 {
11277 stream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
11278 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011279 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011280 uint32_t* check_pPresentModeCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011281 check_pPresentModeCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011282 if (pPresentModeCount)
11283 {
11284 if (!(check_pPresentModeCount))
11285 {
11286 fprintf(stderr, "fatal: pPresentModeCount inconsistent between guest and host\n");
11287 }
11288 stream->read((uint32_t*)pPresentModeCount, sizeof(uint32_t));
11289 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011290 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011291 VkPresentModeKHR* check_pPresentModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011292 check_pPresentModes = (VkPresentModeKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011293 if (pPresentModes)
11294 {
11295 if (!(check_pPresentModes))
11296 {
11297 fprintf(stderr, "fatal: pPresentModes inconsistent between guest and host\n");
11298 }
11299 stream->read((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
11300 }
11301 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
11302 stream->read(&vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011303 countingStream->clearPool();
11304 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011305 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011306 mImpl->log("finish vkGetPhysicalDeviceSurfacePresentModesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011307 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
11308}
11309
11310#endif
11311#ifdef VK_KHR_swapchain
11312VkResult VkEncoder::vkCreateSwapchainKHR(
11313 VkDevice device,
11314 const VkSwapchainCreateInfoKHR* pCreateInfo,
11315 const VkAllocationCallbacks* pAllocator,
11316 VkSwapchainKHR* pSwapchain)
11317{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011318 mImpl->log("start vkCreateSwapchainKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011319 auto stream = mImpl->stream();
11320 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011321 auto resources = mImpl->resources();
11322 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011323 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011324 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011325 VkSwapchainCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011326 VkAllocationCallbacks* local_pAllocator;
11327 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011328 local_pCreateInfo = nullptr;
11329 if (pCreateInfo)
11330 {
11331 local_pCreateInfo = (VkSwapchainCreateInfoKHR*)pool->alloc(sizeof(const VkSwapchainCreateInfoKHR));
11332 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfo, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
11333 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011334 local_pAllocator = nullptr;
11335 if (pAllocator)
11336 {
11337 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11338 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11339 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011340 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080011341 if (local_pCreateInfo)
11342 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011343 transform_tohost_VkSwapchainCreateInfoKHR(mImpl->resources(), (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011344 }
11345 if (local_pAllocator)
11346 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011347 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011348 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011349 countingStream->rewind();
11350 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011351 uint64_t cgen_var_800;
11352 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_800, 1);
11353 countingStream->write((uint64_t*)&cgen_var_800, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011354 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011355 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011356 uint64_t cgen_var_801 = (uint64_t)(uintptr_t)local_pAllocator;
11357 countingStream->putBe64(cgen_var_801);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011358 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011359 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011360 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011361 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011362 uint64_t cgen_var_802;
11363 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_802, 1);
11364 countingStream->write((uint64_t*)&cgen_var_802, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011365 }
11366 uint32_t packetSize_vkCreateSwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11367 countingStream->rewind();
11368 uint32_t opcode_vkCreateSwapchainKHR = OP_vkCreateSwapchainKHR;
11369 stream->write(&opcode_vkCreateSwapchainKHR, sizeof(uint32_t));
11370 stream->write(&packetSize_vkCreateSwapchainKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011371 uint64_t cgen_var_803;
11372 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_803, 1);
11373 stream->write((uint64_t*)&cgen_var_803, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011374 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011375 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011376 uint64_t cgen_var_804 = (uint64_t)(uintptr_t)local_pAllocator;
11377 stream->putBe64(cgen_var_804);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011378 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011379 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011380 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011381 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011382 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011383 uint64_t cgen_var_805;
11384 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_805, 1);
11385 stream->write((uint64_t*)&cgen_var_805, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011386 stream->setHandleMapping(resources->unwrapMapping());
11387 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011388 uint64_t cgen_var_806;
11389 stream->read((uint64_t*)&cgen_var_806, 8);
11390 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(&cgen_var_806, (VkSwapchainKHR*)pSwapchain, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011391 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011392 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
11393 stream->read(&vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011394 countingStream->clearPool();
11395 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011396 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011397 mImpl->log("finish vkCreateSwapchainKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011398 return vkCreateSwapchainKHR_VkResult_return;
11399}
11400
11401void VkEncoder::vkDestroySwapchainKHR(
11402 VkDevice device,
11403 VkSwapchainKHR swapchain,
11404 const VkAllocationCallbacks* pAllocator)
11405{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011406 mImpl->log("start vkDestroySwapchainKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011407 auto stream = mImpl->stream();
11408 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011409 auto resources = mImpl->resources();
11410 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011411 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011412 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011413 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011414 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011415 local_device = device;
11416 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011417 local_pAllocator = nullptr;
11418 if (pAllocator)
11419 {
11420 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11421 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11422 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011423 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080011424 if (local_pAllocator)
11425 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011426 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011427 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011428 countingStream->rewind();
11429 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011430 uint64_t cgen_var_807;
11431 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_807, 1);
11432 countingStream->write((uint64_t*)&cgen_var_807, 1 * 8);
11433 uint64_t cgen_var_808;
11434 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_808, 1);
11435 countingStream->write((uint64_t*)&cgen_var_808, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011436 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011437 uint64_t cgen_var_809 = (uint64_t)(uintptr_t)local_pAllocator;
11438 countingStream->putBe64(cgen_var_809);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011439 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011440 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011441 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011442 }
11443 }
11444 uint32_t packetSize_vkDestroySwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11445 countingStream->rewind();
11446 uint32_t opcode_vkDestroySwapchainKHR = OP_vkDestroySwapchainKHR;
11447 stream->write(&opcode_vkDestroySwapchainKHR, sizeof(uint32_t));
11448 stream->write(&packetSize_vkDestroySwapchainKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011449 uint64_t cgen_var_810;
11450 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_810, 1);
11451 stream->write((uint64_t*)&cgen_var_810, 1 * 8);
11452 uint64_t cgen_var_811;
11453 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_811, 1);
11454 stream->write((uint64_t*)&cgen_var_811, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011455 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011456 uint64_t cgen_var_812 = (uint64_t)(uintptr_t)local_pAllocator;
11457 stream->putBe64(cgen_var_812);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011458 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011459 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011460 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011461 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011462 resources->destroyMapping()->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&swapchain);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011463 mImpl->log("finish vkDestroySwapchainKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011464}
11465
11466VkResult VkEncoder::vkGetSwapchainImagesKHR(
11467 VkDevice device,
11468 VkSwapchainKHR swapchain,
11469 uint32_t* pSwapchainImageCount,
11470 VkImage* pSwapchainImages)
11471{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011472 mImpl->log("start vkGetSwapchainImagesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011473 auto stream = mImpl->stream();
11474 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011475 auto resources = mImpl->resources();
11476 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011477 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011478 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011479 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011480 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011481 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011482 countingStream->rewind();
11483 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011484 uint64_t cgen_var_813;
11485 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_813, 1);
11486 countingStream->write((uint64_t*)&cgen_var_813, 1 * 8);
11487 uint64_t cgen_var_814;
11488 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_814, 1);
11489 countingStream->write((uint64_t*)&cgen_var_814, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011490 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011491 uint64_t cgen_var_815 = (uint64_t)(uintptr_t)pSwapchainImageCount;
11492 countingStream->putBe64(cgen_var_815);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011493 if (pSwapchainImageCount)
11494 {
11495 countingStream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
11496 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011497 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011498 uint64_t cgen_var_816 = (uint64_t)(uintptr_t)pSwapchainImages;
11499 countingStream->putBe64(cgen_var_816);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011500 if (pSwapchainImages)
11501 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080011502 if ((*(pSwapchainImageCount)))
11503 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011504 uint64_t* cgen_var_817;
11505 countingStream->alloc((void**)&cgen_var_817, (*(pSwapchainImageCount)) * 8);
11506 countingStream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_817, (*(pSwapchainImageCount)));
11507 countingStream->write((uint64_t*)cgen_var_817, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011508 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011509 }
11510 }
11511 uint32_t packetSize_vkGetSwapchainImagesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11512 countingStream->rewind();
11513 uint32_t opcode_vkGetSwapchainImagesKHR = OP_vkGetSwapchainImagesKHR;
11514 stream->write(&opcode_vkGetSwapchainImagesKHR, sizeof(uint32_t));
11515 stream->write(&packetSize_vkGetSwapchainImagesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011516 uint64_t cgen_var_818;
11517 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_818, 1);
11518 stream->write((uint64_t*)&cgen_var_818, 1 * 8);
11519 uint64_t cgen_var_819;
11520 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_819, 1);
11521 stream->write((uint64_t*)&cgen_var_819, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011522 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011523 uint64_t cgen_var_820 = (uint64_t)(uintptr_t)pSwapchainImageCount;
11524 stream->putBe64(cgen_var_820);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011525 if (pSwapchainImageCount)
11526 {
11527 stream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
11528 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011529 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011530 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011531 uint64_t cgen_var_821 = (uint64_t)(uintptr_t)pSwapchainImages;
11532 stream->putBe64(cgen_var_821);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011533 if (pSwapchainImages)
11534 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080011535 if ((*(pSwapchainImageCount)))
11536 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011537 uint64_t* cgen_var_822;
11538 stream->alloc((void**)&cgen_var_822, (*(pSwapchainImageCount)) * 8);
11539 stream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_822, (*(pSwapchainImageCount)));
11540 stream->write((uint64_t*)cgen_var_822, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011541 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011542 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011543 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011544 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011545 uint32_t* check_pSwapchainImageCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011546 check_pSwapchainImageCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011547 if (pSwapchainImageCount)
11548 {
11549 if (!(check_pSwapchainImageCount))
11550 {
11551 fprintf(stderr, "fatal: pSwapchainImageCount inconsistent between guest and host\n");
11552 }
11553 stream->read((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
11554 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011555 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011556 VkImage* check_pSwapchainImages;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011557 check_pSwapchainImages = (VkImage*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011558 if (pSwapchainImages)
11559 {
11560 if (!(check_pSwapchainImages))
11561 {
11562 fprintf(stderr, "fatal: pSwapchainImages inconsistent between guest and host\n");
11563 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080011564 if ((*(pSwapchainImageCount)))
11565 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011566 uint64_t* cgen_var_825;
11567 stream->alloc((void**)&cgen_var_825, (*(pSwapchainImageCount)) * 8);
11568 stream->read((uint64_t*)cgen_var_825, (*(pSwapchainImageCount)) * 8);
11569 stream->handleMapping()->mapHandles_u64_VkImage(cgen_var_825, (VkImage*)pSwapchainImages, (*(pSwapchainImageCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011570 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011571 }
11572 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
11573 stream->read(&vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011574 countingStream->clearPool();
11575 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011576 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011577 mImpl->log("finish vkGetSwapchainImagesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011578 return vkGetSwapchainImagesKHR_VkResult_return;
11579}
11580
11581VkResult VkEncoder::vkAcquireNextImageKHR(
11582 VkDevice device,
11583 VkSwapchainKHR swapchain,
11584 uint64_t timeout,
11585 VkSemaphore semaphore,
11586 VkFence fence,
11587 uint32_t* pImageIndex)
11588{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011589 mImpl->log("start vkAcquireNextImageKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011590 auto stream = mImpl->stream();
11591 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011592 auto resources = mImpl->resources();
11593 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011594 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011595 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011596 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011597 uint64_t local_timeout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011598 VkSemaphore local_semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011599 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011600 local_device = device;
11601 local_swapchain = swapchain;
11602 local_timeout = timeout;
11603 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011604 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011605 countingStream->rewind();
11606 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011607 uint64_t cgen_var_826;
11608 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_826, 1);
11609 countingStream->write((uint64_t*)&cgen_var_826, 1 * 8);
11610 uint64_t cgen_var_827;
11611 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_827, 1);
11612 countingStream->write((uint64_t*)&cgen_var_827, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011613 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011614 uint64_t cgen_var_828;
11615 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_828, 1);
11616 countingStream->write((uint64_t*)&cgen_var_828, 1 * 8);
11617 uint64_t cgen_var_829;
11618 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_829, 1);
11619 countingStream->write((uint64_t*)&cgen_var_829, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011620 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
11621 }
11622 uint32_t packetSize_vkAcquireNextImageKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11623 countingStream->rewind();
11624 uint32_t opcode_vkAcquireNextImageKHR = OP_vkAcquireNextImageKHR;
11625 stream->write(&opcode_vkAcquireNextImageKHR, sizeof(uint32_t));
11626 stream->write(&packetSize_vkAcquireNextImageKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011627 uint64_t cgen_var_830;
11628 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_830, 1);
11629 stream->write((uint64_t*)&cgen_var_830, 1 * 8);
11630 uint64_t cgen_var_831;
11631 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_831, 1);
11632 stream->write((uint64_t*)&cgen_var_831, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011633 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011634 uint64_t cgen_var_832;
11635 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_832, 1);
11636 stream->write((uint64_t*)&cgen_var_832, 1 * 8);
11637 uint64_t cgen_var_833;
11638 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_833, 1);
11639 stream->write((uint64_t*)&cgen_var_833, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011640 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
11641 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
11642 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
11643 stream->read(&vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011644 countingStream->clearPool();
11645 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011646 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011647 mImpl->log("finish vkAcquireNextImageKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011648 return vkAcquireNextImageKHR_VkResult_return;
11649}
11650
11651VkResult VkEncoder::vkQueuePresentKHR(
11652 VkQueue queue,
11653 const VkPresentInfoKHR* pPresentInfo)
11654{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011655 mImpl->log("start vkQueuePresentKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011656 auto stream = mImpl->stream();
11657 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011658 auto resources = mImpl->resources();
11659 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011660 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011661 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011662 VkPresentInfoKHR* local_pPresentInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011663 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011664 local_pPresentInfo = nullptr;
11665 if (pPresentInfo)
11666 {
11667 local_pPresentInfo = (VkPresentInfoKHR*)pool->alloc(sizeof(const VkPresentInfoKHR));
11668 deepcopy_VkPresentInfoKHR(pool, pPresentInfo, (VkPresentInfoKHR*)(local_pPresentInfo));
11669 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080011670 if (local_pPresentInfo)
11671 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011672 transform_tohost_VkPresentInfoKHR(mImpl->resources(), (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011673 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011674 countingStream->rewind();
11675 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011676 uint64_t cgen_var_834;
11677 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_834, 1);
11678 countingStream->write((uint64_t*)&cgen_var_834, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011679 marshal_VkPresentInfoKHR(countingStream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011680 }
11681 uint32_t packetSize_vkQueuePresentKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11682 countingStream->rewind();
11683 uint32_t opcode_vkQueuePresentKHR = OP_vkQueuePresentKHR;
11684 stream->write(&opcode_vkQueuePresentKHR, sizeof(uint32_t));
11685 stream->write(&packetSize_vkQueuePresentKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011686 uint64_t cgen_var_835;
11687 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_835, 1);
11688 stream->write((uint64_t*)&cgen_var_835, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011689 marshal_VkPresentInfoKHR(stream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011690 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
11691 stream->read(&vkQueuePresentKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011692 countingStream->clearPool();
11693 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011694 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011695 mImpl->log("finish vkQueuePresentKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011696 return vkQueuePresentKHR_VkResult_return;
11697}
11698
11699VkResult VkEncoder::vkGetDeviceGroupPresentCapabilitiesKHR(
11700 VkDevice device,
11701 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
11702{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011703 mImpl->log("start vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011704 auto stream = mImpl->stream();
11705 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011706 auto resources = mImpl->resources();
11707 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011708 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011709 VkDevice local_device;
11710 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011711 countingStream->rewind();
11712 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011713 uint64_t cgen_var_836;
11714 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_836, 1);
11715 countingStream->write((uint64_t*)&cgen_var_836, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011716 marshal_VkDeviceGroupPresentCapabilitiesKHR(countingStream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
11717 }
11718 uint32_t packetSize_vkGetDeviceGroupPresentCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11719 countingStream->rewind();
11720 uint32_t opcode_vkGetDeviceGroupPresentCapabilitiesKHR = OP_vkGetDeviceGroupPresentCapabilitiesKHR;
11721 stream->write(&opcode_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
11722 stream->write(&packetSize_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011723 uint64_t cgen_var_837;
11724 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_837, 1);
11725 stream->write((uint64_t*)&cgen_var_837, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011726 marshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
11727 unmarshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080011728 if (pDeviceGroupPresentCapabilities)
11729 {
11730 transform_fromhost_VkDeviceGroupPresentCapabilitiesKHR(mImpl->resources(), (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
11731 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011732 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
11733 stream->read(&vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011734 countingStream->clearPool();
11735 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011736 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011737 mImpl->log("finish vkGetDeviceGroupPresentCapabilitiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011738 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
11739}
11740
11741VkResult VkEncoder::vkGetDeviceGroupSurfacePresentModesKHR(
11742 VkDevice device,
11743 VkSurfaceKHR surface,
11744 VkDeviceGroupPresentModeFlagsKHR* pModes)
11745{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011746 mImpl->log("start vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011747 auto stream = mImpl->stream();
11748 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011749 auto resources = mImpl->resources();
11750 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011751 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011752 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011753 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011754 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011755 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011756 countingStream->rewind();
11757 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011758 uint64_t cgen_var_838;
11759 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_838, 1);
11760 countingStream->write((uint64_t*)&cgen_var_838, 1 * 8);
11761 uint64_t cgen_var_839;
11762 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_839, 1);
11763 countingStream->write((uint64_t*)&cgen_var_839, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011764 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011765 uint64_t cgen_var_840 = (uint64_t)(uintptr_t)pModes;
11766 countingStream->putBe64(cgen_var_840);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011767 if (pModes)
11768 {
11769 countingStream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
11770 }
11771 }
11772 uint32_t packetSize_vkGetDeviceGroupSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11773 countingStream->rewind();
11774 uint32_t opcode_vkGetDeviceGroupSurfacePresentModesKHR = OP_vkGetDeviceGroupSurfacePresentModesKHR;
11775 stream->write(&opcode_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
11776 stream->write(&packetSize_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011777 uint64_t cgen_var_841;
11778 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_841, 1);
11779 stream->write((uint64_t*)&cgen_var_841, 1 * 8);
11780 uint64_t cgen_var_842;
11781 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_842, 1);
11782 stream->write((uint64_t*)&cgen_var_842, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011783 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011784 uint64_t cgen_var_843 = (uint64_t)(uintptr_t)pModes;
11785 stream->putBe64(cgen_var_843);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011786 if (pModes)
11787 {
11788 stream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
11789 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011790 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011791 VkDeviceGroupPresentModeFlagsKHR* check_pModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011792 check_pModes = (VkDeviceGroupPresentModeFlagsKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011793 if (pModes)
11794 {
11795 if (!(check_pModes))
11796 {
11797 fprintf(stderr, "fatal: pModes inconsistent between guest and host\n");
11798 }
11799 stream->read((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
11800 }
11801 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
11802 stream->read(&vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011803 countingStream->clearPool();
11804 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011805 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011806 mImpl->log("finish vkGetDeviceGroupSurfacePresentModesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011807 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
11808}
11809
11810VkResult VkEncoder::vkGetPhysicalDevicePresentRectanglesKHR(
11811 VkPhysicalDevice physicalDevice,
11812 VkSurfaceKHR surface,
11813 uint32_t* pRectCount,
11814 VkRect2D* pRects)
11815{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011816 mImpl->log("start vkGetPhysicalDevicePresentRectanglesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011817 auto stream = mImpl->stream();
11818 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011819 auto resources = mImpl->resources();
11820 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011821 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011822 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011823 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011824 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011825 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011826 countingStream->rewind();
11827 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011828 uint64_t cgen_var_845;
11829 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_845, 1);
11830 countingStream->write((uint64_t*)&cgen_var_845, 1 * 8);
11831 uint64_t cgen_var_846;
11832 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_846, 1);
11833 countingStream->write((uint64_t*)&cgen_var_846, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011834 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011835 uint64_t cgen_var_847 = (uint64_t)(uintptr_t)pRectCount;
11836 countingStream->putBe64(cgen_var_847);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011837 if (pRectCount)
11838 {
11839 countingStream->write((uint32_t*)pRectCount, sizeof(uint32_t));
11840 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011841 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011842 uint64_t cgen_var_848 = (uint64_t)(uintptr_t)pRects;
11843 countingStream->putBe64(cgen_var_848);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011844 if (pRects)
11845 {
11846 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11847 {
11848 marshal_VkRect2D(countingStream, (VkRect2D*)(pRects + i));
11849 }
11850 }
11851 }
11852 uint32_t packetSize_vkGetPhysicalDevicePresentRectanglesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11853 countingStream->rewind();
11854 uint32_t opcode_vkGetPhysicalDevicePresentRectanglesKHR = OP_vkGetPhysicalDevicePresentRectanglesKHR;
11855 stream->write(&opcode_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
11856 stream->write(&packetSize_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011857 uint64_t cgen_var_849;
11858 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_849, 1);
11859 stream->write((uint64_t*)&cgen_var_849, 1 * 8);
11860 uint64_t cgen_var_850;
11861 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_850, 1);
11862 stream->write((uint64_t*)&cgen_var_850, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011863 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011864 uint64_t cgen_var_851 = (uint64_t)(uintptr_t)pRectCount;
11865 stream->putBe64(cgen_var_851);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011866 if (pRectCount)
11867 {
11868 stream->write((uint32_t*)pRectCount, sizeof(uint32_t));
11869 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011870 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011871 uint64_t cgen_var_852 = (uint64_t)(uintptr_t)pRects;
11872 stream->putBe64(cgen_var_852);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011873 if (pRects)
11874 {
11875 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11876 {
11877 marshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
11878 }
11879 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011880 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011881 uint32_t* check_pRectCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011882 check_pRectCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011883 if (pRectCount)
11884 {
11885 if (!(check_pRectCount))
11886 {
11887 fprintf(stderr, "fatal: pRectCount inconsistent between guest and host\n");
11888 }
11889 stream->read((uint32_t*)pRectCount, sizeof(uint32_t));
11890 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011891 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011892 VkRect2D* check_pRects;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011893 check_pRects = (VkRect2D*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011894 if (pRects)
11895 {
11896 if (!(check_pRects))
11897 {
11898 fprintf(stderr, "fatal: pRects inconsistent between guest and host\n");
11899 }
11900 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11901 {
11902 unmarshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
11903 }
11904 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080011905 if (pRects)
11906 {
11907 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11908 {
11909 transform_fromhost_VkRect2D(mImpl->resources(), (VkRect2D*)(pRects + i));
11910 }
11911 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011912 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
11913 stream->read(&vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011914 countingStream->clearPool();
11915 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011916 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011917 mImpl->log("finish vkGetPhysicalDevicePresentRectanglesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011918 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
11919}
11920
11921VkResult VkEncoder::vkAcquireNextImage2KHR(
11922 VkDevice device,
11923 const VkAcquireNextImageInfoKHR* pAcquireInfo,
11924 uint32_t* pImageIndex)
11925{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011926 mImpl->log("start vkAcquireNextImage2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011927 auto stream = mImpl->stream();
11928 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011929 auto resources = mImpl->resources();
11930 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011931 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011932 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011933 VkAcquireNextImageInfoKHR* local_pAcquireInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011934 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011935 local_pAcquireInfo = nullptr;
11936 if (pAcquireInfo)
11937 {
11938 local_pAcquireInfo = (VkAcquireNextImageInfoKHR*)pool->alloc(sizeof(const VkAcquireNextImageInfoKHR));
11939 deepcopy_VkAcquireNextImageInfoKHR(pool, pAcquireInfo, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
11940 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080011941 if (local_pAcquireInfo)
11942 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011943 transform_tohost_VkAcquireNextImageInfoKHR(mImpl->resources(), (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011944 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011945 countingStream->rewind();
11946 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011947 uint64_t cgen_var_855;
11948 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_855, 1);
11949 countingStream->write((uint64_t*)&cgen_var_855, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011950 marshal_VkAcquireNextImageInfoKHR(countingStream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011951 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
11952 }
11953 uint32_t packetSize_vkAcquireNextImage2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11954 countingStream->rewind();
11955 uint32_t opcode_vkAcquireNextImage2KHR = OP_vkAcquireNextImage2KHR;
11956 stream->write(&opcode_vkAcquireNextImage2KHR, sizeof(uint32_t));
11957 stream->write(&packetSize_vkAcquireNextImage2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011958 uint64_t cgen_var_856;
11959 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_856, 1);
11960 stream->write((uint64_t*)&cgen_var_856, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011961 marshal_VkAcquireNextImageInfoKHR(stream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011962 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
11963 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
11964 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
11965 stream->read(&vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011966 countingStream->clearPool();
11967 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011968 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011969 mImpl->log("finish vkAcquireNextImage2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011970 return vkAcquireNextImage2KHR_VkResult_return;
11971}
11972
11973#endif
11974#ifdef VK_KHR_display
11975VkResult VkEncoder::vkGetPhysicalDeviceDisplayPropertiesKHR(
11976 VkPhysicalDevice physicalDevice,
11977 uint32_t* pPropertyCount,
11978 VkDisplayPropertiesKHR* pProperties)
11979{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011980 mImpl->log("start vkGetPhysicalDeviceDisplayPropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011981 auto stream = mImpl->stream();
11982 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011983 auto resources = mImpl->resources();
11984 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011985 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011986 VkPhysicalDevice local_physicalDevice;
11987 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011988 countingStream->rewind();
11989 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011990 uint64_t cgen_var_857;
11991 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_857, 1);
11992 countingStream->write((uint64_t*)&cgen_var_857, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011993 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011994 uint64_t cgen_var_858 = (uint64_t)(uintptr_t)pPropertyCount;
11995 countingStream->putBe64(cgen_var_858);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011996 if (pPropertyCount)
11997 {
11998 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11999 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012000 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012001 uint64_t cgen_var_859 = (uint64_t)(uintptr_t)pProperties;
12002 countingStream->putBe64(cgen_var_859);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012003 if (pProperties)
12004 {
12005 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12006 {
12007 marshal_VkDisplayPropertiesKHR(countingStream, (VkDisplayPropertiesKHR*)(pProperties + i));
12008 }
12009 }
12010 }
12011 uint32_t packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12012 countingStream->rewind();
12013 uint32_t opcode_vkGetPhysicalDeviceDisplayPropertiesKHR = OP_vkGetPhysicalDeviceDisplayPropertiesKHR;
12014 stream->write(&opcode_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
12015 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012016 uint64_t cgen_var_860;
12017 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_860, 1);
12018 stream->write((uint64_t*)&cgen_var_860, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012019 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012020 uint64_t cgen_var_861 = (uint64_t)(uintptr_t)pPropertyCount;
12021 stream->putBe64(cgen_var_861);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012022 if (pPropertyCount)
12023 {
12024 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12025 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012026 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012027 uint64_t cgen_var_862 = (uint64_t)(uintptr_t)pProperties;
12028 stream->putBe64(cgen_var_862);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012029 if (pProperties)
12030 {
12031 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12032 {
12033 marshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
12034 }
12035 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012036 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012037 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012038 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012039 if (pPropertyCount)
12040 {
12041 if (!(check_pPropertyCount))
12042 {
12043 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12044 }
12045 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12046 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012047 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012048 VkDisplayPropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012049 check_pProperties = (VkDisplayPropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012050 if (pProperties)
12051 {
12052 if (!(check_pProperties))
12053 {
12054 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12055 }
12056 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12057 {
12058 unmarshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
12059 }
12060 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080012061 if (pProperties)
12062 {
12063 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12064 {
12065 transform_fromhost_VkDisplayPropertiesKHR(mImpl->resources(), (VkDisplayPropertiesKHR*)(pProperties + i));
12066 }
12067 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012068 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
12069 stream->read(&vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012070 countingStream->clearPool();
12071 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012072 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012073 mImpl->log("finish vkGetPhysicalDeviceDisplayPropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012074 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
12075}
12076
12077VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
12078 VkPhysicalDevice physicalDevice,
12079 uint32_t* pPropertyCount,
12080 VkDisplayPlanePropertiesKHR* pProperties)
12081{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012082 mImpl->log("start vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012083 auto stream = mImpl->stream();
12084 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012085 auto resources = mImpl->resources();
12086 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012087 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012088 VkPhysicalDevice local_physicalDevice;
12089 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012090 countingStream->rewind();
12091 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012092 uint64_t cgen_var_865;
12093 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_865, 1);
12094 countingStream->write((uint64_t*)&cgen_var_865, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012095 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012096 uint64_t cgen_var_866 = (uint64_t)(uintptr_t)pPropertyCount;
12097 countingStream->putBe64(cgen_var_866);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012098 if (pPropertyCount)
12099 {
12100 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12101 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012102 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012103 uint64_t cgen_var_867 = (uint64_t)(uintptr_t)pProperties;
12104 countingStream->putBe64(cgen_var_867);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012105 if (pProperties)
12106 {
12107 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12108 {
12109 marshal_VkDisplayPlanePropertiesKHR(countingStream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12110 }
12111 }
12112 }
12113 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12114 countingStream->rewind();
12115 uint32_t opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = OP_vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
12116 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
12117 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012118 uint64_t cgen_var_868;
12119 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_868, 1);
12120 stream->write((uint64_t*)&cgen_var_868, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012121 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012122 uint64_t cgen_var_869 = (uint64_t)(uintptr_t)pPropertyCount;
12123 stream->putBe64(cgen_var_869);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012124 if (pPropertyCount)
12125 {
12126 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12127 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012128 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012129 uint64_t cgen_var_870 = (uint64_t)(uintptr_t)pProperties;
12130 stream->putBe64(cgen_var_870);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012131 if (pProperties)
12132 {
12133 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12134 {
12135 marshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12136 }
12137 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012138 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012139 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012140 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012141 if (pPropertyCount)
12142 {
12143 if (!(check_pPropertyCount))
12144 {
12145 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12146 }
12147 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12148 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012149 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012150 VkDisplayPlanePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012151 check_pProperties = (VkDisplayPlanePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012152 if (pProperties)
12153 {
12154 if (!(check_pProperties))
12155 {
12156 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12157 }
12158 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12159 {
12160 unmarshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12161 }
12162 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080012163 if (pProperties)
12164 {
12165 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12166 {
12167 transform_fromhost_VkDisplayPlanePropertiesKHR(mImpl->resources(), (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12168 }
12169 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012170 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
12171 stream->read(&vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012172 countingStream->clearPool();
12173 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012174 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012175 mImpl->log("finish vkGetPhysicalDeviceDisplayPlanePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012176 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
12177}
12178
12179VkResult VkEncoder::vkGetDisplayPlaneSupportedDisplaysKHR(
12180 VkPhysicalDevice physicalDevice,
12181 uint32_t planeIndex,
12182 uint32_t* pDisplayCount,
12183 VkDisplayKHR* pDisplays)
12184{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012185 mImpl->log("start vkGetDisplayPlaneSupportedDisplaysKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012186 auto stream = mImpl->stream();
12187 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012188 auto resources = mImpl->resources();
12189 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012190 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012191 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012192 uint32_t local_planeIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012193 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012194 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012195 countingStream->rewind();
12196 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012197 uint64_t cgen_var_873;
12198 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_873, 1);
12199 countingStream->write((uint64_t*)&cgen_var_873, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012200 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012201 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012202 uint64_t cgen_var_874 = (uint64_t)(uintptr_t)pDisplayCount;
12203 countingStream->putBe64(cgen_var_874);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012204 if (pDisplayCount)
12205 {
12206 countingStream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
12207 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012208 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012209 uint64_t cgen_var_875 = (uint64_t)(uintptr_t)pDisplays;
12210 countingStream->putBe64(cgen_var_875);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012211 if (pDisplays)
12212 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080012213 if ((*(pDisplayCount)))
12214 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012215 uint64_t* cgen_var_876;
12216 countingStream->alloc((void**)&cgen_var_876, (*(pDisplayCount)) * 8);
12217 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_876, (*(pDisplayCount)));
12218 countingStream->write((uint64_t*)cgen_var_876, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012219 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012220 }
12221 }
12222 uint32_t packetSize_vkGetDisplayPlaneSupportedDisplaysKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12223 countingStream->rewind();
12224 uint32_t opcode_vkGetDisplayPlaneSupportedDisplaysKHR = OP_vkGetDisplayPlaneSupportedDisplaysKHR;
12225 stream->write(&opcode_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
12226 stream->write(&packetSize_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012227 uint64_t cgen_var_877;
12228 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_877, 1);
12229 stream->write((uint64_t*)&cgen_var_877, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012230 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012231 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012232 uint64_t cgen_var_878 = (uint64_t)(uintptr_t)pDisplayCount;
12233 stream->putBe64(cgen_var_878);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012234 if (pDisplayCount)
12235 {
12236 stream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
12237 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012238 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012239 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012240 uint64_t cgen_var_879 = (uint64_t)(uintptr_t)pDisplays;
12241 stream->putBe64(cgen_var_879);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012242 if (pDisplays)
12243 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080012244 if ((*(pDisplayCount)))
12245 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012246 uint64_t* cgen_var_880;
12247 stream->alloc((void**)&cgen_var_880, (*(pDisplayCount)) * 8);
12248 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_880, (*(pDisplayCount)));
12249 stream->write((uint64_t*)cgen_var_880, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012250 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012251 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012252 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012253 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012254 uint32_t* check_pDisplayCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012255 check_pDisplayCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012256 if (pDisplayCount)
12257 {
12258 if (!(check_pDisplayCount))
12259 {
12260 fprintf(stderr, "fatal: pDisplayCount inconsistent between guest and host\n");
12261 }
12262 stream->read((uint32_t*)pDisplayCount, sizeof(uint32_t));
12263 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012264 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012265 VkDisplayKHR* check_pDisplays;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012266 check_pDisplays = (VkDisplayKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012267 if (pDisplays)
12268 {
12269 if (!(check_pDisplays))
12270 {
12271 fprintf(stderr, "fatal: pDisplays inconsistent between guest and host\n");
12272 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080012273 if ((*(pDisplayCount)))
12274 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012275 uint64_t* cgen_var_883;
12276 stream->alloc((void**)&cgen_var_883, (*(pDisplayCount)) * 8);
12277 stream->read((uint64_t*)cgen_var_883, (*(pDisplayCount)) * 8);
12278 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(cgen_var_883, (VkDisplayKHR*)pDisplays, (*(pDisplayCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012279 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012280 }
12281 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
12282 stream->read(&vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012283 countingStream->clearPool();
12284 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012285 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012286 mImpl->log("finish vkGetDisplayPlaneSupportedDisplaysKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012287 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
12288}
12289
12290VkResult VkEncoder::vkGetDisplayModePropertiesKHR(
12291 VkPhysicalDevice physicalDevice,
12292 VkDisplayKHR display,
12293 uint32_t* pPropertyCount,
12294 VkDisplayModePropertiesKHR* pProperties)
12295{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012296 mImpl->log("start vkGetDisplayModePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012297 auto stream = mImpl->stream();
12298 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012299 auto resources = mImpl->resources();
12300 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012301 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012302 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012303 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012304 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012305 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012306 countingStream->rewind();
12307 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012308 uint64_t cgen_var_884;
12309 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_884, 1);
12310 countingStream->write((uint64_t*)&cgen_var_884, 1 * 8);
12311 uint64_t cgen_var_885;
12312 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_885, 1);
12313 countingStream->write((uint64_t*)&cgen_var_885, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012314 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012315 uint64_t cgen_var_886 = (uint64_t)(uintptr_t)pPropertyCount;
12316 countingStream->putBe64(cgen_var_886);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012317 if (pPropertyCount)
12318 {
12319 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12320 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012321 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012322 uint64_t cgen_var_887 = (uint64_t)(uintptr_t)pProperties;
12323 countingStream->putBe64(cgen_var_887);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012324 if (pProperties)
12325 {
12326 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12327 {
12328 marshal_VkDisplayModePropertiesKHR(countingStream, (VkDisplayModePropertiesKHR*)(pProperties + i));
12329 }
12330 }
12331 }
12332 uint32_t packetSize_vkGetDisplayModePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12333 countingStream->rewind();
12334 uint32_t opcode_vkGetDisplayModePropertiesKHR = OP_vkGetDisplayModePropertiesKHR;
12335 stream->write(&opcode_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
12336 stream->write(&packetSize_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012337 uint64_t cgen_var_888;
12338 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_888, 1);
12339 stream->write((uint64_t*)&cgen_var_888, 1 * 8);
12340 uint64_t cgen_var_889;
12341 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_889, 1);
12342 stream->write((uint64_t*)&cgen_var_889, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012343 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012344 uint64_t cgen_var_890 = (uint64_t)(uintptr_t)pPropertyCount;
12345 stream->putBe64(cgen_var_890);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012346 if (pPropertyCount)
12347 {
12348 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12349 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012350 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012351 uint64_t cgen_var_891 = (uint64_t)(uintptr_t)pProperties;
12352 stream->putBe64(cgen_var_891);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012353 if (pProperties)
12354 {
12355 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12356 {
12357 marshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
12358 }
12359 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012360 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012361 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012362 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012363 if (pPropertyCount)
12364 {
12365 if (!(check_pPropertyCount))
12366 {
12367 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12368 }
12369 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12370 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012371 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012372 VkDisplayModePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012373 check_pProperties = (VkDisplayModePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012374 if (pProperties)
12375 {
12376 if (!(check_pProperties))
12377 {
12378 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12379 }
12380 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12381 {
12382 unmarshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
12383 }
12384 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080012385 if (pProperties)
12386 {
12387 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12388 {
12389 transform_fromhost_VkDisplayModePropertiesKHR(mImpl->resources(), (VkDisplayModePropertiesKHR*)(pProperties + i));
12390 }
12391 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012392 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
12393 stream->read(&vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012394 countingStream->clearPool();
12395 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012396 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012397 mImpl->log("finish vkGetDisplayModePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012398 return vkGetDisplayModePropertiesKHR_VkResult_return;
12399}
12400
12401VkResult VkEncoder::vkCreateDisplayModeKHR(
12402 VkPhysicalDevice physicalDevice,
12403 VkDisplayKHR display,
12404 const VkDisplayModeCreateInfoKHR* pCreateInfo,
12405 const VkAllocationCallbacks* pAllocator,
12406 VkDisplayModeKHR* pMode)
12407{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012408 mImpl->log("start vkCreateDisplayModeKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012409 auto stream = mImpl->stream();
12410 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012411 auto resources = mImpl->resources();
12412 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012413 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012414 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012415 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012416 VkDisplayModeCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012417 VkAllocationCallbacks* local_pAllocator;
12418 local_physicalDevice = physicalDevice;
12419 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012420 local_pCreateInfo = nullptr;
12421 if (pCreateInfo)
12422 {
12423 local_pCreateInfo = (VkDisplayModeCreateInfoKHR*)pool->alloc(sizeof(const VkDisplayModeCreateInfoKHR));
12424 deepcopy_VkDisplayModeCreateInfoKHR(pool, pCreateInfo, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
12425 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012426 local_pAllocator = nullptr;
12427 if (pAllocator)
12428 {
12429 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12430 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12431 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012432 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012433 if (local_pCreateInfo)
12434 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012435 transform_tohost_VkDisplayModeCreateInfoKHR(mImpl->resources(), (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012436 }
12437 if (local_pAllocator)
12438 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012439 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012440 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012441 countingStream->rewind();
12442 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012443 uint64_t cgen_var_894;
12444 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_894, 1);
12445 countingStream->write((uint64_t*)&cgen_var_894, 1 * 8);
12446 uint64_t cgen_var_895;
12447 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_895, 1);
12448 countingStream->write((uint64_t*)&cgen_var_895, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012449 marshal_VkDisplayModeCreateInfoKHR(countingStream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012450 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012451 uint64_t cgen_var_896 = (uint64_t)(uintptr_t)local_pAllocator;
12452 countingStream->putBe64(cgen_var_896);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012453 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012454 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012455 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012456 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012457 uint64_t cgen_var_897;
12458 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_897, 1);
12459 countingStream->write((uint64_t*)&cgen_var_897, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012460 }
12461 uint32_t packetSize_vkCreateDisplayModeKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12462 countingStream->rewind();
12463 uint32_t opcode_vkCreateDisplayModeKHR = OP_vkCreateDisplayModeKHR;
12464 stream->write(&opcode_vkCreateDisplayModeKHR, sizeof(uint32_t));
12465 stream->write(&packetSize_vkCreateDisplayModeKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012466 uint64_t cgen_var_898;
12467 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_898, 1);
12468 stream->write((uint64_t*)&cgen_var_898, 1 * 8);
12469 uint64_t cgen_var_899;
12470 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_899, 1);
12471 stream->write((uint64_t*)&cgen_var_899, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012472 marshal_VkDisplayModeCreateInfoKHR(stream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012473 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012474 uint64_t cgen_var_900 = (uint64_t)(uintptr_t)local_pAllocator;
12475 stream->putBe64(cgen_var_900);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012476 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012477 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012478 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012479 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012480 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012481 uint64_t cgen_var_901;
12482 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_901, 1);
12483 stream->write((uint64_t*)&cgen_var_901, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012484 stream->setHandleMapping(resources->unwrapMapping());
12485 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012486 uint64_t cgen_var_902;
12487 stream->read((uint64_t*)&cgen_var_902, 8);
12488 stream->handleMapping()->mapHandles_u64_VkDisplayModeKHR(&cgen_var_902, (VkDisplayModeKHR*)pMode, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012489 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012490 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
12491 stream->read(&vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012492 countingStream->clearPool();
12493 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012494 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012495 mImpl->log("finish vkCreateDisplayModeKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012496 return vkCreateDisplayModeKHR_VkResult_return;
12497}
12498
12499VkResult VkEncoder::vkGetDisplayPlaneCapabilitiesKHR(
12500 VkPhysicalDevice physicalDevice,
12501 VkDisplayModeKHR mode,
12502 uint32_t planeIndex,
12503 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
12504{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012505 mImpl->log("start vkGetDisplayPlaneCapabilitiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012506 auto stream = mImpl->stream();
12507 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012508 auto resources = mImpl->resources();
12509 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012510 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012511 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012512 VkDisplayModeKHR local_mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012513 uint32_t local_planeIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012514 local_physicalDevice = physicalDevice;
12515 local_mode = mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012516 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012517 countingStream->rewind();
12518 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012519 uint64_t cgen_var_903;
12520 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_903, 1);
12521 countingStream->write((uint64_t*)&cgen_var_903, 1 * 8);
12522 uint64_t cgen_var_904;
12523 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_904, 1);
12524 countingStream->write((uint64_t*)&cgen_var_904, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012525 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012526 marshal_VkDisplayPlaneCapabilitiesKHR(countingStream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
12527 }
12528 uint32_t packetSize_vkGetDisplayPlaneCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12529 countingStream->rewind();
12530 uint32_t opcode_vkGetDisplayPlaneCapabilitiesKHR = OP_vkGetDisplayPlaneCapabilitiesKHR;
12531 stream->write(&opcode_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
12532 stream->write(&packetSize_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012533 uint64_t cgen_var_905;
12534 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_905, 1);
12535 stream->write((uint64_t*)&cgen_var_905, 1 * 8);
12536 uint64_t cgen_var_906;
12537 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_906, 1);
12538 stream->write((uint64_t*)&cgen_var_906, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012539 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012540 marshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
12541 unmarshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080012542 if (pCapabilities)
12543 {
12544 transform_fromhost_VkDisplayPlaneCapabilitiesKHR(mImpl->resources(), (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
12545 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012546 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
12547 stream->read(&vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012548 countingStream->clearPool();
12549 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012550 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012551 mImpl->log("finish vkGetDisplayPlaneCapabilitiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012552 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
12553}
12554
12555VkResult VkEncoder::vkCreateDisplayPlaneSurfaceKHR(
12556 VkInstance instance,
12557 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
12558 const VkAllocationCallbacks* pAllocator,
12559 VkSurfaceKHR* pSurface)
12560{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012561 mImpl->log("start vkCreateDisplayPlaneSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012562 auto stream = mImpl->stream();
12563 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012564 auto resources = mImpl->resources();
12565 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012566 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012567 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012568 VkDisplaySurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012569 VkAllocationCallbacks* local_pAllocator;
12570 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012571 local_pCreateInfo = nullptr;
12572 if (pCreateInfo)
12573 {
12574 local_pCreateInfo = (VkDisplaySurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkDisplaySurfaceCreateInfoKHR));
12575 deepcopy_VkDisplaySurfaceCreateInfoKHR(pool, pCreateInfo, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
12576 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012577 local_pAllocator = nullptr;
12578 if (pAllocator)
12579 {
12580 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12581 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12582 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012583 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012584 if (local_pCreateInfo)
12585 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012586 transform_tohost_VkDisplaySurfaceCreateInfoKHR(mImpl->resources(), (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012587 }
12588 if (local_pAllocator)
12589 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012590 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012591 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012592 countingStream->rewind();
12593 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012594 uint64_t cgen_var_907;
12595 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_907, 1);
12596 countingStream->write((uint64_t*)&cgen_var_907, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012597 marshal_VkDisplaySurfaceCreateInfoKHR(countingStream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012598 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012599 uint64_t cgen_var_908 = (uint64_t)(uintptr_t)local_pAllocator;
12600 countingStream->putBe64(cgen_var_908);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012601 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012602 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012603 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012604 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012605 uint64_t cgen_var_909;
12606 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_909, 1);
12607 countingStream->write((uint64_t*)&cgen_var_909, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012608 }
12609 uint32_t packetSize_vkCreateDisplayPlaneSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12610 countingStream->rewind();
12611 uint32_t opcode_vkCreateDisplayPlaneSurfaceKHR = OP_vkCreateDisplayPlaneSurfaceKHR;
12612 stream->write(&opcode_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
12613 stream->write(&packetSize_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012614 uint64_t cgen_var_910;
12615 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_910, 1);
12616 stream->write((uint64_t*)&cgen_var_910, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012617 marshal_VkDisplaySurfaceCreateInfoKHR(stream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012618 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012619 uint64_t cgen_var_911 = (uint64_t)(uintptr_t)local_pAllocator;
12620 stream->putBe64(cgen_var_911);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012621 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012622 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012623 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012624 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012625 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012626 uint64_t cgen_var_912;
12627 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_912, 1);
12628 stream->write((uint64_t*)&cgen_var_912, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012629 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012630 uint64_t cgen_var_913;
12631 stream->read((uint64_t*)&cgen_var_913, 8);
12632 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_913, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012633 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
12634 stream->read(&vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012635 countingStream->clearPool();
12636 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012637 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012638 mImpl->log("finish vkCreateDisplayPlaneSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012639 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
12640}
12641
12642#endif
12643#ifdef VK_KHR_display_swapchain
12644VkResult VkEncoder::vkCreateSharedSwapchainsKHR(
12645 VkDevice device,
12646 uint32_t swapchainCount,
12647 const VkSwapchainCreateInfoKHR* pCreateInfos,
12648 const VkAllocationCallbacks* pAllocator,
12649 VkSwapchainKHR* pSwapchains)
12650{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012651 mImpl->log("start vkCreateSharedSwapchainsKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012652 auto stream = mImpl->stream();
12653 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012654 auto resources = mImpl->resources();
12655 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012656 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012657 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012658 uint32_t local_swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012659 VkSwapchainCreateInfoKHR* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012660 VkAllocationCallbacks* local_pAllocator;
12661 local_device = device;
12662 local_swapchainCount = swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012663 local_pCreateInfos = nullptr;
12664 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012665 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012666 local_pCreateInfos = (VkSwapchainCreateInfoKHR*)pool->alloc(((swapchainCount)) * sizeof(const VkSwapchainCreateInfoKHR));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012667 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
12668 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012669 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfos + i, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012670 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012671 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012672 local_pAllocator = nullptr;
12673 if (pAllocator)
12674 {
12675 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12676 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12677 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012678 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012679 if (local_pCreateInfos)
12680 {
12681 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
12682 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012683 transform_tohost_VkSwapchainCreateInfoKHR(mImpl->resources(), (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012684 }
12685 }
12686 if (local_pAllocator)
12687 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012688 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012689 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012690 countingStream->rewind();
12691 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012692 uint64_t cgen_var_914;
12693 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_914, 1);
12694 countingStream->write((uint64_t*)&cgen_var_914, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012695 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
12696 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
12697 {
12698 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
12699 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012700 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012701 uint64_t cgen_var_915 = (uint64_t)(uintptr_t)local_pAllocator;
12702 countingStream->putBe64(cgen_var_915);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012703 if (local_pAllocator)
12704 {
12705 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012706 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080012707 if (((swapchainCount)))
12708 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012709 uint64_t* cgen_var_916;
12710 countingStream->alloc((void**)&cgen_var_916, ((swapchainCount)) * 8);
12711 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_916, ((swapchainCount)));
12712 countingStream->write((uint64_t*)cgen_var_916, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012713 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012714 }
12715 uint32_t packetSize_vkCreateSharedSwapchainsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12716 countingStream->rewind();
12717 uint32_t opcode_vkCreateSharedSwapchainsKHR = OP_vkCreateSharedSwapchainsKHR;
12718 stream->write(&opcode_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
12719 stream->write(&packetSize_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012720 uint64_t cgen_var_917;
12721 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_917, 1);
12722 stream->write((uint64_t*)&cgen_var_917, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012723 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012724 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
12725 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012726 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012727 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012728 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012729 uint64_t cgen_var_918 = (uint64_t)(uintptr_t)local_pAllocator;
12730 stream->putBe64(cgen_var_918);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012731 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012732 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012733 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012734 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012735 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -080012736 if (((swapchainCount)))
12737 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012738 uint64_t* cgen_var_919;
12739 stream->alloc((void**)&cgen_var_919, ((swapchainCount)) * 8);
12740 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_919, ((swapchainCount)));
12741 stream->write((uint64_t*)cgen_var_919, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012742 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012743 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -080012744 if (((swapchainCount)))
12745 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012746 uint64_t* cgen_var_920;
12747 stream->alloc((void**)&cgen_var_920, ((swapchainCount)) * 8);
12748 stream->read((uint64_t*)cgen_var_920, ((swapchainCount)) * 8);
12749 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(cgen_var_920, (VkSwapchainKHR*)pSwapchains, ((swapchainCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012750 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012751 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
12752 stream->read(&vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012753 countingStream->clearPool();
12754 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012755 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012756 mImpl->log("finish vkCreateSharedSwapchainsKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012757 return vkCreateSharedSwapchainsKHR_VkResult_return;
12758}
12759
12760#endif
12761#ifdef VK_KHR_xlib_surface
12762VkResult VkEncoder::vkCreateXlibSurfaceKHR(
12763 VkInstance instance,
12764 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
12765 const VkAllocationCallbacks* pAllocator,
12766 VkSurfaceKHR* pSurface)
12767{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012768 mImpl->log("start vkCreateXlibSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012769 auto stream = mImpl->stream();
12770 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012771 auto resources = mImpl->resources();
12772 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012773 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012774 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012775 VkXlibSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012776 VkAllocationCallbacks* local_pAllocator;
12777 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012778 local_pCreateInfo = nullptr;
12779 if (pCreateInfo)
12780 {
12781 local_pCreateInfo = (VkXlibSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXlibSurfaceCreateInfoKHR));
12782 deepcopy_VkXlibSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
12783 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012784 local_pAllocator = nullptr;
12785 if (pAllocator)
12786 {
12787 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12788 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12789 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012790 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012791 if (local_pCreateInfo)
12792 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012793 transform_tohost_VkXlibSurfaceCreateInfoKHR(mImpl->resources(), (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012794 }
12795 if (local_pAllocator)
12796 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012797 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012798 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012799 countingStream->rewind();
12800 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012801 uint64_t cgen_var_921;
12802 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_921, 1);
12803 countingStream->write((uint64_t*)&cgen_var_921, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012804 marshal_VkXlibSurfaceCreateInfoKHR(countingStream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012805 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012806 uint64_t cgen_var_922 = (uint64_t)(uintptr_t)local_pAllocator;
12807 countingStream->putBe64(cgen_var_922);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012808 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012809 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012810 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012811 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012812 uint64_t cgen_var_923;
12813 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_923, 1);
12814 countingStream->write((uint64_t*)&cgen_var_923, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012815 }
12816 uint32_t packetSize_vkCreateXlibSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12817 countingStream->rewind();
12818 uint32_t opcode_vkCreateXlibSurfaceKHR = OP_vkCreateXlibSurfaceKHR;
12819 stream->write(&opcode_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
12820 stream->write(&packetSize_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012821 uint64_t cgen_var_924;
12822 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_924, 1);
12823 stream->write((uint64_t*)&cgen_var_924, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012824 marshal_VkXlibSurfaceCreateInfoKHR(stream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012825 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012826 uint64_t cgen_var_925 = (uint64_t)(uintptr_t)local_pAllocator;
12827 stream->putBe64(cgen_var_925);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012828 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012829 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012830 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012831 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012832 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012833 uint64_t cgen_var_926;
12834 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_926, 1);
12835 stream->write((uint64_t*)&cgen_var_926, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012836 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012837 uint64_t cgen_var_927;
12838 stream->read((uint64_t*)&cgen_var_927, 8);
12839 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_927, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012840 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
12841 stream->read(&vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012842 countingStream->clearPool();
12843 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012844 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012845 mImpl->log("finish vkCreateXlibSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012846 return vkCreateXlibSurfaceKHR_VkResult_return;
12847}
12848
12849VkBool32 VkEncoder::vkGetPhysicalDeviceXlibPresentationSupportKHR(
12850 VkPhysicalDevice physicalDevice,
12851 uint32_t queueFamilyIndex,
12852 Display* dpy,
12853 VisualID visualID)
12854{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012855 mImpl->log("start vkGetPhysicalDeviceXlibPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012856 auto stream = mImpl->stream();
12857 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012858 auto resources = mImpl->resources();
12859 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012860 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012861 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012862 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012863 VisualID local_visualID;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012864 local_physicalDevice = physicalDevice;
12865 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012866 local_visualID = visualID;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012867 countingStream->rewind();
12868 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012869 uint64_t cgen_var_928;
12870 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_928, 1);
12871 countingStream->write((uint64_t*)&cgen_var_928, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012872 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012873 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012874 countingStream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012875 }
12876 uint32_t packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12877 countingStream->rewind();
12878 uint32_t opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR = OP_vkGetPhysicalDeviceXlibPresentationSupportKHR;
12879 stream->write(&opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
12880 stream->write(&packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012881 uint64_t cgen_var_929;
12882 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_929, 1);
12883 stream->write((uint64_t*)&cgen_var_929, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012884 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012885 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012886 stream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012887 stream->read((Display*)dpy, sizeof(Display));
12888 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
12889 stream->read(&vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012890 countingStream->clearPool();
12891 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012892 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012893 mImpl->log("finish vkGetPhysicalDeviceXlibPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012894 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
12895}
12896
12897#endif
12898#ifdef VK_KHR_xcb_surface
12899VkResult VkEncoder::vkCreateXcbSurfaceKHR(
12900 VkInstance instance,
12901 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
12902 const VkAllocationCallbacks* pAllocator,
12903 VkSurfaceKHR* pSurface)
12904{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012905 mImpl->log("start vkCreateXcbSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012906 auto stream = mImpl->stream();
12907 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012908 auto resources = mImpl->resources();
12909 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012910 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012911 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012912 VkXcbSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012913 VkAllocationCallbacks* local_pAllocator;
12914 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012915 local_pCreateInfo = nullptr;
12916 if (pCreateInfo)
12917 {
12918 local_pCreateInfo = (VkXcbSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXcbSurfaceCreateInfoKHR));
12919 deepcopy_VkXcbSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
12920 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012921 local_pAllocator = nullptr;
12922 if (pAllocator)
12923 {
12924 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12925 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12926 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012927 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012928 if (local_pCreateInfo)
12929 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012930 transform_tohost_VkXcbSurfaceCreateInfoKHR(mImpl->resources(), (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012931 }
12932 if (local_pAllocator)
12933 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012934 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012935 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012936 countingStream->rewind();
12937 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012938 uint64_t cgen_var_930;
12939 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_930, 1);
12940 countingStream->write((uint64_t*)&cgen_var_930, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012941 marshal_VkXcbSurfaceCreateInfoKHR(countingStream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012942 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012943 uint64_t cgen_var_931 = (uint64_t)(uintptr_t)local_pAllocator;
12944 countingStream->putBe64(cgen_var_931);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012945 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012946 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012947 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012948 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012949 uint64_t cgen_var_932;
12950 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_932, 1);
12951 countingStream->write((uint64_t*)&cgen_var_932, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012952 }
12953 uint32_t packetSize_vkCreateXcbSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12954 countingStream->rewind();
12955 uint32_t opcode_vkCreateXcbSurfaceKHR = OP_vkCreateXcbSurfaceKHR;
12956 stream->write(&opcode_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
12957 stream->write(&packetSize_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012958 uint64_t cgen_var_933;
12959 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_933, 1);
12960 stream->write((uint64_t*)&cgen_var_933, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012961 marshal_VkXcbSurfaceCreateInfoKHR(stream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012962 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012963 uint64_t cgen_var_934 = (uint64_t)(uintptr_t)local_pAllocator;
12964 stream->putBe64(cgen_var_934);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012965 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012966 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012967 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012968 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012969 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012970 uint64_t cgen_var_935;
12971 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_935, 1);
12972 stream->write((uint64_t*)&cgen_var_935, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012973 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012974 uint64_t cgen_var_936;
12975 stream->read((uint64_t*)&cgen_var_936, 8);
12976 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_936, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012977 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
12978 stream->read(&vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012979 countingStream->clearPool();
12980 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012981 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012982 mImpl->log("finish vkCreateXcbSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012983 return vkCreateXcbSurfaceKHR_VkResult_return;
12984}
12985
12986VkBool32 VkEncoder::vkGetPhysicalDeviceXcbPresentationSupportKHR(
12987 VkPhysicalDevice physicalDevice,
12988 uint32_t queueFamilyIndex,
12989 xcb_connection_t* connection,
12990 xcb_visualid_t visual_id)
12991{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012992 mImpl->log("start vkGetPhysicalDeviceXcbPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012993 auto stream = mImpl->stream();
12994 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012995 auto resources = mImpl->resources();
12996 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012997 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012998 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012999 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013000 xcb_visualid_t local_visual_id;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013001 local_physicalDevice = physicalDevice;
13002 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013003 local_visual_id = visual_id;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013004 countingStream->rewind();
13005 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013006 uint64_t cgen_var_937;
13007 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_937, 1);
13008 countingStream->write((uint64_t*)&cgen_var_937, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013009 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013010 countingStream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013011 countingStream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013012 }
13013 uint32_t packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13014 countingStream->rewind();
13015 uint32_t opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR = OP_vkGetPhysicalDeviceXcbPresentationSupportKHR;
13016 stream->write(&opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
13017 stream->write(&packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013018 uint64_t cgen_var_938;
13019 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_938, 1);
13020 stream->write((uint64_t*)&cgen_var_938, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013021 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013022 stream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013023 stream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013024 stream->read((xcb_connection_t*)connection, sizeof(xcb_connection_t));
13025 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13026 stream->read(&vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013027 countingStream->clearPool();
13028 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013029 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013030 mImpl->log("finish vkGetPhysicalDeviceXcbPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013031 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
13032}
13033
13034#endif
13035#ifdef VK_KHR_wayland_surface
13036VkResult VkEncoder::vkCreateWaylandSurfaceKHR(
13037 VkInstance instance,
13038 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
13039 const VkAllocationCallbacks* pAllocator,
13040 VkSurfaceKHR* pSurface)
13041{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013042 mImpl->log("start vkCreateWaylandSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013043 auto stream = mImpl->stream();
13044 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013045 auto resources = mImpl->resources();
13046 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013047 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013048 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013049 VkWaylandSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013050 VkAllocationCallbacks* local_pAllocator;
13051 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013052 local_pCreateInfo = nullptr;
13053 if (pCreateInfo)
13054 {
13055 local_pCreateInfo = (VkWaylandSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWaylandSurfaceCreateInfoKHR));
13056 deepcopy_VkWaylandSurfaceCreateInfoKHR(pool, pCreateInfo, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
13057 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013058 local_pAllocator = nullptr;
13059 if (pAllocator)
13060 {
13061 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13062 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13063 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013064 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013065 if (local_pCreateInfo)
13066 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013067 transform_tohost_VkWaylandSurfaceCreateInfoKHR(mImpl->resources(), (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013068 }
13069 if (local_pAllocator)
13070 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013071 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013072 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013073 countingStream->rewind();
13074 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013075 uint64_t cgen_var_939;
13076 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_939, 1);
13077 countingStream->write((uint64_t*)&cgen_var_939, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013078 marshal_VkWaylandSurfaceCreateInfoKHR(countingStream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013079 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013080 uint64_t cgen_var_940 = (uint64_t)(uintptr_t)local_pAllocator;
13081 countingStream->putBe64(cgen_var_940);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013082 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013083 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013084 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013085 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013086 uint64_t cgen_var_941;
13087 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_941, 1);
13088 countingStream->write((uint64_t*)&cgen_var_941, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013089 }
13090 uint32_t packetSize_vkCreateWaylandSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13091 countingStream->rewind();
13092 uint32_t opcode_vkCreateWaylandSurfaceKHR = OP_vkCreateWaylandSurfaceKHR;
13093 stream->write(&opcode_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
13094 stream->write(&packetSize_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013095 uint64_t cgen_var_942;
13096 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_942, 1);
13097 stream->write((uint64_t*)&cgen_var_942, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013098 marshal_VkWaylandSurfaceCreateInfoKHR(stream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013099 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013100 uint64_t cgen_var_943 = (uint64_t)(uintptr_t)local_pAllocator;
13101 stream->putBe64(cgen_var_943);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013102 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013103 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013104 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013105 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013106 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013107 uint64_t cgen_var_944;
13108 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_944, 1);
13109 stream->write((uint64_t*)&cgen_var_944, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013110 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013111 uint64_t cgen_var_945;
13112 stream->read((uint64_t*)&cgen_var_945, 8);
13113 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_945, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013114 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
13115 stream->read(&vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013116 countingStream->clearPool();
13117 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013118 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013119 mImpl->log("finish vkCreateWaylandSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013120 return vkCreateWaylandSurfaceKHR_VkResult_return;
13121}
13122
13123VkBool32 VkEncoder::vkGetPhysicalDeviceWaylandPresentationSupportKHR(
13124 VkPhysicalDevice physicalDevice,
13125 uint32_t queueFamilyIndex,
13126 wl_display* display)
13127{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013128 mImpl->log("start vkGetPhysicalDeviceWaylandPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013129 auto stream = mImpl->stream();
13130 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013131 auto resources = mImpl->resources();
13132 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013133 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013134 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013135 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013136 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013137 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013138 countingStream->rewind();
13139 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013140 uint64_t cgen_var_946;
13141 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_946, 1);
13142 countingStream->write((uint64_t*)&cgen_var_946, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013143 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013144 countingStream->write((wl_display*)display, sizeof(wl_display));
13145 }
13146 uint32_t packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13147 countingStream->rewind();
13148 uint32_t opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR = OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR;
13149 stream->write(&opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
13150 stream->write(&packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013151 uint64_t cgen_var_947;
13152 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_947, 1);
13153 stream->write((uint64_t*)&cgen_var_947, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013154 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013155 stream->write((wl_display*)display, sizeof(wl_display));
13156 stream->read((wl_display*)display, sizeof(wl_display));
13157 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13158 stream->read(&vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013159 countingStream->clearPool();
13160 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013161 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013162 mImpl->log("finish vkGetPhysicalDeviceWaylandPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013163 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
13164}
13165
13166#endif
13167#ifdef VK_KHR_mir_surface
13168VkResult VkEncoder::vkCreateMirSurfaceKHR(
13169 VkInstance instance,
13170 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
13171 const VkAllocationCallbacks* pAllocator,
13172 VkSurfaceKHR* pSurface)
13173{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013174 mImpl->log("start vkCreateMirSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013175 auto stream = mImpl->stream();
13176 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013177 auto resources = mImpl->resources();
13178 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013179 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013180 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013181 VkMirSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013182 VkAllocationCallbacks* local_pAllocator;
13183 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013184 local_pCreateInfo = nullptr;
13185 if (pCreateInfo)
13186 {
13187 local_pCreateInfo = (VkMirSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkMirSurfaceCreateInfoKHR));
13188 deepcopy_VkMirSurfaceCreateInfoKHR(pool, pCreateInfo, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
13189 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013190 local_pAllocator = nullptr;
13191 if (pAllocator)
13192 {
13193 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13194 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13195 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013196 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013197 if (local_pCreateInfo)
13198 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013199 transform_tohost_VkMirSurfaceCreateInfoKHR(mImpl->resources(), (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013200 }
13201 if (local_pAllocator)
13202 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013203 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013204 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013205 countingStream->rewind();
13206 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013207 uint64_t cgen_var_948;
13208 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_948, 1);
13209 countingStream->write((uint64_t*)&cgen_var_948, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013210 marshal_VkMirSurfaceCreateInfoKHR(countingStream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013211 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013212 uint64_t cgen_var_949 = (uint64_t)(uintptr_t)local_pAllocator;
13213 countingStream->putBe64(cgen_var_949);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013214 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013215 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013216 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013217 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013218 uint64_t cgen_var_950;
13219 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_950, 1);
13220 countingStream->write((uint64_t*)&cgen_var_950, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013221 }
13222 uint32_t packetSize_vkCreateMirSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13223 countingStream->rewind();
13224 uint32_t opcode_vkCreateMirSurfaceKHR = OP_vkCreateMirSurfaceKHR;
13225 stream->write(&opcode_vkCreateMirSurfaceKHR, sizeof(uint32_t));
13226 stream->write(&packetSize_vkCreateMirSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013227 uint64_t cgen_var_951;
13228 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_951, 1);
13229 stream->write((uint64_t*)&cgen_var_951, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013230 marshal_VkMirSurfaceCreateInfoKHR(stream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013231 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013232 uint64_t cgen_var_952 = (uint64_t)(uintptr_t)local_pAllocator;
13233 stream->putBe64(cgen_var_952);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013234 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013235 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013236 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013237 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013238 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013239 uint64_t cgen_var_953;
13240 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_953, 1);
13241 stream->write((uint64_t*)&cgen_var_953, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013242 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013243 uint64_t cgen_var_954;
13244 stream->read((uint64_t*)&cgen_var_954, 8);
13245 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_954, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013246 VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
13247 stream->read(&vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013248 countingStream->clearPool();
13249 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013250 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013251 mImpl->log("finish vkCreateMirSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013252 return vkCreateMirSurfaceKHR_VkResult_return;
13253}
13254
13255VkBool32 VkEncoder::vkGetPhysicalDeviceMirPresentationSupportKHR(
13256 VkPhysicalDevice physicalDevice,
13257 uint32_t queueFamilyIndex,
13258 MirConnection* connection)
13259{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013260 mImpl->log("start vkGetPhysicalDeviceMirPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013261 auto stream = mImpl->stream();
13262 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013263 auto resources = mImpl->resources();
13264 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013265 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013266 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013267 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013268 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013269 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013270 countingStream->rewind();
13271 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013272 uint64_t cgen_var_955;
13273 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_955, 1);
13274 countingStream->write((uint64_t*)&cgen_var_955, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013275 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013276 countingStream->write((MirConnection*)connection, sizeof(MirConnection));
13277 }
13278 uint32_t packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13279 countingStream->rewind();
13280 uint32_t opcode_vkGetPhysicalDeviceMirPresentationSupportKHR = OP_vkGetPhysicalDeviceMirPresentationSupportKHR;
13281 stream->write(&opcode_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
13282 stream->write(&packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013283 uint64_t cgen_var_956;
13284 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_956, 1);
13285 stream->write((uint64_t*)&cgen_var_956, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013286 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013287 stream->write((MirConnection*)connection, sizeof(MirConnection));
13288 stream->read((MirConnection*)connection, sizeof(MirConnection));
13289 VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13290 stream->read(&vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013291 countingStream->clearPool();
13292 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013293 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013294 mImpl->log("finish vkGetPhysicalDeviceMirPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013295 return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
13296}
13297
13298#endif
13299#ifdef VK_KHR_android_surface
13300VkResult VkEncoder::vkCreateAndroidSurfaceKHR(
13301 VkInstance instance,
13302 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
13303 const VkAllocationCallbacks* pAllocator,
13304 VkSurfaceKHR* pSurface)
13305{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013306 mImpl->log("start vkCreateAndroidSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013307 auto stream = mImpl->stream();
13308 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013309 auto resources = mImpl->resources();
13310 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013311 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013312 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013313 VkAndroidSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013314 VkAllocationCallbacks* local_pAllocator;
13315 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013316 local_pCreateInfo = nullptr;
13317 if (pCreateInfo)
13318 {
13319 local_pCreateInfo = (VkAndroidSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkAndroidSurfaceCreateInfoKHR));
13320 deepcopy_VkAndroidSurfaceCreateInfoKHR(pool, pCreateInfo, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
13321 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013322 local_pAllocator = nullptr;
13323 if (pAllocator)
13324 {
13325 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13326 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13327 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013328 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013329 if (local_pCreateInfo)
13330 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013331 transform_tohost_VkAndroidSurfaceCreateInfoKHR(mImpl->resources(), (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013332 }
13333 if (local_pAllocator)
13334 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013335 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013336 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013337 countingStream->rewind();
13338 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013339 uint64_t cgen_var_957;
13340 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_957, 1);
13341 countingStream->write((uint64_t*)&cgen_var_957, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013342 marshal_VkAndroidSurfaceCreateInfoKHR(countingStream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013343 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013344 uint64_t cgen_var_958 = (uint64_t)(uintptr_t)local_pAllocator;
13345 countingStream->putBe64(cgen_var_958);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013346 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013347 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013348 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013349 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013350 uint64_t cgen_var_959;
13351 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_959, 1);
13352 countingStream->write((uint64_t*)&cgen_var_959, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013353 }
13354 uint32_t packetSize_vkCreateAndroidSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13355 countingStream->rewind();
13356 uint32_t opcode_vkCreateAndroidSurfaceKHR = OP_vkCreateAndroidSurfaceKHR;
13357 stream->write(&opcode_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
13358 stream->write(&packetSize_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013359 uint64_t cgen_var_960;
13360 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_960, 1);
13361 stream->write((uint64_t*)&cgen_var_960, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013362 marshal_VkAndroidSurfaceCreateInfoKHR(stream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013363 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013364 uint64_t cgen_var_961 = (uint64_t)(uintptr_t)local_pAllocator;
13365 stream->putBe64(cgen_var_961);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013366 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013367 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013368 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013369 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013370 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013371 uint64_t cgen_var_962;
13372 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_962, 1);
13373 stream->write((uint64_t*)&cgen_var_962, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013374 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013375 uint64_t cgen_var_963;
13376 stream->read((uint64_t*)&cgen_var_963, 8);
13377 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_963, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013378 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
13379 stream->read(&vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013380 countingStream->clearPool();
13381 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013382 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013383 mImpl->log("finish vkCreateAndroidSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013384 return vkCreateAndroidSurfaceKHR_VkResult_return;
13385}
13386
13387#endif
13388#ifdef VK_KHR_win32_surface
13389VkResult VkEncoder::vkCreateWin32SurfaceKHR(
13390 VkInstance instance,
13391 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
13392 const VkAllocationCallbacks* pAllocator,
13393 VkSurfaceKHR* pSurface)
13394{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013395 mImpl->log("start vkCreateWin32SurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013396 auto stream = mImpl->stream();
13397 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013398 auto resources = mImpl->resources();
13399 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013400 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013401 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013402 VkWin32SurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013403 VkAllocationCallbacks* local_pAllocator;
13404 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013405 local_pCreateInfo = nullptr;
13406 if (pCreateInfo)
13407 {
13408 local_pCreateInfo = (VkWin32SurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWin32SurfaceCreateInfoKHR));
13409 deepcopy_VkWin32SurfaceCreateInfoKHR(pool, pCreateInfo, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
13410 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013411 local_pAllocator = nullptr;
13412 if (pAllocator)
13413 {
13414 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13415 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13416 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013417 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013418 if (local_pCreateInfo)
13419 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013420 transform_tohost_VkWin32SurfaceCreateInfoKHR(mImpl->resources(), (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013421 }
13422 if (local_pAllocator)
13423 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013424 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013425 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013426 countingStream->rewind();
13427 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013428 uint64_t cgen_var_964;
13429 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_964, 1);
13430 countingStream->write((uint64_t*)&cgen_var_964, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013431 marshal_VkWin32SurfaceCreateInfoKHR(countingStream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013432 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013433 uint64_t cgen_var_965 = (uint64_t)(uintptr_t)local_pAllocator;
13434 countingStream->putBe64(cgen_var_965);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013435 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013436 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013437 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013438 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013439 uint64_t cgen_var_966;
13440 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_966, 1);
13441 countingStream->write((uint64_t*)&cgen_var_966, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013442 }
13443 uint32_t packetSize_vkCreateWin32SurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13444 countingStream->rewind();
13445 uint32_t opcode_vkCreateWin32SurfaceKHR = OP_vkCreateWin32SurfaceKHR;
13446 stream->write(&opcode_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
13447 stream->write(&packetSize_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013448 uint64_t cgen_var_967;
13449 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_967, 1);
13450 stream->write((uint64_t*)&cgen_var_967, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013451 marshal_VkWin32SurfaceCreateInfoKHR(stream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013452 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013453 uint64_t cgen_var_968 = (uint64_t)(uintptr_t)local_pAllocator;
13454 stream->putBe64(cgen_var_968);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013455 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013456 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013457 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013458 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013459 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013460 uint64_t cgen_var_969;
13461 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_969, 1);
13462 stream->write((uint64_t*)&cgen_var_969, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013463 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013464 uint64_t cgen_var_970;
13465 stream->read((uint64_t*)&cgen_var_970, 8);
13466 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_970, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013467 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
13468 stream->read(&vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013469 countingStream->clearPool();
13470 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013471 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013472 mImpl->log("finish vkCreateWin32SurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013473 return vkCreateWin32SurfaceKHR_VkResult_return;
13474}
13475
13476VkBool32 VkEncoder::vkGetPhysicalDeviceWin32PresentationSupportKHR(
13477 VkPhysicalDevice physicalDevice,
13478 uint32_t queueFamilyIndex)
13479{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013480 mImpl->log("start vkGetPhysicalDeviceWin32PresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013481 auto stream = mImpl->stream();
13482 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013483 auto resources = mImpl->resources();
13484 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013485 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013486 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013487 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013488 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013489 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013490 countingStream->rewind();
13491 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013492 uint64_t cgen_var_971;
13493 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_971, 1);
13494 countingStream->write((uint64_t*)&cgen_var_971, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013495 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013496 }
13497 uint32_t packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13498 countingStream->rewind();
13499 uint32_t opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR = OP_vkGetPhysicalDeviceWin32PresentationSupportKHR;
13500 stream->write(&opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
13501 stream->write(&packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013502 uint64_t cgen_var_972;
13503 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_972, 1);
13504 stream->write((uint64_t*)&cgen_var_972, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013505 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013506 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
13507 stream->read(&vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013508 countingStream->clearPool();
13509 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013510 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013511 mImpl->log("finish vkGetPhysicalDeviceWin32PresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013512 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
13513}
13514
13515#endif
13516#ifdef VK_KHR_sampler_mirror_clamp_to_edge
13517#endif
13518#ifdef VK_KHR_multiview
13519#endif
13520#ifdef VK_KHR_get_physical_device_properties2
13521void VkEncoder::vkGetPhysicalDeviceFeatures2KHR(
13522 VkPhysicalDevice physicalDevice,
13523 VkPhysicalDeviceFeatures2* pFeatures)
13524{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013525 mImpl->log("start vkGetPhysicalDeviceFeatures2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013526 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 VkPhysicalDevice local_physicalDevice;
13532 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013533 countingStream->rewind();
13534 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013535 uint64_t cgen_var_973;
13536 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_973, 1);
13537 countingStream->write((uint64_t*)&cgen_var_973, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013538 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
13539 }
13540 uint32_t packetSize_vkGetPhysicalDeviceFeatures2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13541 countingStream->rewind();
13542 uint32_t opcode_vkGetPhysicalDeviceFeatures2KHR = OP_vkGetPhysicalDeviceFeatures2KHR;
13543 stream->write(&opcode_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
13544 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013545 uint64_t cgen_var_974;
13546 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_974, 1);
13547 stream->write((uint64_t*)&cgen_var_974, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013548 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
13549 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013550 if (pFeatures)
13551 {
13552 transform_fromhost_VkPhysicalDeviceFeatures2(mImpl->resources(), (VkPhysicalDeviceFeatures2*)(pFeatures));
13553 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013554 mImpl->log("finish vkGetPhysicalDeviceFeatures2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013555}
13556
13557void VkEncoder::vkGetPhysicalDeviceProperties2KHR(
13558 VkPhysicalDevice physicalDevice,
13559 VkPhysicalDeviceProperties2* pProperties)
13560{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013561 mImpl->log("start vkGetPhysicalDeviceProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013562 auto stream = mImpl->stream();
13563 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013564 auto resources = mImpl->resources();
13565 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013566 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013567 VkPhysicalDevice local_physicalDevice;
13568 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013569 countingStream->rewind();
13570 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013571 uint64_t cgen_var_975;
13572 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_975, 1);
13573 countingStream->write((uint64_t*)&cgen_var_975, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013574 marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
13575 }
13576 uint32_t packetSize_vkGetPhysicalDeviceProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13577 countingStream->rewind();
13578 uint32_t opcode_vkGetPhysicalDeviceProperties2KHR = OP_vkGetPhysicalDeviceProperties2KHR;
13579 stream->write(&opcode_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
13580 stream->write(&packetSize_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013581 uint64_t cgen_var_976;
13582 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_976, 1);
13583 stream->write((uint64_t*)&cgen_var_976, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013584 marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
13585 unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013586 if (pProperties)
13587 {
13588 transform_fromhost_VkPhysicalDeviceProperties2(mImpl->resources(), (VkPhysicalDeviceProperties2*)(pProperties));
13589 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013590 mImpl->log("finish vkGetPhysicalDeviceProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013591}
13592
13593void VkEncoder::vkGetPhysicalDeviceFormatProperties2KHR(
13594 VkPhysicalDevice physicalDevice,
13595 VkFormat format,
13596 VkFormatProperties2* pFormatProperties)
13597{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013598 mImpl->log("start vkGetPhysicalDeviceFormatProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013599 auto stream = mImpl->stream();
13600 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013601 auto resources = mImpl->resources();
13602 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013603 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013604 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013605 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013606 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013607 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013608 countingStream->rewind();
13609 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013610 uint64_t cgen_var_977;
13611 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_977, 1);
13612 countingStream->write((uint64_t*)&cgen_var_977, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013613 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013614 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
13615 }
13616 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13617 countingStream->rewind();
13618 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2KHR = OP_vkGetPhysicalDeviceFormatProperties2KHR;
13619 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
13620 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013621 uint64_t cgen_var_978;
13622 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_978, 1);
13623 stream->write((uint64_t*)&cgen_var_978, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013624 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013625 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
13626 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013627 if (pFormatProperties)
13628 {
13629 transform_fromhost_VkFormatProperties2(mImpl->resources(), (VkFormatProperties2*)(pFormatProperties));
13630 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013631 mImpl->log("finish vkGetPhysicalDeviceFormatProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013632}
13633
13634VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2KHR(
13635 VkPhysicalDevice physicalDevice,
13636 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
13637 VkImageFormatProperties2* pImageFormatProperties)
13638{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013639 mImpl->log("start vkGetPhysicalDeviceImageFormatProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013640 auto stream = mImpl->stream();
13641 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013642 auto resources = mImpl->resources();
13643 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013644 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013645 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013646 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013647 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013648 local_pImageFormatInfo = nullptr;
13649 if (pImageFormatInfo)
13650 {
13651 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
13652 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
13653 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013654 if (local_pImageFormatInfo)
13655 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013656 transform_tohost_VkPhysicalDeviceImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013657 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013658 countingStream->rewind();
13659 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013660 uint64_t cgen_var_979;
13661 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_979, 1);
13662 countingStream->write((uint64_t*)&cgen_var_979, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013663 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013664 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
13665 }
13666 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13667 countingStream->rewind();
13668 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2KHR = OP_vkGetPhysicalDeviceImageFormatProperties2KHR;
13669 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
13670 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013671 uint64_t cgen_var_980;
13672 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_980, 1);
13673 stream->write((uint64_t*)&cgen_var_980, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013674 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013675 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
13676 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013677 if (pImageFormatProperties)
13678 {
13679 transform_fromhost_VkImageFormatProperties2(mImpl->resources(), (VkImageFormatProperties2*)(pImageFormatProperties));
13680 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013681 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
13682 stream->read(&vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013683 countingStream->clearPool();
13684 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013685 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013686 mImpl->log("finish vkGetPhysicalDeviceImageFormatProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013687 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
13688}
13689
13690void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2KHR(
13691 VkPhysicalDevice physicalDevice,
13692 uint32_t* pQueueFamilyPropertyCount,
13693 VkQueueFamilyProperties2* pQueueFamilyProperties)
13694{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013695 mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013696 auto stream = mImpl->stream();
13697 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013698 auto resources = mImpl->resources();
13699 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013700 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013701 VkPhysicalDevice local_physicalDevice;
13702 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013703 countingStream->rewind();
13704 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013705 uint64_t cgen_var_981;
13706 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_981, 1);
13707 countingStream->write((uint64_t*)&cgen_var_981, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013708 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013709 uint64_t cgen_var_982 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
13710 countingStream->putBe64(cgen_var_982);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013711 if (pQueueFamilyPropertyCount)
13712 {
13713 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
13714 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013715 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013716 uint64_t cgen_var_983 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
13717 countingStream->putBe64(cgen_var_983);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013718 if (pQueueFamilyProperties)
13719 {
13720 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
13721 {
13722 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
13723 }
13724 }
13725 }
13726 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13727 countingStream->rewind();
13728 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR = OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR;
13729 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
13730 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013731 uint64_t cgen_var_984;
13732 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_984, 1);
13733 stream->write((uint64_t*)&cgen_var_984, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013734 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013735 uint64_t cgen_var_985 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
13736 stream->putBe64(cgen_var_985);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013737 if (pQueueFamilyPropertyCount)
13738 {
13739 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
13740 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013741 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013742 uint64_t cgen_var_986 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
13743 stream->putBe64(cgen_var_986);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013744 if (pQueueFamilyProperties)
13745 {
13746 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
13747 {
13748 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
13749 }
13750 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013751 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013752 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013753 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013754 if (pQueueFamilyPropertyCount)
13755 {
13756 if (!(check_pQueueFamilyPropertyCount))
13757 {
13758 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
13759 }
13760 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
13761 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013762 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013763 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013764 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013765 if (pQueueFamilyProperties)
13766 {
13767 if (!(check_pQueueFamilyProperties))
13768 {
13769 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
13770 }
13771 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
13772 {
13773 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
13774 }
13775 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080013776 if (pQueueFamilyProperties)
13777 {
13778 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
13779 {
13780 transform_fromhost_VkQueueFamilyProperties2(mImpl->resources(), (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
13781 }
13782 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013783 mImpl->log("finish vkGetPhysicalDeviceQueueFamilyProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013784}
13785
13786void VkEncoder::vkGetPhysicalDeviceMemoryProperties2KHR(
13787 VkPhysicalDevice physicalDevice,
13788 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
13789{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013790 mImpl->log("start vkGetPhysicalDeviceMemoryProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013791 auto stream = mImpl->stream();
13792 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013793 auto resources = mImpl->resources();
13794 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013795 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013796 VkPhysicalDevice local_physicalDevice;
13797 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013798 countingStream->rewind();
13799 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013800 uint64_t cgen_var_989;
13801 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_989, 1);
13802 countingStream->write((uint64_t*)&cgen_var_989, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013803 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
13804 }
13805 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13806 countingStream->rewind();
13807 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2KHR = OP_vkGetPhysicalDeviceMemoryProperties2KHR;
13808 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
13809 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013810 uint64_t cgen_var_990;
13811 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_990, 1);
13812 stream->write((uint64_t*)&cgen_var_990, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013813 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
13814 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013815 if (pMemoryProperties)
13816 {
13817 transform_fromhost_VkPhysicalDeviceMemoryProperties2(mImpl->resources(), (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
13818 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013819 mImpl->resources()->on_vkGetPhysicalDeviceMemoryProperties2KHR(this, physicalDevice, pMemoryProperties);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013820 mImpl->log("finish vkGetPhysicalDeviceMemoryProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013821}
13822
13823void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
13824 VkPhysicalDevice physicalDevice,
13825 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
13826 uint32_t* pPropertyCount,
13827 VkSparseImageFormatProperties2* pProperties)
13828{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013829 mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013830 auto stream = mImpl->stream();
13831 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013832 auto resources = mImpl->resources();
13833 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013834 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013835 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013836 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013837 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013838 local_pFormatInfo = nullptr;
13839 if (pFormatInfo)
13840 {
13841 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
13842 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
13843 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013844 if (local_pFormatInfo)
13845 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013846 transform_tohost_VkPhysicalDeviceSparseImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013847 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013848 countingStream->rewind();
13849 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013850 uint64_t cgen_var_991;
13851 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_991, 1);
13852 countingStream->write((uint64_t*)&cgen_var_991, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013853 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013854 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013855 uint64_t cgen_var_992 = (uint64_t)(uintptr_t)pPropertyCount;
13856 countingStream->putBe64(cgen_var_992);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013857 if (pPropertyCount)
13858 {
13859 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
13860 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013861 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013862 uint64_t cgen_var_993 = (uint64_t)(uintptr_t)pProperties;
13863 countingStream->putBe64(cgen_var_993);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013864 if (pProperties)
13865 {
13866 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13867 {
13868 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
13869 }
13870 }
13871 }
13872 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13873 countingStream->rewind();
13874 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
13875 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
13876 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013877 uint64_t cgen_var_994;
13878 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_994, 1);
13879 stream->write((uint64_t*)&cgen_var_994, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013880 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013881 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013882 uint64_t cgen_var_995 = (uint64_t)(uintptr_t)pPropertyCount;
13883 stream->putBe64(cgen_var_995);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013884 if (pPropertyCount)
13885 {
13886 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
13887 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013888 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013889 uint64_t cgen_var_996 = (uint64_t)(uintptr_t)pProperties;
13890 stream->putBe64(cgen_var_996);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013891 if (pProperties)
13892 {
13893 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13894 {
13895 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
13896 }
13897 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013898 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013899 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013900 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013901 if (pPropertyCount)
13902 {
13903 if (!(check_pPropertyCount))
13904 {
13905 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
13906 }
13907 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
13908 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013909 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013910 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013911 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013912 if (pProperties)
13913 {
13914 if (!(check_pProperties))
13915 {
13916 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
13917 }
13918 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13919 {
13920 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
13921 }
13922 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080013923 if (pProperties)
13924 {
13925 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13926 {
13927 transform_fromhost_VkSparseImageFormatProperties2(mImpl->resources(), (VkSparseImageFormatProperties2*)(pProperties + i));
13928 }
13929 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013930 mImpl->log("finish vkGetPhysicalDeviceSparseImageFormatProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013931}
13932
13933#endif
13934#ifdef VK_KHR_device_group
13935void VkEncoder::vkGetDeviceGroupPeerMemoryFeaturesKHR(
13936 VkDevice device,
13937 uint32_t heapIndex,
13938 uint32_t localDeviceIndex,
13939 uint32_t remoteDeviceIndex,
13940 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
13941{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013942 mImpl->log("start vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013943 auto stream = mImpl->stream();
13944 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013945 auto resources = mImpl->resources();
13946 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013947 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013948 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013949 uint32_t local_heapIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013950 uint32_t local_localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013951 uint32_t local_remoteDeviceIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013952 local_device = device;
13953 local_heapIndex = heapIndex;
13954 local_localDeviceIndex = localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013955 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013956 countingStream->rewind();
13957 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013958 uint64_t cgen_var_999;
13959 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_999, 1);
13960 countingStream->write((uint64_t*)&cgen_var_999, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013961 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
13962 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
13963 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013964 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
13965 }
13966 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13967 countingStream->rewind();
13968 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR = OP_vkGetDeviceGroupPeerMemoryFeaturesKHR;
13969 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
13970 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013971 uint64_t cgen_var_1000;
13972 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1000, 1);
13973 stream->write((uint64_t*)&cgen_var_1000, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013974 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
13975 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
13976 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013977 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
13978 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013979 mImpl->log("finish vkGetDeviceGroupPeerMemoryFeaturesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013980}
13981
13982void VkEncoder::vkCmdSetDeviceMaskKHR(
13983 VkCommandBuffer commandBuffer,
13984 uint32_t deviceMask)
13985{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013986 mImpl->log("start vkCmdSetDeviceMaskKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013987 auto stream = mImpl->stream();
13988 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013989 auto resources = mImpl->resources();
13990 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013991 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013992 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013993 uint32_t local_deviceMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013994 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013995 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013996 countingStream->rewind();
13997 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013998 uint64_t cgen_var_1001;
13999 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1001, 1);
14000 countingStream->write((uint64_t*)&cgen_var_1001, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014001 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014002 }
14003 uint32_t packetSize_vkCmdSetDeviceMaskKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14004 countingStream->rewind();
14005 uint32_t opcode_vkCmdSetDeviceMaskKHR = OP_vkCmdSetDeviceMaskKHR;
14006 stream->write(&opcode_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
14007 stream->write(&packetSize_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014008 uint64_t cgen_var_1002;
14009 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1002, 1);
14010 stream->write((uint64_t*)&cgen_var_1002, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014011 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014012 mImpl->log("finish vkCmdSetDeviceMaskKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014013}
14014
14015void VkEncoder::vkCmdDispatchBaseKHR(
14016 VkCommandBuffer commandBuffer,
14017 uint32_t baseGroupX,
14018 uint32_t baseGroupY,
14019 uint32_t baseGroupZ,
14020 uint32_t groupCountX,
14021 uint32_t groupCountY,
14022 uint32_t groupCountZ)
14023{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014024 mImpl->log("start vkCmdDispatchBaseKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014025 auto stream = mImpl->stream();
14026 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014027 auto resources = mImpl->resources();
14028 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014029 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014030 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014031 uint32_t local_baseGroupX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014032 uint32_t local_baseGroupY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014033 uint32_t local_baseGroupZ;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014034 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014035 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014036 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014037 local_commandBuffer = commandBuffer;
14038 local_baseGroupX = baseGroupX;
14039 local_baseGroupY = baseGroupY;
14040 local_baseGroupZ = baseGroupZ;
14041 local_groupCountX = groupCountX;
14042 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014043 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014044 countingStream->rewind();
14045 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014046 uint64_t cgen_var_1003;
14047 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1003, 1);
14048 countingStream->write((uint64_t*)&cgen_var_1003, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014049 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
14050 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
14051 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
14052 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
14053 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
14054 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014055 }
14056 uint32_t packetSize_vkCmdDispatchBaseKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14057 countingStream->rewind();
14058 uint32_t opcode_vkCmdDispatchBaseKHR = OP_vkCmdDispatchBaseKHR;
14059 stream->write(&opcode_vkCmdDispatchBaseKHR, sizeof(uint32_t));
14060 stream->write(&packetSize_vkCmdDispatchBaseKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014061 uint64_t cgen_var_1004;
14062 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1004, 1);
14063 stream->write((uint64_t*)&cgen_var_1004, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014064 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
14065 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
14066 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
14067 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
14068 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
14069 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014070 mImpl->log("finish vkCmdDispatchBaseKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014071}
14072
14073#endif
14074#ifdef VK_KHR_shader_draw_parameters
14075#endif
14076#ifdef VK_KHR_maintenance1
14077void VkEncoder::vkTrimCommandPoolKHR(
14078 VkDevice device,
14079 VkCommandPool commandPool,
14080 VkCommandPoolTrimFlags flags)
14081{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014082 mImpl->log("start vkTrimCommandPoolKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014083 auto stream = mImpl->stream();
14084 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014085 auto resources = mImpl->resources();
14086 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014087 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014088 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014089 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014090 VkCommandPoolTrimFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014091 local_device = device;
14092 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014093 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014094 countingStream->rewind();
14095 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014096 uint64_t cgen_var_1005;
14097 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1005, 1);
14098 countingStream->write((uint64_t*)&cgen_var_1005, 1 * 8);
14099 uint64_t cgen_var_1006;
14100 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_1006, 1);
14101 countingStream->write((uint64_t*)&cgen_var_1006, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014102 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014103 }
14104 uint32_t packetSize_vkTrimCommandPoolKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14105 countingStream->rewind();
14106 uint32_t opcode_vkTrimCommandPoolKHR = OP_vkTrimCommandPoolKHR;
14107 stream->write(&opcode_vkTrimCommandPoolKHR, sizeof(uint32_t));
14108 stream->write(&packetSize_vkTrimCommandPoolKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014109 uint64_t cgen_var_1007;
14110 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1007, 1);
14111 stream->write((uint64_t*)&cgen_var_1007, 1 * 8);
14112 uint64_t cgen_var_1008;
14113 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_1008, 1);
14114 stream->write((uint64_t*)&cgen_var_1008, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014115 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014116 mImpl->log("finish vkTrimCommandPoolKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014117}
14118
14119#endif
14120#ifdef VK_KHR_device_group_creation
14121VkResult VkEncoder::vkEnumeratePhysicalDeviceGroupsKHR(
14122 VkInstance instance,
14123 uint32_t* pPhysicalDeviceGroupCount,
14124 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
14125{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014126 mImpl->log("start vkEnumeratePhysicalDeviceGroupsKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014127 auto stream = mImpl->stream();
14128 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014129 auto resources = mImpl->resources();
14130 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014131 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014132 VkInstance local_instance;
14133 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014134 countingStream->rewind();
14135 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014136 uint64_t cgen_var_1009;
14137 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1009, 1);
14138 countingStream->write((uint64_t*)&cgen_var_1009, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014139 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014140 uint64_t cgen_var_1010 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
14141 countingStream->putBe64(cgen_var_1010);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014142 if (pPhysicalDeviceGroupCount)
14143 {
14144 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
14145 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014146 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014147 uint64_t cgen_var_1011 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
14148 countingStream->putBe64(cgen_var_1011);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014149 if (pPhysicalDeviceGroupProperties)
14150 {
14151 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14152 {
14153 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14154 }
14155 }
14156 }
14157 uint32_t packetSize_vkEnumeratePhysicalDeviceGroupsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14158 countingStream->rewind();
14159 uint32_t opcode_vkEnumeratePhysicalDeviceGroupsKHR = OP_vkEnumeratePhysicalDeviceGroupsKHR;
14160 stream->write(&opcode_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
14161 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014162 uint64_t cgen_var_1012;
14163 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1012, 1);
14164 stream->write((uint64_t*)&cgen_var_1012, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014165 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014166 uint64_t cgen_var_1013 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
14167 stream->putBe64(cgen_var_1013);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014168 if (pPhysicalDeviceGroupCount)
14169 {
14170 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
14171 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014172 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014173 uint64_t cgen_var_1014 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
14174 stream->putBe64(cgen_var_1014);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014175 if (pPhysicalDeviceGroupProperties)
14176 {
14177 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14178 {
14179 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14180 }
14181 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014182 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014183 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014184 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014185 if (pPhysicalDeviceGroupCount)
14186 {
14187 if (!(check_pPhysicalDeviceGroupCount))
14188 {
14189 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
14190 }
14191 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
14192 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014193 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014194 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014195 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014196 if (pPhysicalDeviceGroupProperties)
14197 {
14198 if (!(check_pPhysicalDeviceGroupProperties))
14199 {
14200 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
14201 }
14202 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14203 {
14204 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14205 }
14206 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080014207 if (pPhysicalDeviceGroupProperties)
14208 {
14209 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14210 {
14211 transform_fromhost_VkPhysicalDeviceGroupProperties(mImpl->resources(), (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14212 }
14213 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014214 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
14215 stream->read(&vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014216 countingStream->clearPool();
14217 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014218 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014219 mImpl->log("finish vkEnumeratePhysicalDeviceGroupsKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014220 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
14221}
14222
14223#endif
14224#ifdef VK_KHR_external_memory_capabilities
14225void VkEncoder::vkGetPhysicalDeviceExternalBufferPropertiesKHR(
14226 VkPhysicalDevice physicalDevice,
14227 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
14228 VkExternalBufferProperties* pExternalBufferProperties)
14229{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014230 mImpl->log("start vkGetPhysicalDeviceExternalBufferPropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014231 auto stream = mImpl->stream();
14232 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014233 auto resources = mImpl->resources();
14234 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014235 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014236 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014237 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014238 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014239 local_pExternalBufferInfo = nullptr;
14240 if (pExternalBufferInfo)
14241 {
14242 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
14243 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
14244 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014245 if (local_pExternalBufferInfo)
14246 {
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -080014247 mImpl->resources()->transformImpl_VkPhysicalDeviceExternalBufferInfo_tohost(local_pExternalBufferInfo, 1);
Lingfeng Yang97a06702018-12-24 17:02:43 -080014248 transform_tohost_VkPhysicalDeviceExternalBufferInfo(mImpl->resources(), (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014249 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014250 countingStream->rewind();
14251 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014252 uint64_t cgen_var_1017;
14253 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1017, 1);
14254 countingStream->write((uint64_t*)&cgen_var_1017, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014255 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014256 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
14257 }
14258 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14259 countingStream->rewind();
14260 uint32_t opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR = OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR;
14261 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
14262 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014263 uint64_t cgen_var_1018;
14264 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1018, 1);
14265 stream->write((uint64_t*)&cgen_var_1018, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014266 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014267 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
14268 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014269 if (pExternalBufferProperties)
14270 {
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -080014271 mImpl->resources()->transformImpl_VkExternalBufferProperties_fromhost(pExternalBufferProperties, 1);
Lingfeng Yang97a06702018-12-24 17:02:43 -080014272 transform_fromhost_VkExternalBufferProperties(mImpl->resources(), (VkExternalBufferProperties*)(pExternalBufferProperties));
14273 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014274 mImpl->log("finish vkGetPhysicalDeviceExternalBufferPropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014275}
14276
14277#endif
14278#ifdef VK_KHR_external_memory
14279#endif
14280#ifdef VK_KHR_external_memory_win32
14281VkResult VkEncoder::vkGetMemoryWin32HandleKHR(
14282 VkDevice device,
14283 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
14284 HANDLE* pHandle)
14285{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014286 mImpl->log("start vkGetMemoryWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014287 auto stream = mImpl->stream();
14288 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014289 auto resources = mImpl->resources();
14290 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014291 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014292 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014293 VkMemoryGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014294 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014295 local_pGetWin32HandleInfo = nullptr;
14296 if (pGetWin32HandleInfo)
14297 {
14298 local_pGetWin32HandleInfo = (VkMemoryGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkMemoryGetWin32HandleInfoKHR));
14299 deepcopy_VkMemoryGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
14300 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014301 if (local_pGetWin32HandleInfo)
14302 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014303 transform_tohost_VkMemoryGetWin32HandleInfoKHR(mImpl->resources(), (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014304 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014305 countingStream->rewind();
14306 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014307 uint64_t cgen_var_1019;
14308 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1019, 1);
14309 countingStream->write((uint64_t*)&cgen_var_1019, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014310 marshal_VkMemoryGetWin32HandleInfoKHR(countingStream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014311 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
14312 }
14313 uint32_t packetSize_vkGetMemoryWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14314 countingStream->rewind();
14315 uint32_t opcode_vkGetMemoryWin32HandleKHR = OP_vkGetMemoryWin32HandleKHR;
14316 stream->write(&opcode_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
14317 stream->write(&packetSize_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014318 uint64_t cgen_var_1020;
14319 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1020, 1);
14320 stream->write((uint64_t*)&cgen_var_1020, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014321 marshal_VkMemoryGetWin32HandleInfoKHR(stream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014322 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
14323 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
14324 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
14325 stream->read(&vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014326 countingStream->clearPool();
14327 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014328 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014329 mImpl->log("finish vkGetMemoryWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014330 return vkGetMemoryWin32HandleKHR_VkResult_return;
14331}
14332
14333VkResult VkEncoder::vkGetMemoryWin32HandlePropertiesKHR(
14334 VkDevice device,
14335 VkExternalMemoryHandleTypeFlagBits handleType,
14336 HANDLE handle,
14337 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
14338{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014339 mImpl->log("start vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014340 auto stream = mImpl->stream();
14341 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014342 auto resources = mImpl->resources();
14343 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014344 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014345 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014346 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014347 HANDLE local_handle;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014348 local_device = device;
14349 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014350 local_handle = handle;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014351 countingStream->rewind();
14352 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014353 uint64_t cgen_var_1021;
14354 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1021, 1);
14355 countingStream->write((uint64_t*)&cgen_var_1021, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014356 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
14357 countingStream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014358 marshal_VkMemoryWin32HandlePropertiesKHR(countingStream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
14359 }
14360 uint32_t packetSize_vkGetMemoryWin32HandlePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14361 countingStream->rewind();
14362 uint32_t opcode_vkGetMemoryWin32HandlePropertiesKHR = OP_vkGetMemoryWin32HandlePropertiesKHR;
14363 stream->write(&opcode_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
14364 stream->write(&packetSize_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014365 uint64_t cgen_var_1022;
14366 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1022, 1);
14367 stream->write((uint64_t*)&cgen_var_1022, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014368 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
14369 stream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014370 marshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
14371 unmarshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014372 if (pMemoryWin32HandleProperties)
14373 {
14374 transform_fromhost_VkMemoryWin32HandlePropertiesKHR(mImpl->resources(), (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
14375 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014376 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
14377 stream->read(&vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014378 countingStream->clearPool();
14379 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014380 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014381 mImpl->log("finish vkGetMemoryWin32HandlePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014382 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
14383}
14384
14385#endif
14386#ifdef VK_KHR_external_memory_fd
14387VkResult VkEncoder::vkGetMemoryFdKHR(
14388 VkDevice device,
14389 const VkMemoryGetFdInfoKHR* pGetFdInfo,
14390 int* pFd)
14391{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014392 mImpl->log("start vkGetMemoryFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014393 auto stream = mImpl->stream();
14394 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014395 auto resources = mImpl->resources();
14396 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014397 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014398 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014399 VkMemoryGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014400 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014401 local_pGetFdInfo = nullptr;
14402 if (pGetFdInfo)
14403 {
14404 local_pGetFdInfo = (VkMemoryGetFdInfoKHR*)pool->alloc(sizeof(const VkMemoryGetFdInfoKHR));
14405 deepcopy_VkMemoryGetFdInfoKHR(pool, pGetFdInfo, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
14406 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014407 if (local_pGetFdInfo)
14408 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014409 transform_tohost_VkMemoryGetFdInfoKHR(mImpl->resources(), (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014410 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014411 countingStream->rewind();
14412 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014413 uint64_t cgen_var_1023;
14414 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1023, 1);
14415 countingStream->write((uint64_t*)&cgen_var_1023, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014416 marshal_VkMemoryGetFdInfoKHR(countingStream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014417 countingStream->write((int*)pFd, sizeof(int));
14418 }
14419 uint32_t packetSize_vkGetMemoryFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14420 countingStream->rewind();
14421 uint32_t opcode_vkGetMemoryFdKHR = OP_vkGetMemoryFdKHR;
14422 stream->write(&opcode_vkGetMemoryFdKHR, sizeof(uint32_t));
14423 stream->write(&packetSize_vkGetMemoryFdKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014424 uint64_t cgen_var_1024;
14425 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1024, 1);
14426 stream->write((uint64_t*)&cgen_var_1024, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014427 marshal_VkMemoryGetFdInfoKHR(stream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014428 stream->write((int*)pFd, sizeof(int));
14429 stream->read((int*)pFd, sizeof(int));
14430 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
14431 stream->read(&vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014432 countingStream->clearPool();
14433 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014434 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014435 mImpl->log("finish vkGetMemoryFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014436 return vkGetMemoryFdKHR_VkResult_return;
14437}
14438
14439VkResult VkEncoder::vkGetMemoryFdPropertiesKHR(
14440 VkDevice device,
14441 VkExternalMemoryHandleTypeFlagBits handleType,
14442 int fd,
14443 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
14444{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014445 mImpl->log("start vkGetMemoryFdPropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014446 auto stream = mImpl->stream();
14447 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014448 auto resources = mImpl->resources();
14449 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014450 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014451 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014452 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014453 int local_fd;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014454 local_device = device;
14455 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014456 local_fd = fd;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014457 countingStream->rewind();
14458 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014459 uint64_t cgen_var_1025;
14460 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1025, 1);
14461 countingStream->write((uint64_t*)&cgen_var_1025, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014462 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
14463 countingStream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014464 marshal_VkMemoryFdPropertiesKHR(countingStream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
14465 }
14466 uint32_t packetSize_vkGetMemoryFdPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14467 countingStream->rewind();
14468 uint32_t opcode_vkGetMemoryFdPropertiesKHR = OP_vkGetMemoryFdPropertiesKHR;
14469 stream->write(&opcode_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
14470 stream->write(&packetSize_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014471 uint64_t cgen_var_1026;
14472 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1026, 1);
14473 stream->write((uint64_t*)&cgen_var_1026, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014474 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
14475 stream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014476 marshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
14477 unmarshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014478 if (pMemoryFdProperties)
14479 {
14480 transform_fromhost_VkMemoryFdPropertiesKHR(mImpl->resources(), (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
14481 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014482 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
14483 stream->read(&vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014484 countingStream->clearPool();
14485 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014486 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014487 mImpl->log("finish vkGetMemoryFdPropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014488 return vkGetMemoryFdPropertiesKHR_VkResult_return;
14489}
14490
14491#endif
14492#ifdef VK_KHR_win32_keyed_mutex
14493#endif
14494#ifdef VK_KHR_external_semaphore_capabilities
14495void VkEncoder::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
14496 VkPhysicalDevice physicalDevice,
14497 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
14498 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
14499{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014500 mImpl->log("start vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014501 auto stream = mImpl->stream();
14502 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014503 auto resources = mImpl->resources();
14504 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014505 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014506 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014507 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014508 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014509 local_pExternalSemaphoreInfo = nullptr;
14510 if (pExternalSemaphoreInfo)
14511 {
14512 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
14513 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
14514 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014515 if (local_pExternalSemaphoreInfo)
14516 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014517 transform_tohost_VkPhysicalDeviceExternalSemaphoreInfo(mImpl->resources(), (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014518 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014519 countingStream->rewind();
14520 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014521 uint64_t cgen_var_1027;
14522 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1027, 1);
14523 countingStream->write((uint64_t*)&cgen_var_1027, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014524 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014525 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
14526 }
14527 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14528 countingStream->rewind();
14529 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
14530 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
14531 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014532 uint64_t cgen_var_1028;
14533 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1028, 1);
14534 stream->write((uint64_t*)&cgen_var_1028, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014535 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014536 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
14537 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014538 if (pExternalSemaphoreProperties)
14539 {
14540 transform_fromhost_VkExternalSemaphoreProperties(mImpl->resources(), (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
14541 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014542 mImpl->log("finish vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014543}
14544
14545#endif
14546#ifdef VK_KHR_external_semaphore
14547#endif
14548#ifdef VK_KHR_external_semaphore_win32
14549VkResult VkEncoder::vkImportSemaphoreWin32HandleKHR(
14550 VkDevice device,
14551 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
14552{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014553 mImpl->log("start vkImportSemaphoreWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014554 auto stream = mImpl->stream();
14555 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014556 auto resources = mImpl->resources();
14557 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014558 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014559 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014560 VkImportSemaphoreWin32HandleInfoKHR* local_pImportSemaphoreWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014561 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014562 local_pImportSemaphoreWin32HandleInfo = nullptr;
14563 if (pImportSemaphoreWin32HandleInfo)
14564 {
14565 local_pImportSemaphoreWin32HandleInfo = (VkImportSemaphoreWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreWin32HandleInfoKHR));
14566 deepcopy_VkImportSemaphoreWin32HandleInfoKHR(pool, pImportSemaphoreWin32HandleInfo, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
14567 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014568 if (local_pImportSemaphoreWin32HandleInfo)
14569 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014570 transform_tohost_VkImportSemaphoreWin32HandleInfoKHR(mImpl->resources(), (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014571 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014572 countingStream->rewind();
14573 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014574 uint64_t cgen_var_1029;
14575 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1029, 1);
14576 countingStream->write((uint64_t*)&cgen_var_1029, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014577 marshal_VkImportSemaphoreWin32HandleInfoKHR(countingStream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014578 }
14579 uint32_t packetSize_vkImportSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14580 countingStream->rewind();
14581 uint32_t opcode_vkImportSemaphoreWin32HandleKHR = OP_vkImportSemaphoreWin32HandleKHR;
14582 stream->write(&opcode_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
14583 stream->write(&packetSize_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014584 uint64_t cgen_var_1030;
14585 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1030, 1);
14586 stream->write((uint64_t*)&cgen_var_1030, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014587 marshal_VkImportSemaphoreWin32HandleInfoKHR(stream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014588 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
14589 stream->read(&vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014590 countingStream->clearPool();
14591 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014592 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014593 mImpl->log("finish vkImportSemaphoreWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014594 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
14595}
14596
14597VkResult VkEncoder::vkGetSemaphoreWin32HandleKHR(
14598 VkDevice device,
14599 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
14600 HANDLE* pHandle)
14601{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014602 mImpl->log("start vkGetSemaphoreWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014603 auto stream = mImpl->stream();
14604 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014605 auto resources = mImpl->resources();
14606 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014607 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014608 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014609 VkSemaphoreGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014610 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014611 local_pGetWin32HandleInfo = nullptr;
14612 if (pGetWin32HandleInfo)
14613 {
14614 local_pGetWin32HandleInfo = (VkSemaphoreGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetWin32HandleInfoKHR));
14615 deepcopy_VkSemaphoreGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
14616 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014617 if (local_pGetWin32HandleInfo)
14618 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014619 transform_tohost_VkSemaphoreGetWin32HandleInfoKHR(mImpl->resources(), (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014620 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014621 countingStream->rewind();
14622 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014623 uint64_t cgen_var_1031;
14624 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1031, 1);
14625 countingStream->write((uint64_t*)&cgen_var_1031, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014626 marshal_VkSemaphoreGetWin32HandleInfoKHR(countingStream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014627 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
14628 }
14629 uint32_t packetSize_vkGetSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14630 countingStream->rewind();
14631 uint32_t opcode_vkGetSemaphoreWin32HandleKHR = OP_vkGetSemaphoreWin32HandleKHR;
14632 stream->write(&opcode_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
14633 stream->write(&packetSize_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014634 uint64_t cgen_var_1032;
14635 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1032, 1);
14636 stream->write((uint64_t*)&cgen_var_1032, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014637 marshal_VkSemaphoreGetWin32HandleInfoKHR(stream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014638 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
14639 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
14640 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
14641 stream->read(&vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014642 countingStream->clearPool();
14643 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014644 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014645 mImpl->log("finish vkGetSemaphoreWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014646 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
14647}
14648
14649#endif
14650#ifdef VK_KHR_external_semaphore_fd
14651VkResult VkEncoder::vkImportSemaphoreFdKHR(
14652 VkDevice device,
14653 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
14654{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014655 mImpl->log("start vkImportSemaphoreFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014656 auto stream = mImpl->stream();
14657 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014658 auto resources = mImpl->resources();
14659 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014660 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014661 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014662 VkImportSemaphoreFdInfoKHR* local_pImportSemaphoreFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014663 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014664 local_pImportSemaphoreFdInfo = nullptr;
14665 if (pImportSemaphoreFdInfo)
14666 {
14667 local_pImportSemaphoreFdInfo = (VkImportSemaphoreFdInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreFdInfoKHR));
14668 deepcopy_VkImportSemaphoreFdInfoKHR(pool, pImportSemaphoreFdInfo, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
14669 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014670 if (local_pImportSemaphoreFdInfo)
14671 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014672 transform_tohost_VkImportSemaphoreFdInfoKHR(mImpl->resources(), (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014673 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014674 countingStream->rewind();
14675 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014676 uint64_t cgen_var_1033;
14677 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1033, 1);
14678 countingStream->write((uint64_t*)&cgen_var_1033, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014679 marshal_VkImportSemaphoreFdInfoKHR(countingStream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014680 }
14681 uint32_t packetSize_vkImportSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14682 countingStream->rewind();
14683 uint32_t opcode_vkImportSemaphoreFdKHR = OP_vkImportSemaphoreFdKHR;
14684 stream->write(&opcode_vkImportSemaphoreFdKHR, sizeof(uint32_t));
14685 stream->write(&packetSize_vkImportSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014686 uint64_t cgen_var_1034;
14687 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1034, 1);
14688 stream->write((uint64_t*)&cgen_var_1034, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014689 marshal_VkImportSemaphoreFdInfoKHR(stream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014690 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
14691 stream->read(&vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014692 countingStream->clearPool();
14693 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014694 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014695 mImpl->log("finish vkImportSemaphoreFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014696 return vkImportSemaphoreFdKHR_VkResult_return;
14697}
14698
14699VkResult VkEncoder::vkGetSemaphoreFdKHR(
14700 VkDevice device,
14701 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
14702 int* pFd)
14703{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014704 mImpl->log("start vkGetSemaphoreFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014705 auto stream = mImpl->stream();
14706 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014707 auto resources = mImpl->resources();
14708 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014709 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014710 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014711 VkSemaphoreGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014712 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014713 local_pGetFdInfo = nullptr;
14714 if (pGetFdInfo)
14715 {
14716 local_pGetFdInfo = (VkSemaphoreGetFdInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetFdInfoKHR));
14717 deepcopy_VkSemaphoreGetFdInfoKHR(pool, pGetFdInfo, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
14718 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014719 if (local_pGetFdInfo)
14720 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014721 transform_tohost_VkSemaphoreGetFdInfoKHR(mImpl->resources(), (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014722 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014723 countingStream->rewind();
14724 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014725 uint64_t cgen_var_1035;
14726 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1035, 1);
14727 countingStream->write((uint64_t*)&cgen_var_1035, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014728 marshal_VkSemaphoreGetFdInfoKHR(countingStream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014729 countingStream->write((int*)pFd, sizeof(int));
14730 }
14731 uint32_t packetSize_vkGetSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14732 countingStream->rewind();
14733 uint32_t opcode_vkGetSemaphoreFdKHR = OP_vkGetSemaphoreFdKHR;
14734 stream->write(&opcode_vkGetSemaphoreFdKHR, sizeof(uint32_t));
14735 stream->write(&packetSize_vkGetSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014736 uint64_t cgen_var_1036;
14737 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1036, 1);
14738 stream->write((uint64_t*)&cgen_var_1036, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014739 marshal_VkSemaphoreGetFdInfoKHR(stream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014740 stream->write((int*)pFd, sizeof(int));
14741 stream->read((int*)pFd, sizeof(int));
14742 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
14743 stream->read(&vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014744 countingStream->clearPool();
14745 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014746 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014747 mImpl->log("finish vkGetSemaphoreFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014748 return vkGetSemaphoreFdKHR_VkResult_return;
14749}
14750
14751#endif
14752#ifdef VK_KHR_push_descriptor
14753void VkEncoder::vkCmdPushDescriptorSetKHR(
14754 VkCommandBuffer commandBuffer,
14755 VkPipelineBindPoint pipelineBindPoint,
14756 VkPipelineLayout layout,
14757 uint32_t set,
14758 uint32_t descriptorWriteCount,
14759 const VkWriteDescriptorSet* pDescriptorWrites)
14760{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014761 mImpl->log("start vkCmdPushDescriptorSetKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014762 auto stream = mImpl->stream();
14763 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014764 auto resources = mImpl->resources();
14765 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014766 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014767 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014768 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014769 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014770 uint32_t local_set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014771 uint32_t local_descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014772 VkWriteDescriptorSet* local_pDescriptorWrites;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014773 local_commandBuffer = commandBuffer;
14774 local_pipelineBindPoint = pipelineBindPoint;
14775 local_layout = layout;
14776 local_set = set;
14777 local_descriptorWriteCount = descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014778 local_pDescriptorWrites = nullptr;
14779 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014780 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014781 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014782 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
14783 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014784 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
14785 }
14786 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014787 if (local_pDescriptorWrites)
14788 {
14789 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
14790 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014791 transform_tohost_VkWriteDescriptorSet(mImpl->resources(), (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014792 }
14793 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014794 countingStream->rewind();
14795 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014796 uint64_t cgen_var_1037;
14797 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1037, 1);
14798 countingStream->write((uint64_t*)&cgen_var_1037, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014799 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014800 uint64_t cgen_var_1038;
14801 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1038, 1);
14802 countingStream->write((uint64_t*)&cgen_var_1038, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014803 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
14804 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
14805 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
14806 {
14807 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014808 }
14809 }
14810 uint32_t packetSize_vkCmdPushDescriptorSetKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14811 countingStream->rewind();
14812 uint32_t opcode_vkCmdPushDescriptorSetKHR = OP_vkCmdPushDescriptorSetKHR;
14813 stream->write(&opcode_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
14814 stream->write(&packetSize_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014815 uint64_t cgen_var_1039;
14816 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1039, 1);
14817 stream->write((uint64_t*)&cgen_var_1039, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014818 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014819 uint64_t cgen_var_1040;
14820 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1040, 1);
14821 stream->write((uint64_t*)&cgen_var_1040, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014822 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
14823 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014824 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
14825 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014826 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014827 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014828 mImpl->log("finish vkCmdPushDescriptorSetKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014829}
14830
14831void VkEncoder::vkCmdPushDescriptorSetWithTemplateKHR(
14832 VkCommandBuffer commandBuffer,
14833 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
14834 VkPipelineLayout layout,
14835 uint32_t set,
14836 const void* pData)
14837{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014838 mImpl->log("start vkCmdPushDescriptorSetWithTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014839 auto stream = mImpl->stream();
14840 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014841 auto resources = mImpl->resources();
14842 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014843 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014844 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014845 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014846 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014847 uint32_t local_set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014848 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014849 local_commandBuffer = commandBuffer;
14850 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
14851 local_layout = layout;
14852 local_set = set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014853 local_pData = nullptr;
14854 if (pData)
14855 {
14856 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
14857 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014858 countingStream->rewind();
14859 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014860 uint64_t cgen_var_1041;
14861 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1041, 1);
14862 countingStream->write((uint64_t*)&cgen_var_1041, 1 * 8);
14863 uint64_t cgen_var_1042;
14864 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1042, 1);
14865 countingStream->write((uint64_t*)&cgen_var_1042, 1 * 8);
14866 uint64_t cgen_var_1043;
14867 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1043, 1);
14868 countingStream->write((uint64_t*)&cgen_var_1043, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014869 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014870 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014871 uint64_t cgen_var_1044 = (uint64_t)(uintptr_t)local_pData;
14872 countingStream->putBe64(cgen_var_1044);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014873 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014874 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014875 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014876 }
14877 }
14878 uint32_t packetSize_vkCmdPushDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14879 countingStream->rewind();
14880 uint32_t opcode_vkCmdPushDescriptorSetWithTemplateKHR = OP_vkCmdPushDescriptorSetWithTemplateKHR;
14881 stream->write(&opcode_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
14882 stream->write(&packetSize_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014883 uint64_t cgen_var_1045;
14884 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1045, 1);
14885 stream->write((uint64_t*)&cgen_var_1045, 1 * 8);
14886 uint64_t cgen_var_1046;
14887 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1046, 1);
14888 stream->write((uint64_t*)&cgen_var_1046, 1 * 8);
14889 uint64_t cgen_var_1047;
14890 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1047, 1);
14891 stream->write((uint64_t*)&cgen_var_1047, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014892 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014893 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014894 uint64_t cgen_var_1048 = (uint64_t)(uintptr_t)local_pData;
14895 stream->putBe64(cgen_var_1048);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014896 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014897 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014898 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014899 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014900 mImpl->log("finish vkCmdPushDescriptorSetWithTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014901}
14902
14903#endif
14904#ifdef VK_KHR_16bit_storage
14905#endif
14906#ifdef VK_KHR_incremental_present
14907#endif
14908#ifdef VK_KHR_descriptor_update_template
14909VkResult VkEncoder::vkCreateDescriptorUpdateTemplateKHR(
14910 VkDevice device,
14911 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
14912 const VkAllocationCallbacks* pAllocator,
14913 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
14914{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014915 mImpl->log("start vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014916 auto stream = mImpl->stream();
14917 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014918 auto resources = mImpl->resources();
14919 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014920 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014921 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014922 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014923 VkAllocationCallbacks* local_pAllocator;
14924 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014925 local_pCreateInfo = nullptr;
14926 if (pCreateInfo)
14927 {
14928 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
14929 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
14930 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014931 local_pAllocator = nullptr;
14932 if (pAllocator)
14933 {
14934 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14935 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14936 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014937 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080014938 if (local_pCreateInfo)
14939 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014940 transform_tohost_VkDescriptorUpdateTemplateCreateInfo(mImpl->resources(), (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014941 }
14942 if (local_pAllocator)
14943 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014944 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014945 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014946 countingStream->rewind();
14947 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014948 uint64_t cgen_var_1049;
14949 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1049, 1);
14950 countingStream->write((uint64_t*)&cgen_var_1049, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014951 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014952 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014953 uint64_t cgen_var_1050 = (uint64_t)(uintptr_t)local_pAllocator;
14954 countingStream->putBe64(cgen_var_1050);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014955 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014956 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014957 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014958 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014959 uint64_t cgen_var_1051;
14960 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1051, 1);
14961 countingStream->write((uint64_t*)&cgen_var_1051, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014962 }
14963 uint32_t packetSize_vkCreateDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14964 countingStream->rewind();
14965 uint32_t opcode_vkCreateDescriptorUpdateTemplateKHR = OP_vkCreateDescriptorUpdateTemplateKHR;
14966 stream->write(&opcode_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
14967 stream->write(&packetSize_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014968 uint64_t cgen_var_1052;
14969 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1052, 1);
14970 stream->write((uint64_t*)&cgen_var_1052, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014971 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014972 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014973 uint64_t cgen_var_1053 = (uint64_t)(uintptr_t)local_pAllocator;
14974 stream->putBe64(cgen_var_1053);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014975 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014976 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014977 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014978 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080014979 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014980 uint64_t cgen_var_1054;
14981 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1054, 1);
14982 stream->write((uint64_t*)&cgen_var_1054, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080014983 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014984 uint64_t cgen_var_1055;
14985 stream->read((uint64_t*)&cgen_var_1055, 8);
14986 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_1055, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014987 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
14988 stream->read(&vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014989 countingStream->clearPool();
14990 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014991 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014992 mImpl->log("finish vkCreateDescriptorUpdateTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014993 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
14994}
14995
14996void VkEncoder::vkDestroyDescriptorUpdateTemplateKHR(
14997 VkDevice device,
14998 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
14999 const VkAllocationCallbacks* pAllocator)
15000{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015001 mImpl->log("start vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015002 auto stream = mImpl->stream();
15003 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015004 auto resources = mImpl->resources();
15005 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015006 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015007 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015008 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015009 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015010 local_device = device;
15011 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015012 local_pAllocator = nullptr;
15013 if (pAllocator)
15014 {
15015 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15016 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15017 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015018 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080015019 if (local_pAllocator)
15020 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015021 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015022 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015023 countingStream->rewind();
15024 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015025 uint64_t cgen_var_1056;
15026 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1056, 1);
15027 countingStream->write((uint64_t*)&cgen_var_1056, 1 * 8);
15028 uint64_t cgen_var_1057;
15029 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1057, 1);
15030 countingStream->write((uint64_t*)&cgen_var_1057, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015031 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015032 uint64_t cgen_var_1058 = (uint64_t)(uintptr_t)local_pAllocator;
15033 countingStream->putBe64(cgen_var_1058);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015034 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015035 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015036 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015037 }
15038 }
15039 uint32_t packetSize_vkDestroyDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15040 countingStream->rewind();
15041 uint32_t opcode_vkDestroyDescriptorUpdateTemplateKHR = OP_vkDestroyDescriptorUpdateTemplateKHR;
15042 stream->write(&opcode_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
15043 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015044 uint64_t cgen_var_1059;
15045 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1059, 1);
15046 stream->write((uint64_t*)&cgen_var_1059, 1 * 8);
15047 uint64_t cgen_var_1060;
15048 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1060, 1);
15049 stream->write((uint64_t*)&cgen_var_1060, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015050 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015051 uint64_t cgen_var_1061 = (uint64_t)(uintptr_t)local_pAllocator;
15052 stream->putBe64(cgen_var_1061);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015053 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015054 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015055 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015056 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015057 mImpl->log("finish vkDestroyDescriptorUpdateTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015058}
15059
15060void VkEncoder::vkUpdateDescriptorSetWithTemplateKHR(
15061 VkDevice device,
15062 VkDescriptorSet descriptorSet,
15063 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
15064 const void* pData)
15065{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015066 mImpl->log("start vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015067 auto stream = mImpl->stream();
15068 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015069 auto resources = mImpl->resources();
15070 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015071 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015072 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015073 VkDescriptorSet local_descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015074 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015075 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015076 local_device = device;
15077 local_descriptorSet = descriptorSet;
15078 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015079 local_pData = nullptr;
15080 if (pData)
15081 {
15082 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
15083 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015084 countingStream->rewind();
15085 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015086 uint64_t cgen_var_1062;
15087 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1062, 1);
15088 countingStream->write((uint64_t*)&cgen_var_1062, 1 * 8);
15089 uint64_t cgen_var_1063;
15090 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1063, 1);
15091 countingStream->write((uint64_t*)&cgen_var_1063, 1 * 8);
15092 uint64_t cgen_var_1064;
15093 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1064, 1);
15094 countingStream->write((uint64_t*)&cgen_var_1064, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015095 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015096 uint64_t cgen_var_1065 = (uint64_t)(uintptr_t)local_pData;
15097 countingStream->putBe64(cgen_var_1065);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015098 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015099 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015100 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015101 }
15102 }
15103 uint32_t packetSize_vkUpdateDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15104 countingStream->rewind();
15105 uint32_t opcode_vkUpdateDescriptorSetWithTemplateKHR = OP_vkUpdateDescriptorSetWithTemplateKHR;
15106 stream->write(&opcode_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
15107 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015108 uint64_t cgen_var_1066;
15109 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1066, 1);
15110 stream->write((uint64_t*)&cgen_var_1066, 1 * 8);
15111 uint64_t cgen_var_1067;
15112 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1067, 1);
15113 stream->write((uint64_t*)&cgen_var_1067, 1 * 8);
15114 uint64_t cgen_var_1068;
15115 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1068, 1);
15116 stream->write((uint64_t*)&cgen_var_1068, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015117 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015118 uint64_t cgen_var_1069 = (uint64_t)(uintptr_t)local_pData;
15119 stream->putBe64(cgen_var_1069);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015120 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015121 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015122 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015123 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015124 mImpl->log("finish vkUpdateDescriptorSetWithTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015125}
15126
15127#endif
15128#ifdef VK_KHR_create_renderpass2
15129VkResult VkEncoder::vkCreateRenderPass2KHR(
15130 VkDevice device,
15131 const VkRenderPassCreateInfo2KHR* pCreateInfo,
15132 const VkAllocationCallbacks* pAllocator,
15133 VkRenderPass* pRenderPass)
15134{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015135 mImpl->log("start vkCreateRenderPass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015136 auto stream = mImpl->stream();
15137 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015138 auto resources = mImpl->resources();
15139 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015140 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015141 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015142 VkRenderPassCreateInfo2KHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015143 VkAllocationCallbacks* local_pAllocator;
15144 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015145 local_pCreateInfo = nullptr;
15146 if (pCreateInfo)
15147 {
15148 local_pCreateInfo = (VkRenderPassCreateInfo2KHR*)pool->alloc(sizeof(const VkRenderPassCreateInfo2KHR));
15149 deepcopy_VkRenderPassCreateInfo2KHR(pool, pCreateInfo, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
15150 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015151 local_pAllocator = nullptr;
15152 if (pAllocator)
15153 {
15154 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15155 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15156 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015157 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080015158 if (local_pCreateInfo)
15159 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015160 transform_tohost_VkRenderPassCreateInfo2KHR(mImpl->resources(), (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015161 }
15162 if (local_pAllocator)
15163 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015164 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015165 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015166 countingStream->rewind();
15167 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015168 uint64_t cgen_var_1070;
15169 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1070, 1);
15170 countingStream->write((uint64_t*)&cgen_var_1070, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015171 marshal_VkRenderPassCreateInfo2KHR(countingStream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015172 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015173 uint64_t cgen_var_1071 = (uint64_t)(uintptr_t)local_pAllocator;
15174 countingStream->putBe64(cgen_var_1071);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015175 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015176 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015177 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015178 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015179 uint64_t cgen_var_1072;
15180 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1072, 1);
15181 countingStream->write((uint64_t*)&cgen_var_1072, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015182 }
15183 uint32_t packetSize_vkCreateRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15184 countingStream->rewind();
15185 uint32_t opcode_vkCreateRenderPass2KHR = OP_vkCreateRenderPass2KHR;
15186 stream->write(&opcode_vkCreateRenderPass2KHR, sizeof(uint32_t));
15187 stream->write(&packetSize_vkCreateRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015188 uint64_t cgen_var_1073;
15189 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1073, 1);
15190 stream->write((uint64_t*)&cgen_var_1073, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015191 marshal_VkRenderPassCreateInfo2KHR(stream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015192 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015193 uint64_t cgen_var_1074 = (uint64_t)(uintptr_t)local_pAllocator;
15194 stream->putBe64(cgen_var_1074);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015195 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015196 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015197 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015198 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080015199 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015200 uint64_t cgen_var_1075;
15201 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1075, 1);
15202 stream->write((uint64_t*)&cgen_var_1075, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015203 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015204 uint64_t cgen_var_1076;
15205 stream->read((uint64_t*)&cgen_var_1076, 8);
15206 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_1076, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015207 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
15208 stream->read(&vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015209 countingStream->clearPool();
15210 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015211 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015212 mImpl->log("finish vkCreateRenderPass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015213 return vkCreateRenderPass2KHR_VkResult_return;
15214}
15215
15216void VkEncoder::vkCmdBeginRenderPass2KHR(
15217 VkCommandBuffer commandBuffer,
15218 const VkRenderPassBeginInfo* pRenderPassBegin,
15219 const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
15220{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015221 mImpl->log("start vkCmdBeginRenderPass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015222 auto stream = mImpl->stream();
15223 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015224 auto resources = mImpl->resources();
15225 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015226 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015227 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015228 VkRenderPassBeginInfo* local_pRenderPassBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015229 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
15230 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015231 local_pRenderPassBegin = nullptr;
15232 if (pRenderPassBegin)
15233 {
15234 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
15235 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
15236 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015237 local_pSubpassBeginInfo = nullptr;
15238 if (pSubpassBeginInfo)
15239 {
15240 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
15241 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15242 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015243 if (local_pRenderPassBegin)
15244 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015245 transform_tohost_VkRenderPassBeginInfo(mImpl->resources(), (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015246 }
15247 if (local_pSubpassBeginInfo)
15248 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015249 transform_tohost_VkSubpassBeginInfoKHR(mImpl->resources(), (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015250 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015251 countingStream->rewind();
15252 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015253 uint64_t cgen_var_1077;
15254 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1077, 1);
15255 countingStream->write((uint64_t*)&cgen_var_1077, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015256 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
15257 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015258 }
15259 uint32_t packetSize_vkCmdBeginRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15260 countingStream->rewind();
15261 uint32_t opcode_vkCmdBeginRenderPass2KHR = OP_vkCmdBeginRenderPass2KHR;
15262 stream->write(&opcode_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
15263 stream->write(&packetSize_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015264 uint64_t cgen_var_1078;
15265 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1078, 1);
15266 stream->write((uint64_t*)&cgen_var_1078, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015267 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
15268 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015269 mImpl->log("finish vkCmdBeginRenderPass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015270}
15271
15272void VkEncoder::vkCmdNextSubpass2KHR(
15273 VkCommandBuffer commandBuffer,
15274 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
15275 const VkSubpassEndInfoKHR* pSubpassEndInfo)
15276{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015277 mImpl->log("start vkCmdNextSubpass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015278 auto stream = mImpl->stream();
15279 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015280 auto resources = mImpl->resources();
15281 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015282 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015283 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015284 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015285 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
15286 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015287 local_pSubpassBeginInfo = nullptr;
15288 if (pSubpassBeginInfo)
15289 {
15290 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
15291 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15292 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015293 local_pSubpassEndInfo = nullptr;
15294 if (pSubpassEndInfo)
15295 {
15296 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
15297 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
15298 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015299 if (local_pSubpassBeginInfo)
15300 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015301 transform_tohost_VkSubpassBeginInfoKHR(mImpl->resources(), (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015302 }
15303 if (local_pSubpassEndInfo)
15304 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015305 transform_tohost_VkSubpassEndInfoKHR(mImpl->resources(), (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015306 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015307 countingStream->rewind();
15308 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015309 uint64_t cgen_var_1079;
15310 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1079, 1);
15311 countingStream->write((uint64_t*)&cgen_var_1079, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015312 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15313 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015314 }
15315 uint32_t packetSize_vkCmdNextSubpass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15316 countingStream->rewind();
15317 uint32_t opcode_vkCmdNextSubpass2KHR = OP_vkCmdNextSubpass2KHR;
15318 stream->write(&opcode_vkCmdNextSubpass2KHR, sizeof(uint32_t));
15319 stream->write(&packetSize_vkCmdNextSubpass2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015320 uint64_t cgen_var_1080;
15321 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1080, 1);
15322 stream->write((uint64_t*)&cgen_var_1080, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015323 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15324 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015325 mImpl->log("finish vkCmdNextSubpass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015326}
15327
15328void VkEncoder::vkCmdEndRenderPass2KHR(
15329 VkCommandBuffer commandBuffer,
15330 const VkSubpassEndInfoKHR* pSubpassEndInfo)
15331{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015332 mImpl->log("start vkCmdEndRenderPass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015333 auto stream = mImpl->stream();
15334 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015335 auto resources = mImpl->resources();
15336 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015337 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015338 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015339 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015340 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015341 local_pSubpassEndInfo = nullptr;
15342 if (pSubpassEndInfo)
15343 {
15344 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
15345 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
15346 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015347 if (local_pSubpassEndInfo)
15348 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015349 transform_tohost_VkSubpassEndInfoKHR(mImpl->resources(), (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015350 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015351 countingStream->rewind();
15352 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015353 uint64_t cgen_var_1081;
15354 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1081, 1);
15355 countingStream->write((uint64_t*)&cgen_var_1081, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015356 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015357 }
15358 uint32_t packetSize_vkCmdEndRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15359 countingStream->rewind();
15360 uint32_t opcode_vkCmdEndRenderPass2KHR = OP_vkCmdEndRenderPass2KHR;
15361 stream->write(&opcode_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
15362 stream->write(&packetSize_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015363 uint64_t cgen_var_1082;
15364 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1082, 1);
15365 stream->write((uint64_t*)&cgen_var_1082, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015366 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015367 mImpl->log("finish vkCmdEndRenderPass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015368}
15369
15370#endif
15371#ifdef VK_KHR_shared_presentable_image
15372VkResult VkEncoder::vkGetSwapchainStatusKHR(
15373 VkDevice device,
15374 VkSwapchainKHR swapchain)
15375{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015376 mImpl->log("start vkGetSwapchainStatusKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015377 auto stream = mImpl->stream();
15378 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015379 auto resources = mImpl->resources();
15380 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015381 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015382 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015383 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015384 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015385 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015386 countingStream->rewind();
15387 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015388 uint64_t cgen_var_1083;
15389 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1083, 1);
15390 countingStream->write((uint64_t*)&cgen_var_1083, 1 * 8);
15391 uint64_t cgen_var_1084;
15392 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1084, 1);
15393 countingStream->write((uint64_t*)&cgen_var_1084, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015394 }
15395 uint32_t packetSize_vkGetSwapchainStatusKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15396 countingStream->rewind();
15397 uint32_t opcode_vkGetSwapchainStatusKHR = OP_vkGetSwapchainStatusKHR;
15398 stream->write(&opcode_vkGetSwapchainStatusKHR, sizeof(uint32_t));
15399 stream->write(&packetSize_vkGetSwapchainStatusKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015400 uint64_t cgen_var_1085;
15401 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1085, 1);
15402 stream->write((uint64_t*)&cgen_var_1085, 1 * 8);
15403 uint64_t cgen_var_1086;
15404 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1086, 1);
15405 stream->write((uint64_t*)&cgen_var_1086, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015406 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
15407 stream->read(&vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015408 countingStream->clearPool();
15409 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015410 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015411 mImpl->log("finish vkGetSwapchainStatusKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015412 return vkGetSwapchainStatusKHR_VkResult_return;
15413}
15414
15415#endif
15416#ifdef VK_KHR_external_fence_capabilities
15417void VkEncoder::vkGetPhysicalDeviceExternalFencePropertiesKHR(
15418 VkPhysicalDevice physicalDevice,
15419 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
15420 VkExternalFenceProperties* pExternalFenceProperties)
15421{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015422 mImpl->log("start vkGetPhysicalDeviceExternalFencePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015423 auto stream = mImpl->stream();
15424 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015425 auto resources = mImpl->resources();
15426 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015427 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015428 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015429 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015430 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015431 local_pExternalFenceInfo = nullptr;
15432 if (pExternalFenceInfo)
15433 {
15434 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
15435 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
15436 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015437 if (local_pExternalFenceInfo)
15438 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015439 transform_tohost_VkPhysicalDeviceExternalFenceInfo(mImpl->resources(), (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015440 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015441 countingStream->rewind();
15442 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015443 uint64_t cgen_var_1087;
15444 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1087, 1);
15445 countingStream->write((uint64_t*)&cgen_var_1087, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015446 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015447 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
15448 }
15449 uint32_t packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15450 countingStream->rewind();
15451 uint32_t opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR = OP_vkGetPhysicalDeviceExternalFencePropertiesKHR;
15452 stream->write(&opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
15453 stream->write(&packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015454 uint64_t cgen_var_1088;
15455 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1088, 1);
15456 stream->write((uint64_t*)&cgen_var_1088, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015457 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015458 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
15459 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080015460 if (pExternalFenceProperties)
15461 {
15462 transform_fromhost_VkExternalFenceProperties(mImpl->resources(), (VkExternalFenceProperties*)(pExternalFenceProperties));
15463 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015464 mImpl->log("finish vkGetPhysicalDeviceExternalFencePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015465}
15466
15467#endif
15468#ifdef VK_KHR_external_fence
15469#endif
15470#ifdef VK_KHR_external_fence_win32
15471VkResult VkEncoder::vkImportFenceWin32HandleKHR(
15472 VkDevice device,
15473 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
15474{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015475 mImpl->log("start vkImportFenceWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015476 auto stream = mImpl->stream();
15477 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015478 auto resources = mImpl->resources();
15479 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015480 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015481 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015482 VkImportFenceWin32HandleInfoKHR* local_pImportFenceWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015483 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015484 local_pImportFenceWin32HandleInfo = nullptr;
15485 if (pImportFenceWin32HandleInfo)
15486 {
15487 local_pImportFenceWin32HandleInfo = (VkImportFenceWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportFenceWin32HandleInfoKHR));
15488 deepcopy_VkImportFenceWin32HandleInfoKHR(pool, pImportFenceWin32HandleInfo, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
15489 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015490 if (local_pImportFenceWin32HandleInfo)
15491 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015492 transform_tohost_VkImportFenceWin32HandleInfoKHR(mImpl->resources(), (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015493 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015494 countingStream->rewind();
15495 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015496 uint64_t cgen_var_1089;
15497 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1089, 1);
15498 countingStream->write((uint64_t*)&cgen_var_1089, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015499 marshal_VkImportFenceWin32HandleInfoKHR(countingStream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015500 }
15501 uint32_t packetSize_vkImportFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15502 countingStream->rewind();
15503 uint32_t opcode_vkImportFenceWin32HandleKHR = OP_vkImportFenceWin32HandleKHR;
15504 stream->write(&opcode_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
15505 stream->write(&packetSize_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015506 uint64_t cgen_var_1090;
15507 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1090, 1);
15508 stream->write((uint64_t*)&cgen_var_1090, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015509 marshal_VkImportFenceWin32HandleInfoKHR(stream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015510 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
15511 stream->read(&vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015512 countingStream->clearPool();
15513 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015514 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015515 mImpl->log("finish vkImportFenceWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015516 return vkImportFenceWin32HandleKHR_VkResult_return;
15517}
15518
15519VkResult VkEncoder::vkGetFenceWin32HandleKHR(
15520 VkDevice device,
15521 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
15522 HANDLE* pHandle)
15523{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015524 mImpl->log("start vkGetFenceWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015525 auto stream = mImpl->stream();
15526 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015527 auto resources = mImpl->resources();
15528 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015529 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015530 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015531 VkFenceGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015532 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015533 local_pGetWin32HandleInfo = nullptr;
15534 if (pGetWin32HandleInfo)
15535 {
15536 local_pGetWin32HandleInfo = (VkFenceGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkFenceGetWin32HandleInfoKHR));
15537 deepcopy_VkFenceGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
15538 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015539 if (local_pGetWin32HandleInfo)
15540 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015541 transform_tohost_VkFenceGetWin32HandleInfoKHR(mImpl->resources(), (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015542 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015543 countingStream->rewind();
15544 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015545 uint64_t cgen_var_1091;
15546 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1091, 1);
15547 countingStream->write((uint64_t*)&cgen_var_1091, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015548 marshal_VkFenceGetWin32HandleInfoKHR(countingStream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015549 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
15550 }
15551 uint32_t packetSize_vkGetFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15552 countingStream->rewind();
15553 uint32_t opcode_vkGetFenceWin32HandleKHR = OP_vkGetFenceWin32HandleKHR;
15554 stream->write(&opcode_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
15555 stream->write(&packetSize_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015556 uint64_t cgen_var_1092;
15557 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1092, 1);
15558 stream->write((uint64_t*)&cgen_var_1092, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015559 marshal_VkFenceGetWin32HandleInfoKHR(stream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015560 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
15561 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
15562 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
15563 stream->read(&vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015564 countingStream->clearPool();
15565 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015566 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015567 mImpl->log("finish vkGetFenceWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015568 return vkGetFenceWin32HandleKHR_VkResult_return;
15569}
15570
15571#endif
15572#ifdef VK_KHR_external_fence_fd
15573VkResult VkEncoder::vkImportFenceFdKHR(
15574 VkDevice device,
15575 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
15576{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015577 mImpl->log("start vkImportFenceFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015578 auto stream = mImpl->stream();
15579 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015580 auto resources = mImpl->resources();
15581 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015582 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015583 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015584 VkImportFenceFdInfoKHR* local_pImportFenceFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015585 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015586 local_pImportFenceFdInfo = nullptr;
15587 if (pImportFenceFdInfo)
15588 {
15589 local_pImportFenceFdInfo = (VkImportFenceFdInfoKHR*)pool->alloc(sizeof(const VkImportFenceFdInfoKHR));
15590 deepcopy_VkImportFenceFdInfoKHR(pool, pImportFenceFdInfo, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
15591 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015592 if (local_pImportFenceFdInfo)
15593 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015594 transform_tohost_VkImportFenceFdInfoKHR(mImpl->resources(), (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015595 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015596 countingStream->rewind();
15597 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015598 uint64_t cgen_var_1093;
15599 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1093, 1);
15600 countingStream->write((uint64_t*)&cgen_var_1093, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015601 marshal_VkImportFenceFdInfoKHR(countingStream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015602 }
15603 uint32_t packetSize_vkImportFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15604 countingStream->rewind();
15605 uint32_t opcode_vkImportFenceFdKHR = OP_vkImportFenceFdKHR;
15606 stream->write(&opcode_vkImportFenceFdKHR, sizeof(uint32_t));
15607 stream->write(&packetSize_vkImportFenceFdKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015608 uint64_t cgen_var_1094;
15609 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1094, 1);
15610 stream->write((uint64_t*)&cgen_var_1094, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015611 marshal_VkImportFenceFdInfoKHR(stream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015612 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
15613 stream->read(&vkImportFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015614 countingStream->clearPool();
15615 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015616 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015617 mImpl->log("finish vkImportFenceFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015618 return vkImportFenceFdKHR_VkResult_return;
15619}
15620
15621VkResult VkEncoder::vkGetFenceFdKHR(
15622 VkDevice device,
15623 const VkFenceGetFdInfoKHR* pGetFdInfo,
15624 int* pFd)
15625{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015626 mImpl->log("start vkGetFenceFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015627 auto stream = mImpl->stream();
15628 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015629 auto resources = mImpl->resources();
15630 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015631 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015632 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015633 VkFenceGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015634 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015635 local_pGetFdInfo = nullptr;
15636 if (pGetFdInfo)
15637 {
15638 local_pGetFdInfo = (VkFenceGetFdInfoKHR*)pool->alloc(sizeof(const VkFenceGetFdInfoKHR));
15639 deepcopy_VkFenceGetFdInfoKHR(pool, pGetFdInfo, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
15640 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015641 if (local_pGetFdInfo)
15642 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015643 transform_tohost_VkFenceGetFdInfoKHR(mImpl->resources(), (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015644 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015645 countingStream->rewind();
15646 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015647 uint64_t cgen_var_1095;
15648 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1095, 1);
15649 countingStream->write((uint64_t*)&cgen_var_1095, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015650 marshal_VkFenceGetFdInfoKHR(countingStream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015651 countingStream->write((int*)pFd, sizeof(int));
15652 }
15653 uint32_t packetSize_vkGetFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15654 countingStream->rewind();
15655 uint32_t opcode_vkGetFenceFdKHR = OP_vkGetFenceFdKHR;
15656 stream->write(&opcode_vkGetFenceFdKHR, sizeof(uint32_t));
15657 stream->write(&packetSize_vkGetFenceFdKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015658 uint64_t cgen_var_1096;
15659 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1096, 1);
15660 stream->write((uint64_t*)&cgen_var_1096, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015661 marshal_VkFenceGetFdInfoKHR(stream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015662 stream->write((int*)pFd, sizeof(int));
15663 stream->read((int*)pFd, sizeof(int));
15664 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
15665 stream->read(&vkGetFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015666 countingStream->clearPool();
15667 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015668 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015669 mImpl->log("finish vkGetFenceFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015670 return vkGetFenceFdKHR_VkResult_return;
15671}
15672
15673#endif
15674#ifdef VK_KHR_maintenance2
15675#endif
15676#ifdef VK_KHR_get_surface_capabilities2
15677VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2KHR(
15678 VkPhysicalDevice physicalDevice,
15679 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
15680 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
15681{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015682 mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilities2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015683 auto stream = mImpl->stream();
15684 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015685 auto resources = mImpl->resources();
15686 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015687 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015688 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015689 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015690 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015691 local_pSurfaceInfo = nullptr;
15692 if (pSurfaceInfo)
15693 {
15694 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
15695 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
15696 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015697 if (local_pSurfaceInfo)
15698 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015699 transform_tohost_VkPhysicalDeviceSurfaceInfo2KHR(mImpl->resources(), (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015700 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015701 countingStream->rewind();
15702 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015703 uint64_t cgen_var_1097;
15704 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1097, 1);
15705 countingStream->write((uint64_t*)&cgen_var_1097, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015706 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015707 marshal_VkSurfaceCapabilities2KHR(countingStream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
15708 }
15709 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15710 countingStream->rewind();
15711 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR = OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR;
15712 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
15713 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015714 uint64_t cgen_var_1098;
15715 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1098, 1);
15716 stream->write((uint64_t*)&cgen_var_1098, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015717 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015718 marshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
15719 unmarshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080015720 if (pSurfaceCapabilities)
15721 {
15722 transform_fromhost_VkSurfaceCapabilities2KHR(mImpl->resources(), (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
15723 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015724 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
15725 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015726 countingStream->clearPool();
15727 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015728 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015729 mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilities2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015730 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
15731}
15732
15733VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormats2KHR(
15734 VkPhysicalDevice physicalDevice,
15735 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
15736 uint32_t* pSurfaceFormatCount,
15737 VkSurfaceFormat2KHR* pSurfaceFormats)
15738{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015739 mImpl->log("start vkGetPhysicalDeviceSurfaceFormats2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015740 auto stream = mImpl->stream();
15741 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015742 auto resources = mImpl->resources();
15743 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015744 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015745 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015746 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015747 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015748 local_pSurfaceInfo = nullptr;
15749 if (pSurfaceInfo)
15750 {
15751 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
15752 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
15753 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015754 if (local_pSurfaceInfo)
15755 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015756 transform_tohost_VkPhysicalDeviceSurfaceInfo2KHR(mImpl->resources(), (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015757 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015758 countingStream->rewind();
15759 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015760 uint64_t cgen_var_1099;
15761 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1099, 1);
15762 countingStream->write((uint64_t*)&cgen_var_1099, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015763 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015764 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015765 uint64_t cgen_var_1100 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
15766 countingStream->putBe64(cgen_var_1100);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015767 if (pSurfaceFormatCount)
15768 {
15769 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
15770 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015771 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015772 uint64_t cgen_var_1101 = (uint64_t)(uintptr_t)pSurfaceFormats;
15773 countingStream->putBe64(cgen_var_1101);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015774 if (pSurfaceFormats)
15775 {
15776 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
15777 {
15778 marshal_VkSurfaceFormat2KHR(countingStream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
15779 }
15780 }
15781 }
15782 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15783 countingStream->rewind();
15784 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormats2KHR = OP_vkGetPhysicalDeviceSurfaceFormats2KHR;
15785 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
15786 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015787 uint64_t cgen_var_1102;
15788 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1102, 1);
15789 stream->write((uint64_t*)&cgen_var_1102, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015790 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015791 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015792 uint64_t cgen_var_1103 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
15793 stream->putBe64(cgen_var_1103);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015794 if (pSurfaceFormatCount)
15795 {
15796 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
15797 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015798 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015799 uint64_t cgen_var_1104 = (uint64_t)(uintptr_t)pSurfaceFormats;
15800 stream->putBe64(cgen_var_1104);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015801 if (pSurfaceFormats)
15802 {
15803 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
15804 {
15805 marshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
15806 }
15807 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015808 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015809 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015810 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015811 if (pSurfaceFormatCount)
15812 {
15813 if (!(check_pSurfaceFormatCount))
15814 {
15815 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
15816 }
15817 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
15818 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015819 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015820 VkSurfaceFormat2KHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015821 check_pSurfaceFormats = (VkSurfaceFormat2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015822 if (pSurfaceFormats)
15823 {
15824 if (!(check_pSurfaceFormats))
15825 {
15826 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
15827 }
15828 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
15829 {
15830 unmarshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
15831 }
15832 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080015833 if (pSurfaceFormats)
15834 {
15835 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
15836 {
15837 transform_fromhost_VkSurfaceFormat2KHR(mImpl->resources(), (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
15838 }
15839 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015840 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
15841 stream->read(&vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015842 countingStream->clearPool();
15843 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015844 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015845 mImpl->log("finish vkGetPhysicalDeviceSurfaceFormats2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015846 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
15847}
15848
15849#endif
15850#ifdef VK_KHR_variable_pointers
15851#endif
15852#ifdef VK_KHR_get_display_properties2
15853VkResult VkEncoder::vkGetPhysicalDeviceDisplayProperties2KHR(
15854 VkPhysicalDevice physicalDevice,
15855 uint32_t* pPropertyCount,
15856 VkDisplayProperties2KHR* pProperties)
15857{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015858 mImpl->log("start vkGetPhysicalDeviceDisplayProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015859 auto stream = mImpl->stream();
15860 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015861 auto resources = mImpl->resources();
15862 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015863 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015864 VkPhysicalDevice local_physicalDevice;
15865 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015866 countingStream->rewind();
15867 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015868 uint64_t cgen_var_1107;
15869 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1107, 1);
15870 countingStream->write((uint64_t*)&cgen_var_1107, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015871 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015872 uint64_t cgen_var_1108 = (uint64_t)(uintptr_t)pPropertyCount;
15873 countingStream->putBe64(cgen_var_1108);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015874 if (pPropertyCount)
15875 {
15876 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15877 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015878 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015879 uint64_t cgen_var_1109 = (uint64_t)(uintptr_t)pProperties;
15880 countingStream->putBe64(cgen_var_1109);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015881 if (pProperties)
15882 {
15883 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15884 {
15885 marshal_VkDisplayProperties2KHR(countingStream, (VkDisplayProperties2KHR*)(pProperties + i));
15886 }
15887 }
15888 }
15889 uint32_t packetSize_vkGetPhysicalDeviceDisplayProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15890 countingStream->rewind();
15891 uint32_t opcode_vkGetPhysicalDeviceDisplayProperties2KHR = OP_vkGetPhysicalDeviceDisplayProperties2KHR;
15892 stream->write(&opcode_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
15893 stream->write(&packetSize_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015894 uint64_t cgen_var_1110;
15895 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1110, 1);
15896 stream->write((uint64_t*)&cgen_var_1110, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015897 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015898 uint64_t cgen_var_1111 = (uint64_t)(uintptr_t)pPropertyCount;
15899 stream->putBe64(cgen_var_1111);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015900 if (pPropertyCount)
15901 {
15902 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15903 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015904 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015905 uint64_t cgen_var_1112 = (uint64_t)(uintptr_t)pProperties;
15906 stream->putBe64(cgen_var_1112);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015907 if (pProperties)
15908 {
15909 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15910 {
15911 marshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
15912 }
15913 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015914 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015915 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015916 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015917 if (pPropertyCount)
15918 {
15919 if (!(check_pPropertyCount))
15920 {
15921 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
15922 }
15923 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
15924 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015925 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015926 VkDisplayProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015927 check_pProperties = (VkDisplayProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015928 if (pProperties)
15929 {
15930 if (!(check_pProperties))
15931 {
15932 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
15933 }
15934 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15935 {
15936 unmarshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
15937 }
15938 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080015939 if (pProperties)
15940 {
15941 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15942 {
15943 transform_fromhost_VkDisplayProperties2KHR(mImpl->resources(), (VkDisplayProperties2KHR*)(pProperties + i));
15944 }
15945 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015946 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
15947 stream->read(&vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015948 countingStream->clearPool();
15949 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015950 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015951 mImpl->log("finish vkGetPhysicalDeviceDisplayProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015952 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
15953}
15954
15955VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
15956 VkPhysicalDevice physicalDevice,
15957 uint32_t* pPropertyCount,
15958 VkDisplayPlaneProperties2KHR* pProperties)
15959{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015960 mImpl->log("start vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015961 auto stream = mImpl->stream();
15962 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015963 auto resources = mImpl->resources();
15964 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015965 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015966 VkPhysicalDevice local_physicalDevice;
15967 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015968 countingStream->rewind();
15969 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015970 uint64_t cgen_var_1115;
15971 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1115, 1);
15972 countingStream->write((uint64_t*)&cgen_var_1115, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015973 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015974 uint64_t cgen_var_1116 = (uint64_t)(uintptr_t)pPropertyCount;
15975 countingStream->putBe64(cgen_var_1116);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015976 if (pPropertyCount)
15977 {
15978 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15979 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015980 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015981 uint64_t cgen_var_1117 = (uint64_t)(uintptr_t)pProperties;
15982 countingStream->putBe64(cgen_var_1117);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015983 if (pProperties)
15984 {
15985 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15986 {
15987 marshal_VkDisplayPlaneProperties2KHR(countingStream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
15988 }
15989 }
15990 }
15991 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15992 countingStream->rewind();
15993 uint32_t opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
15994 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
15995 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015996 uint64_t cgen_var_1118;
15997 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1118, 1);
15998 stream->write((uint64_t*)&cgen_var_1118, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015999 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016000 uint64_t cgen_var_1119 = (uint64_t)(uintptr_t)pPropertyCount;
16001 stream->putBe64(cgen_var_1119);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016002 if (pPropertyCount)
16003 {
16004 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16005 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016006 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016007 uint64_t cgen_var_1120 = (uint64_t)(uintptr_t)pProperties;
16008 stream->putBe64(cgen_var_1120);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016009 if (pProperties)
16010 {
16011 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16012 {
16013 marshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
16014 }
16015 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016016 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016017 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016018 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016019 if (pPropertyCount)
16020 {
16021 if (!(check_pPropertyCount))
16022 {
16023 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
16024 }
16025 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
16026 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016027 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016028 VkDisplayPlaneProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016029 check_pProperties = (VkDisplayPlaneProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016030 if (pProperties)
16031 {
16032 if (!(check_pProperties))
16033 {
16034 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
16035 }
16036 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16037 {
16038 unmarshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
16039 }
16040 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080016041 if (pProperties)
16042 {
16043 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16044 {
16045 transform_fromhost_VkDisplayPlaneProperties2KHR(mImpl->resources(), (VkDisplayPlaneProperties2KHR*)(pProperties + i));
16046 }
16047 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016048 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
16049 stream->read(&vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016050 countingStream->clearPool();
16051 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016052 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016053 mImpl->log("finish vkGetPhysicalDeviceDisplayPlaneProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016054 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
16055}
16056
16057VkResult VkEncoder::vkGetDisplayModeProperties2KHR(
16058 VkPhysicalDevice physicalDevice,
16059 VkDisplayKHR display,
16060 uint32_t* pPropertyCount,
16061 VkDisplayModeProperties2KHR* pProperties)
16062{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016063 mImpl->log("start vkGetDisplayModeProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016064 auto stream = mImpl->stream();
16065 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016066 auto resources = mImpl->resources();
16067 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016068 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016069 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016070 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016071 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016072 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016073 countingStream->rewind();
16074 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016075 uint64_t cgen_var_1123;
16076 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1123, 1);
16077 countingStream->write((uint64_t*)&cgen_var_1123, 1 * 8);
16078 uint64_t cgen_var_1124;
16079 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1124, 1);
16080 countingStream->write((uint64_t*)&cgen_var_1124, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016081 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016082 uint64_t cgen_var_1125 = (uint64_t)(uintptr_t)pPropertyCount;
16083 countingStream->putBe64(cgen_var_1125);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016084 if (pPropertyCount)
16085 {
16086 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16087 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016088 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016089 uint64_t cgen_var_1126 = (uint64_t)(uintptr_t)pProperties;
16090 countingStream->putBe64(cgen_var_1126);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016091 if (pProperties)
16092 {
16093 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16094 {
16095 marshal_VkDisplayModeProperties2KHR(countingStream, (VkDisplayModeProperties2KHR*)(pProperties + i));
16096 }
16097 }
16098 }
16099 uint32_t packetSize_vkGetDisplayModeProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16100 countingStream->rewind();
16101 uint32_t opcode_vkGetDisplayModeProperties2KHR = OP_vkGetDisplayModeProperties2KHR;
16102 stream->write(&opcode_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
16103 stream->write(&packetSize_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016104 uint64_t cgen_var_1127;
16105 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1127, 1);
16106 stream->write((uint64_t*)&cgen_var_1127, 1 * 8);
16107 uint64_t cgen_var_1128;
16108 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1128, 1);
16109 stream->write((uint64_t*)&cgen_var_1128, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016110 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016111 uint64_t cgen_var_1129 = (uint64_t)(uintptr_t)pPropertyCount;
16112 stream->putBe64(cgen_var_1129);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016113 if (pPropertyCount)
16114 {
16115 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16116 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016117 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016118 uint64_t cgen_var_1130 = (uint64_t)(uintptr_t)pProperties;
16119 stream->putBe64(cgen_var_1130);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016120 if (pProperties)
16121 {
16122 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16123 {
16124 marshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
16125 }
16126 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016127 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016128 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016129 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016130 if (pPropertyCount)
16131 {
16132 if (!(check_pPropertyCount))
16133 {
16134 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
16135 }
16136 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
16137 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016138 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016139 VkDisplayModeProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016140 check_pProperties = (VkDisplayModeProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016141 if (pProperties)
16142 {
16143 if (!(check_pProperties))
16144 {
16145 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
16146 }
16147 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16148 {
16149 unmarshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
16150 }
16151 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080016152 if (pProperties)
16153 {
16154 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16155 {
16156 transform_fromhost_VkDisplayModeProperties2KHR(mImpl->resources(), (VkDisplayModeProperties2KHR*)(pProperties + i));
16157 }
16158 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016159 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
16160 stream->read(&vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016161 countingStream->clearPool();
16162 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016163 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016164 mImpl->log("finish vkGetDisplayModeProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016165 return vkGetDisplayModeProperties2KHR_VkResult_return;
16166}
16167
16168VkResult VkEncoder::vkGetDisplayPlaneCapabilities2KHR(
16169 VkPhysicalDevice physicalDevice,
16170 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
16171 VkDisplayPlaneCapabilities2KHR* pCapabilities)
16172{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016173 mImpl->log("start vkGetDisplayPlaneCapabilities2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016174 auto stream = mImpl->stream();
16175 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016176 auto resources = mImpl->resources();
16177 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016178 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016179 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016180 VkDisplayPlaneInfo2KHR* local_pDisplayPlaneInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016181 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016182 local_pDisplayPlaneInfo = nullptr;
16183 if (pDisplayPlaneInfo)
16184 {
16185 local_pDisplayPlaneInfo = (VkDisplayPlaneInfo2KHR*)pool->alloc(sizeof(const VkDisplayPlaneInfo2KHR));
16186 deepcopy_VkDisplayPlaneInfo2KHR(pool, pDisplayPlaneInfo, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
16187 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016188 if (local_pDisplayPlaneInfo)
16189 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016190 transform_tohost_VkDisplayPlaneInfo2KHR(mImpl->resources(), (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016191 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016192 countingStream->rewind();
16193 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016194 uint64_t cgen_var_1133;
16195 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1133, 1);
16196 countingStream->write((uint64_t*)&cgen_var_1133, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016197 marshal_VkDisplayPlaneInfo2KHR(countingStream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016198 marshal_VkDisplayPlaneCapabilities2KHR(countingStream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
16199 }
16200 uint32_t packetSize_vkGetDisplayPlaneCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16201 countingStream->rewind();
16202 uint32_t opcode_vkGetDisplayPlaneCapabilities2KHR = OP_vkGetDisplayPlaneCapabilities2KHR;
16203 stream->write(&opcode_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
16204 stream->write(&packetSize_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016205 uint64_t cgen_var_1134;
16206 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1134, 1);
16207 stream->write((uint64_t*)&cgen_var_1134, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016208 marshal_VkDisplayPlaneInfo2KHR(stream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016209 marshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
16210 unmarshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016211 if (pCapabilities)
16212 {
16213 transform_fromhost_VkDisplayPlaneCapabilities2KHR(mImpl->resources(), (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
16214 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016215 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
16216 stream->read(&vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016217 countingStream->clearPool();
16218 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016219 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016220 mImpl->log("finish vkGetDisplayPlaneCapabilities2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016221 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
16222}
16223
16224#endif
16225#ifdef VK_KHR_dedicated_allocation
16226#endif
16227#ifdef VK_KHR_storage_buffer_storage_class
16228#endif
16229#ifdef VK_KHR_relaxed_block_layout
16230#endif
16231#ifdef VK_KHR_get_memory_requirements2
16232void VkEncoder::vkGetImageMemoryRequirements2KHR(
16233 VkDevice device,
16234 const VkImageMemoryRequirementsInfo2* pInfo,
16235 VkMemoryRequirements2* pMemoryRequirements)
16236{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016237 mImpl->log("start vkGetImageMemoryRequirements2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016238 auto stream = mImpl->stream();
16239 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016240 auto resources = mImpl->resources();
16241 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016242 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016243 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016244 VkImageMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016245 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016246 local_pInfo = nullptr;
16247 if (pInfo)
16248 {
16249 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
16250 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
16251 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016252 if (local_pInfo)
16253 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016254 transform_tohost_VkImageMemoryRequirementsInfo2(mImpl->resources(), (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016255 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016256 countingStream->rewind();
16257 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016258 uint64_t cgen_var_1135;
16259 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1135, 1);
16260 countingStream->write((uint64_t*)&cgen_var_1135, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016261 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016262 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
16263 }
16264 uint32_t packetSize_vkGetImageMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16265 countingStream->rewind();
16266 uint32_t opcode_vkGetImageMemoryRequirements2KHR = OP_vkGetImageMemoryRequirements2KHR;
16267 stream->write(&opcode_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
16268 stream->write(&packetSize_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016269 uint64_t cgen_var_1136;
16270 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1136, 1);
16271 stream->write((uint64_t*)&cgen_var_1136, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016272 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016273 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
16274 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016275 if (pMemoryRequirements)
16276 {
16277 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
16278 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016279 mImpl->log("finish vkGetImageMemoryRequirements2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016280}
16281
16282void VkEncoder::vkGetBufferMemoryRequirements2KHR(
16283 VkDevice device,
16284 const VkBufferMemoryRequirementsInfo2* pInfo,
16285 VkMemoryRequirements2* pMemoryRequirements)
16286{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016287 mImpl->log("start vkGetBufferMemoryRequirements2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016288 auto stream = mImpl->stream();
16289 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016290 auto resources = mImpl->resources();
16291 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016292 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016293 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016294 VkBufferMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016295 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016296 local_pInfo = nullptr;
16297 if (pInfo)
16298 {
16299 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
16300 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
16301 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016302 if (local_pInfo)
16303 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016304 transform_tohost_VkBufferMemoryRequirementsInfo2(mImpl->resources(), (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016305 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016306 countingStream->rewind();
16307 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016308 uint64_t cgen_var_1137;
16309 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1137, 1);
16310 countingStream->write((uint64_t*)&cgen_var_1137, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016311 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016312 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
16313 }
16314 uint32_t packetSize_vkGetBufferMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16315 countingStream->rewind();
16316 uint32_t opcode_vkGetBufferMemoryRequirements2KHR = OP_vkGetBufferMemoryRequirements2KHR;
16317 stream->write(&opcode_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
16318 stream->write(&packetSize_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016319 uint64_t cgen_var_1138;
16320 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1138, 1);
16321 stream->write((uint64_t*)&cgen_var_1138, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016322 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016323 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
16324 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016325 if (pMemoryRequirements)
16326 {
16327 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
16328 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016329 mImpl->log("finish vkGetBufferMemoryRequirements2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016330}
16331
16332void VkEncoder::vkGetImageSparseMemoryRequirements2KHR(
16333 VkDevice device,
16334 const VkImageSparseMemoryRequirementsInfo2* pInfo,
16335 uint32_t* pSparseMemoryRequirementCount,
16336 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
16337{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016338 mImpl->log("start vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016339 auto stream = mImpl->stream();
16340 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016341 auto resources = mImpl->resources();
16342 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016343 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016344 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016345 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016346 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016347 local_pInfo = nullptr;
16348 if (pInfo)
16349 {
16350 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
16351 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
16352 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016353 if (local_pInfo)
16354 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016355 transform_tohost_VkImageSparseMemoryRequirementsInfo2(mImpl->resources(), (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016356 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016357 countingStream->rewind();
16358 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016359 uint64_t cgen_var_1139;
16360 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1139, 1);
16361 countingStream->write((uint64_t*)&cgen_var_1139, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016362 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016363 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016364 uint64_t cgen_var_1140 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
16365 countingStream->putBe64(cgen_var_1140);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016366 if (pSparseMemoryRequirementCount)
16367 {
16368 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
16369 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016370 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016371 uint64_t cgen_var_1141 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
16372 countingStream->putBe64(cgen_var_1141);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016373 if (pSparseMemoryRequirements)
16374 {
16375 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
16376 {
16377 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
16378 }
16379 }
16380 }
16381 uint32_t packetSize_vkGetImageSparseMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16382 countingStream->rewind();
16383 uint32_t opcode_vkGetImageSparseMemoryRequirements2KHR = OP_vkGetImageSparseMemoryRequirements2KHR;
16384 stream->write(&opcode_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
16385 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016386 uint64_t cgen_var_1142;
16387 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1142, 1);
16388 stream->write((uint64_t*)&cgen_var_1142, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016389 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016390 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016391 uint64_t cgen_var_1143 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
16392 stream->putBe64(cgen_var_1143);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016393 if (pSparseMemoryRequirementCount)
16394 {
16395 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
16396 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016397 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016398 uint64_t cgen_var_1144 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
16399 stream->putBe64(cgen_var_1144);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016400 if (pSparseMemoryRequirements)
16401 {
16402 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
16403 {
16404 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
16405 }
16406 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016407 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016408 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016409 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016410 if (pSparseMemoryRequirementCount)
16411 {
16412 if (!(check_pSparseMemoryRequirementCount))
16413 {
16414 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
16415 }
16416 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
16417 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016418 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016419 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016420 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016421 if (pSparseMemoryRequirements)
16422 {
16423 if (!(check_pSparseMemoryRequirements))
16424 {
16425 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
16426 }
16427 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
16428 {
16429 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
16430 }
16431 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080016432 if (pSparseMemoryRequirements)
16433 {
16434 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
16435 {
16436 transform_fromhost_VkSparseImageMemoryRequirements2(mImpl->resources(), (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
16437 }
16438 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016439 mImpl->log("finish vkGetImageSparseMemoryRequirements2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016440}
16441
16442#endif
16443#ifdef VK_KHR_image_format_list
16444#endif
16445#ifdef VK_KHR_sampler_ycbcr_conversion
16446VkResult VkEncoder::vkCreateSamplerYcbcrConversionKHR(
16447 VkDevice device,
16448 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
16449 const VkAllocationCallbacks* pAllocator,
16450 VkSamplerYcbcrConversion* pYcbcrConversion)
16451{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016452 mImpl->log("start vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016453 auto stream = mImpl->stream();
16454 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016455 auto resources = mImpl->resources();
16456 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016457 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016458 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016459 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016460 VkAllocationCallbacks* local_pAllocator;
16461 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016462 local_pCreateInfo = nullptr;
16463 if (pCreateInfo)
16464 {
16465 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
16466 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
16467 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016468 local_pAllocator = nullptr;
16469 if (pAllocator)
16470 {
16471 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16472 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16473 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016474 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080016475 if (local_pCreateInfo)
16476 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016477 transform_tohost_VkSamplerYcbcrConversionCreateInfo(mImpl->resources(), (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016478 }
16479 if (local_pAllocator)
16480 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016481 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016482 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016483 countingStream->rewind();
16484 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016485 uint64_t cgen_var_1147;
16486 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1147, 1);
16487 countingStream->write((uint64_t*)&cgen_var_1147, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016488 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016489 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016490 uint64_t cgen_var_1148 = (uint64_t)(uintptr_t)local_pAllocator;
16491 countingStream->putBe64(cgen_var_1148);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016492 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016493 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016494 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016495 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016496 uint64_t cgen_var_1149;
16497 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1149, 1);
16498 countingStream->write((uint64_t*)&cgen_var_1149, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016499 }
16500 uint32_t packetSize_vkCreateSamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16501 countingStream->rewind();
16502 uint32_t opcode_vkCreateSamplerYcbcrConversionKHR = OP_vkCreateSamplerYcbcrConversionKHR;
16503 stream->write(&opcode_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
16504 stream->write(&packetSize_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016505 uint64_t cgen_var_1150;
16506 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1150, 1);
16507 stream->write((uint64_t*)&cgen_var_1150, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016508 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016509 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016510 uint64_t cgen_var_1151 = (uint64_t)(uintptr_t)local_pAllocator;
16511 stream->putBe64(cgen_var_1151);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016512 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016513 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016514 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016515 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016516 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016517 uint64_t cgen_var_1152;
16518 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1152, 1);
16519 stream->write((uint64_t*)&cgen_var_1152, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016520 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016521 uint64_t cgen_var_1153;
16522 stream->read((uint64_t*)&cgen_var_1153, 8);
16523 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_1153, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016524 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
16525 stream->read(&vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016526 countingStream->clearPool();
16527 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016528 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016529 mImpl->log("finish vkCreateSamplerYcbcrConversionKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016530 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
16531}
16532
16533void VkEncoder::vkDestroySamplerYcbcrConversionKHR(
16534 VkDevice device,
16535 VkSamplerYcbcrConversion ycbcrConversion,
16536 const VkAllocationCallbacks* pAllocator)
16537{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016538 mImpl->log("start vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016539 auto stream = mImpl->stream();
16540 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016541 auto resources = mImpl->resources();
16542 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016543 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016544 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016545 VkSamplerYcbcrConversion local_ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016546 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016547 local_device = device;
16548 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016549 local_pAllocator = nullptr;
16550 if (pAllocator)
16551 {
16552 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16553 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16554 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016555 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080016556 if (local_pAllocator)
16557 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016558 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016559 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016560 countingStream->rewind();
16561 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016562 uint64_t cgen_var_1154;
16563 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1154, 1);
16564 countingStream->write((uint64_t*)&cgen_var_1154, 1 * 8);
16565 uint64_t cgen_var_1155;
16566 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1155, 1);
16567 countingStream->write((uint64_t*)&cgen_var_1155, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016568 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016569 uint64_t cgen_var_1156 = (uint64_t)(uintptr_t)local_pAllocator;
16570 countingStream->putBe64(cgen_var_1156);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016571 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016572 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016573 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016574 }
16575 }
16576 uint32_t packetSize_vkDestroySamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16577 countingStream->rewind();
16578 uint32_t opcode_vkDestroySamplerYcbcrConversionKHR = OP_vkDestroySamplerYcbcrConversionKHR;
16579 stream->write(&opcode_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
16580 stream->write(&packetSize_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016581 uint64_t cgen_var_1157;
16582 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1157, 1);
16583 stream->write((uint64_t*)&cgen_var_1157, 1 * 8);
16584 uint64_t cgen_var_1158;
16585 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1158, 1);
16586 stream->write((uint64_t*)&cgen_var_1158, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016587 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016588 uint64_t cgen_var_1159 = (uint64_t)(uintptr_t)local_pAllocator;
16589 stream->putBe64(cgen_var_1159);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016590 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016591 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016592 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016593 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016594 mImpl->log("finish vkDestroySamplerYcbcrConversionKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016595}
16596
16597#endif
16598#ifdef VK_KHR_bind_memory2
16599VkResult VkEncoder::vkBindBufferMemory2KHR(
16600 VkDevice device,
16601 uint32_t bindInfoCount,
16602 const VkBindBufferMemoryInfo* pBindInfos)
16603{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016604 mImpl->log("start vkBindBufferMemory2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016605 auto stream = mImpl->stream();
16606 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016607 auto resources = mImpl->resources();
16608 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016609 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016610 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016611 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016612 VkBindBufferMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016613 local_device = device;
16614 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016615 local_pBindInfos = nullptr;
16616 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016617 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016618 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016619 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16620 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016621 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
16622 }
16623 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016624 if (local_pBindInfos)
16625 {
16626 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16627 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016628 transform_tohost_VkBindBufferMemoryInfo(mImpl->resources(), (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016629 }
16630 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016631 countingStream->rewind();
16632 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016633 uint64_t cgen_var_1160;
16634 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1160, 1);
16635 countingStream->write((uint64_t*)&cgen_var_1160, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016636 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
16637 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16638 {
16639 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016640 }
16641 }
16642 uint32_t packetSize_vkBindBufferMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16643 countingStream->rewind();
16644 uint32_t opcode_vkBindBufferMemory2KHR = OP_vkBindBufferMemory2KHR;
16645 stream->write(&opcode_vkBindBufferMemory2KHR, sizeof(uint32_t));
16646 stream->write(&packetSize_vkBindBufferMemory2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016647 uint64_t cgen_var_1161;
16648 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1161, 1);
16649 stream->write((uint64_t*)&cgen_var_1161, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016650 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016651 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16652 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016653 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016654 }
16655 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
16656 stream->read(&vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016657 countingStream->clearPool();
16658 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016659 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016660 mImpl->log("finish vkBindBufferMemory2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016661 return vkBindBufferMemory2KHR_VkResult_return;
16662}
16663
16664VkResult VkEncoder::vkBindImageMemory2KHR(
16665 VkDevice device,
16666 uint32_t bindInfoCount,
16667 const VkBindImageMemoryInfo* pBindInfos)
16668{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016669 mImpl->log("start vkBindImageMemory2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016670 auto stream = mImpl->stream();
16671 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016672 auto resources = mImpl->resources();
16673 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016674 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016675 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016676 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016677 VkBindImageMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016678 local_device = device;
16679 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016680 local_pBindInfos = nullptr;
16681 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016682 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016683 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016684 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16685 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016686 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
16687 }
16688 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016689 if (local_pBindInfos)
16690 {
16691 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16692 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016693 transform_tohost_VkBindImageMemoryInfo(mImpl->resources(), (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016694 }
16695 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016696 countingStream->rewind();
16697 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016698 uint64_t cgen_var_1162;
16699 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1162, 1);
16700 countingStream->write((uint64_t*)&cgen_var_1162, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016701 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
16702 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16703 {
16704 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016705 }
16706 }
16707 uint32_t packetSize_vkBindImageMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16708 countingStream->rewind();
16709 uint32_t opcode_vkBindImageMemory2KHR = OP_vkBindImageMemory2KHR;
16710 stream->write(&opcode_vkBindImageMemory2KHR, sizeof(uint32_t));
16711 stream->write(&packetSize_vkBindImageMemory2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016712 uint64_t cgen_var_1163;
16713 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1163, 1);
16714 stream->write((uint64_t*)&cgen_var_1163, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016715 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016716 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16717 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016718 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016719 }
16720 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
16721 stream->read(&vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016722 countingStream->clearPool();
16723 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016724 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016725 mImpl->log("finish vkBindImageMemory2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016726 return vkBindImageMemory2KHR_VkResult_return;
16727}
16728
16729#endif
16730#ifdef VK_KHR_maintenance3
16731void VkEncoder::vkGetDescriptorSetLayoutSupportKHR(
16732 VkDevice device,
16733 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
16734 VkDescriptorSetLayoutSupport* pSupport)
16735{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016736 mImpl->log("start vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016737 auto stream = mImpl->stream();
16738 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016739 auto resources = mImpl->resources();
16740 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016741 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016742 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016743 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016744 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016745 local_pCreateInfo = nullptr;
16746 if (pCreateInfo)
16747 {
16748 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
16749 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
16750 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016751 if (local_pCreateInfo)
16752 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016753 transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016754 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016755 countingStream->rewind();
16756 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016757 uint64_t cgen_var_1164;
16758 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1164, 1);
16759 countingStream->write((uint64_t*)&cgen_var_1164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016760 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016761 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
16762 }
16763 uint32_t packetSize_vkGetDescriptorSetLayoutSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16764 countingStream->rewind();
16765 uint32_t opcode_vkGetDescriptorSetLayoutSupportKHR = OP_vkGetDescriptorSetLayoutSupportKHR;
16766 stream->write(&opcode_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
16767 stream->write(&packetSize_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016768 uint64_t cgen_var_1165;
16769 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1165, 1);
16770 stream->write((uint64_t*)&cgen_var_1165, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016771 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016772 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
16773 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016774 if (pSupport)
16775 {
16776 transform_fromhost_VkDescriptorSetLayoutSupport(mImpl->resources(), (VkDescriptorSetLayoutSupport*)(pSupport));
16777 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016778 mImpl->log("finish vkGetDescriptorSetLayoutSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016779}
16780
16781#endif
16782#ifdef VK_KHR_draw_indirect_count
16783void VkEncoder::vkCmdDrawIndirectCountKHR(
16784 VkCommandBuffer commandBuffer,
16785 VkBuffer buffer,
16786 VkDeviceSize offset,
16787 VkBuffer countBuffer,
16788 VkDeviceSize countBufferOffset,
16789 uint32_t maxDrawCount,
16790 uint32_t stride)
16791{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016792 mImpl->log("start vkCmdDrawIndirectCountKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016793 auto stream = mImpl->stream();
16794 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016795 auto resources = mImpl->resources();
16796 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016797 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016798 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016799 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016800 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016801 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016802 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016803 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016804 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016805 local_commandBuffer = commandBuffer;
16806 local_buffer = buffer;
16807 local_offset = offset;
16808 local_countBuffer = countBuffer;
16809 local_countBufferOffset = countBufferOffset;
16810 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016811 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016812 countingStream->rewind();
16813 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016814 uint64_t cgen_var_1166;
16815 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1166, 1);
16816 countingStream->write((uint64_t*)&cgen_var_1166, 1 * 8);
16817 uint64_t cgen_var_1167;
16818 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1167, 1);
16819 countingStream->write((uint64_t*)&cgen_var_1167, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016820 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016821 uint64_t cgen_var_1168;
16822 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1168, 1);
16823 countingStream->write((uint64_t*)&cgen_var_1168, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016824 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16825 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16826 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016827 }
16828 uint32_t packetSize_vkCmdDrawIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16829 countingStream->rewind();
16830 uint32_t opcode_vkCmdDrawIndirectCountKHR = OP_vkCmdDrawIndirectCountKHR;
16831 stream->write(&opcode_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
16832 stream->write(&packetSize_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016833 uint64_t cgen_var_1169;
16834 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1169, 1);
16835 stream->write((uint64_t*)&cgen_var_1169, 1 * 8);
16836 uint64_t cgen_var_1170;
16837 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1170, 1);
16838 stream->write((uint64_t*)&cgen_var_1170, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016839 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016840 uint64_t cgen_var_1171;
16841 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1171, 1);
16842 stream->write((uint64_t*)&cgen_var_1171, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016843 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16844 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16845 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016846 mImpl->log("finish vkCmdDrawIndirectCountKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016847}
16848
16849void VkEncoder::vkCmdDrawIndexedIndirectCountKHR(
16850 VkCommandBuffer commandBuffer,
16851 VkBuffer buffer,
16852 VkDeviceSize offset,
16853 VkBuffer countBuffer,
16854 VkDeviceSize countBufferOffset,
16855 uint32_t maxDrawCount,
16856 uint32_t stride)
16857{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016858 mImpl->log("start vkCmdDrawIndexedIndirectCountKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016859 auto stream = mImpl->stream();
16860 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016861 auto resources = mImpl->resources();
16862 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016863 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016864 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016865 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016866 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016867 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016868 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016869 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016870 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016871 local_commandBuffer = commandBuffer;
16872 local_buffer = buffer;
16873 local_offset = offset;
16874 local_countBuffer = countBuffer;
16875 local_countBufferOffset = countBufferOffset;
16876 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016877 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016878 countingStream->rewind();
16879 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016880 uint64_t cgen_var_1172;
16881 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1172, 1);
16882 countingStream->write((uint64_t*)&cgen_var_1172, 1 * 8);
16883 uint64_t cgen_var_1173;
16884 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1173, 1);
16885 countingStream->write((uint64_t*)&cgen_var_1173, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016886 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016887 uint64_t cgen_var_1174;
16888 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1174, 1);
16889 countingStream->write((uint64_t*)&cgen_var_1174, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016890 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16891 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16892 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016893 }
16894 uint32_t packetSize_vkCmdDrawIndexedIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16895 countingStream->rewind();
16896 uint32_t opcode_vkCmdDrawIndexedIndirectCountKHR = OP_vkCmdDrawIndexedIndirectCountKHR;
16897 stream->write(&opcode_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
16898 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016899 uint64_t cgen_var_1175;
16900 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1175, 1);
16901 stream->write((uint64_t*)&cgen_var_1175, 1 * 8);
16902 uint64_t cgen_var_1176;
16903 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1176, 1);
16904 stream->write((uint64_t*)&cgen_var_1176, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016905 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016906 uint64_t cgen_var_1177;
16907 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1177, 1);
16908 stream->write((uint64_t*)&cgen_var_1177, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016909 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16910 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16911 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016912 mImpl->log("finish vkCmdDrawIndexedIndirectCountKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016913}
16914
16915#endif
16916#ifdef VK_KHR_8bit_storage
16917#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -080016918#ifdef VK_ANDROID_native_buffer
16919VkResult VkEncoder::vkGetSwapchainGrallocUsageANDROID(
16920 VkDevice device,
16921 VkFormat format,
16922 VkImageUsageFlags imageUsage,
16923 int* grallocUsage)
16924{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016925 mImpl->log("start vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -080016926 auto stream = mImpl->stream();
16927 auto countingStream = mImpl->countingStream();
16928 auto resources = mImpl->resources();
16929 auto pool = mImpl->pool();
16930 stream->setHandleMapping(resources->unwrapMapping());
16931 VkDevice local_device;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016932 VkFormat local_format;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016933 VkImageUsageFlags local_imageUsage;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016934 local_device = device;
16935 local_format = format;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016936 local_imageUsage = imageUsage;
16937 countingStream->rewind();
16938 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016939 uint64_t cgen_var_1178;
16940 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1178, 1);
16941 countingStream->write((uint64_t*)&cgen_var_1178, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080016942 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
16943 countingStream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
16944 countingStream->write((int*)grallocUsage, sizeof(int));
16945 }
16946 uint32_t packetSize_vkGetSwapchainGrallocUsageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16947 countingStream->rewind();
16948 uint32_t opcode_vkGetSwapchainGrallocUsageANDROID = OP_vkGetSwapchainGrallocUsageANDROID;
16949 stream->write(&opcode_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
16950 stream->write(&packetSize_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016951 uint64_t cgen_var_1179;
16952 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1179, 1);
16953 stream->write((uint64_t*)&cgen_var_1179, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080016954 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
16955 stream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
16956 stream->write((int*)grallocUsage, sizeof(int));
16957 stream->read((int*)grallocUsage, sizeof(int));
16958 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
16959 stream->read(&vkGetSwapchainGrallocUsageANDROID_VkResult_return, sizeof(VkResult));
16960 countingStream->clearPool();
16961 stream->clearPool();
16962 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016963 mImpl->log("finish vkGetSwapchainGrallocUsageANDROID");;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016964 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
16965}
16966
16967VkResult VkEncoder::vkAcquireImageANDROID(
16968 VkDevice device,
16969 VkImage image,
16970 int nativeFenceFd,
16971 VkSemaphore semaphore,
16972 VkFence fence)
16973{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016974 mImpl->log("start vkAcquireImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -080016975 auto stream = mImpl->stream();
16976 auto countingStream = mImpl->countingStream();
16977 auto resources = mImpl->resources();
16978 auto pool = mImpl->pool();
16979 stream->setHandleMapping(resources->unwrapMapping());
16980 VkDevice local_device;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016981 VkImage local_image;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016982 int local_nativeFenceFd;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016983 VkSemaphore local_semaphore;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016984 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016985 local_device = device;
16986 local_image = image;
16987 local_nativeFenceFd = nativeFenceFd;
16988 local_semaphore = semaphore;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016989 local_fence = fence;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -080016990 mImpl->resources()->unwrap_vkAcquireImageANDROID_nativeFenceFd(nativeFenceFd, &local_nativeFenceFd);
Lingfeng Yang808a6312018-11-13 21:06:15 -080016991 countingStream->rewind();
16992 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016993 uint64_t cgen_var_1180;
16994 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1180, 1);
16995 countingStream->write((uint64_t*)&cgen_var_1180, 1 * 8);
16996 uint64_t cgen_var_1181;
16997 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1181, 1);
16998 countingStream->write((uint64_t*)&cgen_var_1181, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080016999 countingStream->write((int*)&local_nativeFenceFd, sizeof(int));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017000 uint64_t cgen_var_1182;
17001 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1182, 1);
17002 countingStream->write((uint64_t*)&cgen_var_1182, 1 * 8);
17003 uint64_t cgen_var_1183;
17004 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1183, 1);
17005 countingStream->write((uint64_t*)&cgen_var_1183, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017006 }
17007 uint32_t packetSize_vkAcquireImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17008 countingStream->rewind();
17009 uint32_t opcode_vkAcquireImageANDROID = OP_vkAcquireImageANDROID;
17010 stream->write(&opcode_vkAcquireImageANDROID, sizeof(uint32_t));
17011 stream->write(&packetSize_vkAcquireImageANDROID, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017012 uint64_t cgen_var_1184;
17013 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1184, 1);
17014 stream->write((uint64_t*)&cgen_var_1184, 1 * 8);
17015 uint64_t cgen_var_1185;
17016 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1185, 1);
17017 stream->write((uint64_t*)&cgen_var_1185, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017018 stream->write((int*)&local_nativeFenceFd, sizeof(int));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017019 uint64_t cgen_var_1186;
17020 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1186, 1);
17021 stream->write((uint64_t*)&cgen_var_1186, 1 * 8);
17022 uint64_t cgen_var_1187;
17023 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1187, 1);
17024 stream->write((uint64_t*)&cgen_var_1187, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017025 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
17026 stream->read(&vkAcquireImageANDROID_VkResult_return, sizeof(VkResult));
17027 countingStream->clearPool();
17028 stream->clearPool();
17029 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017030 mImpl->log("finish vkAcquireImageANDROID");;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017031 return vkAcquireImageANDROID_VkResult_return;
17032}
17033
17034VkResult VkEncoder::vkQueueSignalReleaseImageANDROID(
17035 VkQueue queue,
17036 uint32_t waitSemaphoreCount,
17037 const VkSemaphore* pWaitSemaphores,
17038 VkImage image,
17039 int* pNativeFenceFd)
17040{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017041 mImpl->log("start vkQueueSignalReleaseImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -080017042 auto stream = mImpl->stream();
17043 auto countingStream = mImpl->countingStream();
17044 auto resources = mImpl->resources();
17045 auto pool = mImpl->pool();
17046 stream->setHandleMapping(resources->unwrapMapping());
17047 VkQueue local_queue;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017048 uint32_t local_waitSemaphoreCount;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017049 VkSemaphore* local_pWaitSemaphores;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017050 VkImage local_image;
17051 local_queue = queue;
17052 local_waitSemaphoreCount = waitSemaphoreCount;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017053 local_pWaitSemaphores = nullptr;
17054 if (pWaitSemaphores)
17055 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017056 local_pWaitSemaphores = (VkSemaphore*)pool->dupArray(pWaitSemaphores, ((waitSemaphoreCount)) * sizeof(const VkSemaphore));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017057 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017058 local_image = image;
17059 countingStream->rewind();
17060 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017061 uint64_t cgen_var_1188;
17062 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1188, 1);
17063 countingStream->write((uint64_t*)&cgen_var_1188, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017064 countingStream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017065 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017066 uint64_t cgen_var_1189 = (uint64_t)(uintptr_t)local_pWaitSemaphores;
17067 countingStream->putBe64(cgen_var_1189);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017068 if (local_pWaitSemaphores)
17069 {
17070 if (((waitSemaphoreCount)))
17071 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017072 uint64_t* cgen_var_1190;
17073 countingStream->alloc((void**)&cgen_var_1190, ((waitSemaphoreCount)) * 8);
17074 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, cgen_var_1190, ((waitSemaphoreCount)));
17075 countingStream->write((uint64_t*)cgen_var_1190, ((waitSemaphoreCount)) * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017076 }
17077 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017078 uint64_t cgen_var_1191;
17079 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1191, 1);
17080 countingStream->write((uint64_t*)&cgen_var_1191, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017081 countingStream->write((int*)pNativeFenceFd, sizeof(int));
17082 }
17083 uint32_t packetSize_vkQueueSignalReleaseImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17084 countingStream->rewind();
17085 uint32_t opcode_vkQueueSignalReleaseImageANDROID = OP_vkQueueSignalReleaseImageANDROID;
17086 stream->write(&opcode_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
17087 stream->write(&packetSize_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017088 uint64_t cgen_var_1192;
17089 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1192, 1);
17090 stream->write((uint64_t*)&cgen_var_1192, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017091 stream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
17092 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017093 uint64_t cgen_var_1193 = (uint64_t)(uintptr_t)local_pWaitSemaphores;
17094 stream->putBe64(cgen_var_1193);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017095 if (local_pWaitSemaphores)
17096 {
17097 if (((waitSemaphoreCount)))
17098 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017099 uint64_t* cgen_var_1194;
17100 stream->alloc((void**)&cgen_var_1194, ((waitSemaphoreCount)) * 8);
17101 stream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, cgen_var_1194, ((waitSemaphoreCount)));
17102 stream->write((uint64_t*)cgen_var_1194, ((waitSemaphoreCount)) * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017103 }
17104 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017105 uint64_t cgen_var_1195;
17106 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1195, 1);
17107 stream->write((uint64_t*)&cgen_var_1195, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017108 stream->write((int*)pNativeFenceFd, sizeof(int));
17109 stream->read((int*)pNativeFenceFd, sizeof(int));
17110 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
17111 stream->read(&vkQueueSignalReleaseImageANDROID_VkResult_return, sizeof(VkResult));
17112 countingStream->clearPool();
17113 stream->clearPool();
17114 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017115 mImpl->log("finish vkQueueSignalReleaseImageANDROID");;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017116 return vkQueueSignalReleaseImageANDROID_VkResult_return;
17117}
17118
17119#endif
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017120#ifdef VK_EXT_debug_report
17121VkResult VkEncoder::vkCreateDebugReportCallbackEXT(
17122 VkInstance instance,
17123 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
17124 const VkAllocationCallbacks* pAllocator,
17125 VkDebugReportCallbackEXT* pCallback)
17126{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017127 mImpl->log("start vkCreateDebugReportCallbackEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017128 auto stream = mImpl->stream();
17129 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017130 auto resources = mImpl->resources();
17131 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017132 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017133 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017134 VkDebugReportCallbackCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017135 VkAllocationCallbacks* local_pAllocator;
17136 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017137 local_pCreateInfo = nullptr;
17138 if (pCreateInfo)
17139 {
17140 local_pCreateInfo = (VkDebugReportCallbackCreateInfoEXT*)pool->alloc(sizeof(const VkDebugReportCallbackCreateInfoEXT));
17141 deepcopy_VkDebugReportCallbackCreateInfoEXT(pool, pCreateInfo, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
17142 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017143 local_pAllocator = nullptr;
17144 if (pAllocator)
17145 {
17146 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17147 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17148 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017149 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017150 if (local_pCreateInfo)
17151 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017152 transform_tohost_VkDebugReportCallbackCreateInfoEXT(mImpl->resources(), (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017153 }
17154 if (local_pAllocator)
17155 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017156 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017157 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017158 countingStream->rewind();
17159 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017160 uint64_t cgen_var_1196;
17161 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1196, 1);
17162 countingStream->write((uint64_t*)&cgen_var_1196, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017163 marshal_VkDebugReportCallbackCreateInfoEXT(countingStream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017164 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017165 uint64_t cgen_var_1197 = (uint64_t)(uintptr_t)local_pAllocator;
17166 countingStream->putBe64(cgen_var_1197);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017167 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017168 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017169 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017170 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017171 uint64_t cgen_var_1198;
17172 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1198, 1);
17173 countingStream->write((uint64_t*)&cgen_var_1198, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017174 }
17175 uint32_t packetSize_vkCreateDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17176 countingStream->rewind();
17177 uint32_t opcode_vkCreateDebugReportCallbackEXT = OP_vkCreateDebugReportCallbackEXT;
17178 stream->write(&opcode_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
17179 stream->write(&packetSize_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017180 uint64_t cgen_var_1199;
17181 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1199, 1);
17182 stream->write((uint64_t*)&cgen_var_1199, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017183 marshal_VkDebugReportCallbackCreateInfoEXT(stream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017184 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017185 uint64_t cgen_var_1200 = (uint64_t)(uintptr_t)local_pAllocator;
17186 stream->putBe64(cgen_var_1200);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017187 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017188 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017189 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017190 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017191 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017192 uint64_t cgen_var_1201;
17193 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1201, 1);
17194 stream->write((uint64_t*)&cgen_var_1201, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017195 stream->setHandleMapping(resources->unwrapMapping());
17196 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017197 uint64_t cgen_var_1202;
17198 stream->read((uint64_t*)&cgen_var_1202, 8);
17199 stream->handleMapping()->mapHandles_u64_VkDebugReportCallbackEXT(&cgen_var_1202, (VkDebugReportCallbackEXT*)pCallback, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017200 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017201 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
17202 stream->read(&vkCreateDebugReportCallbackEXT_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 Yang858ebe22019-01-22 15:53:52 -080017206 mImpl->log("finish vkCreateDebugReportCallbackEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017207 return vkCreateDebugReportCallbackEXT_VkResult_return;
17208}
17209
17210void VkEncoder::vkDestroyDebugReportCallbackEXT(
17211 VkInstance instance,
17212 VkDebugReportCallbackEXT callback,
17213 const VkAllocationCallbacks* pAllocator)
17214{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017215 mImpl->log("start vkDestroyDebugReportCallbackEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017216 auto stream = mImpl->stream();
17217 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017218 auto resources = mImpl->resources();
17219 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017220 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017221 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017222 VkDebugReportCallbackEXT local_callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017223 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017224 local_instance = instance;
17225 local_callback = callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017226 local_pAllocator = nullptr;
17227 if (pAllocator)
17228 {
17229 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17230 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17231 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017232 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017233 if (local_pAllocator)
17234 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017235 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017236 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017237 countingStream->rewind();
17238 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017239 uint64_t cgen_var_1203;
17240 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1203, 1);
17241 countingStream->write((uint64_t*)&cgen_var_1203, 1 * 8);
17242 uint64_t cgen_var_1204;
17243 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1204, 1);
17244 countingStream->write((uint64_t*)&cgen_var_1204, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017245 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017246 uint64_t cgen_var_1205 = (uint64_t)(uintptr_t)local_pAllocator;
17247 countingStream->putBe64(cgen_var_1205);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017248 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017249 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017250 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017251 }
17252 }
17253 uint32_t packetSize_vkDestroyDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17254 countingStream->rewind();
17255 uint32_t opcode_vkDestroyDebugReportCallbackEXT = OP_vkDestroyDebugReportCallbackEXT;
17256 stream->write(&opcode_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
17257 stream->write(&packetSize_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017258 uint64_t cgen_var_1206;
17259 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1206, 1);
17260 stream->write((uint64_t*)&cgen_var_1206, 1 * 8);
17261 uint64_t cgen_var_1207;
17262 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1207, 1);
17263 stream->write((uint64_t*)&cgen_var_1207, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017264 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017265 uint64_t cgen_var_1208 = (uint64_t)(uintptr_t)local_pAllocator;
17266 stream->putBe64(cgen_var_1208);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017267 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017268 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017269 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017270 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017271 resources->destroyMapping()->mapHandles_VkDebugReportCallbackEXT((VkDebugReportCallbackEXT*)&callback);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017272 mImpl->log("finish vkDestroyDebugReportCallbackEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017273}
17274
17275void VkEncoder::vkDebugReportMessageEXT(
17276 VkInstance instance,
17277 VkDebugReportFlagsEXT flags,
17278 VkDebugReportObjectTypeEXT objectType,
17279 uint64_t object,
17280 size_t location,
17281 int32_t messageCode,
17282 const char* pLayerPrefix,
17283 const char* pMessage)
17284{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017285 mImpl->log("start vkDebugReportMessageEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017286 auto stream = mImpl->stream();
17287 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017288 auto resources = mImpl->resources();
17289 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017290 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017291 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017292 VkDebugReportFlagsEXT local_flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017293 VkDebugReportObjectTypeEXT local_objectType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017294 uint64_t local_object;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017295 size_t local_location;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017296 int32_t local_messageCode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017297 char* local_pLayerPrefix;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017298 char* local_pMessage;
17299 local_instance = instance;
17300 local_flags = flags;
17301 local_objectType = objectType;
17302 local_object = object;
17303 local_location = location;
17304 local_messageCode = messageCode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017305 local_pLayerPrefix = nullptr;
17306 if (pLayerPrefix)
17307 {
17308 local_pLayerPrefix = pool->strDup(pLayerPrefix);
17309 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017310 local_pMessage = nullptr;
17311 if (pMessage)
17312 {
17313 local_pMessage = pool->strDup(pMessage);
17314 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017315 countingStream->rewind();
17316 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017317 uint64_t cgen_var_1209;
17318 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1209, 1);
17319 countingStream->write((uint64_t*)&cgen_var_1209, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017320 countingStream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
17321 countingStream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
17322 countingStream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017323 uint64_t cgen_var_1210 = (uint64_t)local_location;
17324 countingStream->putBe64(cgen_var_1210);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017325 countingStream->write((int32_t*)&local_messageCode, sizeof(int32_t));
17326 countingStream->putString(local_pLayerPrefix);
17327 countingStream->putString(local_pMessage);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017328 }
17329 uint32_t packetSize_vkDebugReportMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17330 countingStream->rewind();
17331 uint32_t opcode_vkDebugReportMessageEXT = OP_vkDebugReportMessageEXT;
17332 stream->write(&opcode_vkDebugReportMessageEXT, sizeof(uint32_t));
17333 stream->write(&packetSize_vkDebugReportMessageEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017334 uint64_t cgen_var_1211;
17335 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1211, 1);
17336 stream->write((uint64_t*)&cgen_var_1211, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017337 stream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
17338 stream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
17339 stream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017340 uint64_t cgen_var_1212 = (uint64_t)local_location;
17341 stream->putBe64(cgen_var_1212);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017342 stream->write((int32_t*)&local_messageCode, sizeof(int32_t));
17343 stream->putString(local_pLayerPrefix);
17344 stream->putString(local_pMessage);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017345 mImpl->log("finish vkDebugReportMessageEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017346}
17347
17348#endif
17349#ifdef VK_NV_glsl_shader
17350#endif
17351#ifdef VK_EXT_depth_range_unrestricted
17352#endif
17353#ifdef VK_IMG_filter_cubic
17354#endif
17355#ifdef VK_AMD_rasterization_order
17356#endif
17357#ifdef VK_AMD_shader_trinary_minmax
17358#endif
17359#ifdef VK_AMD_shader_explicit_vertex_parameter
17360#endif
17361#ifdef VK_EXT_debug_marker
17362VkResult VkEncoder::vkDebugMarkerSetObjectTagEXT(
17363 VkDevice device,
17364 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
17365{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017366 mImpl->log("start vkDebugMarkerSetObjectTagEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017367 auto stream = mImpl->stream();
17368 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017369 auto resources = mImpl->resources();
17370 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017371 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017372 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017373 VkDebugMarkerObjectTagInfoEXT* local_pTagInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017374 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017375 local_pTagInfo = nullptr;
17376 if (pTagInfo)
17377 {
17378 local_pTagInfo = (VkDebugMarkerObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectTagInfoEXT));
17379 deepcopy_VkDebugMarkerObjectTagInfoEXT(pool, pTagInfo, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
17380 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017381 if (local_pTagInfo)
17382 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017383 transform_tohost_VkDebugMarkerObjectTagInfoEXT(mImpl->resources(), (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017384 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017385 countingStream->rewind();
17386 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017387 uint64_t cgen_var_1213;
17388 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1213, 1);
17389 countingStream->write((uint64_t*)&cgen_var_1213, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017390 marshal_VkDebugMarkerObjectTagInfoEXT(countingStream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017391 }
17392 uint32_t packetSize_vkDebugMarkerSetObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17393 countingStream->rewind();
17394 uint32_t opcode_vkDebugMarkerSetObjectTagEXT = OP_vkDebugMarkerSetObjectTagEXT;
17395 stream->write(&opcode_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
17396 stream->write(&packetSize_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017397 uint64_t cgen_var_1214;
17398 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1214, 1);
17399 stream->write((uint64_t*)&cgen_var_1214, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017400 marshal_VkDebugMarkerObjectTagInfoEXT(stream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017401 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
17402 stream->read(&vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017403 countingStream->clearPool();
17404 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017405 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017406 mImpl->log("finish vkDebugMarkerSetObjectTagEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017407 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
17408}
17409
17410VkResult VkEncoder::vkDebugMarkerSetObjectNameEXT(
17411 VkDevice device,
17412 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
17413{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017414 mImpl->log("start vkDebugMarkerSetObjectNameEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017415 auto stream = mImpl->stream();
17416 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017417 auto resources = mImpl->resources();
17418 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017419 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017420 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017421 VkDebugMarkerObjectNameInfoEXT* local_pNameInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017422 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017423 local_pNameInfo = nullptr;
17424 if (pNameInfo)
17425 {
17426 local_pNameInfo = (VkDebugMarkerObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectNameInfoEXT));
17427 deepcopy_VkDebugMarkerObjectNameInfoEXT(pool, pNameInfo, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
17428 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017429 if (local_pNameInfo)
17430 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017431 transform_tohost_VkDebugMarkerObjectNameInfoEXT(mImpl->resources(), (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017432 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017433 countingStream->rewind();
17434 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017435 uint64_t cgen_var_1215;
17436 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1215, 1);
17437 countingStream->write((uint64_t*)&cgen_var_1215, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017438 marshal_VkDebugMarkerObjectNameInfoEXT(countingStream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017439 }
17440 uint32_t packetSize_vkDebugMarkerSetObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17441 countingStream->rewind();
17442 uint32_t opcode_vkDebugMarkerSetObjectNameEXT = OP_vkDebugMarkerSetObjectNameEXT;
17443 stream->write(&opcode_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
17444 stream->write(&packetSize_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017445 uint64_t cgen_var_1216;
17446 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1216, 1);
17447 stream->write((uint64_t*)&cgen_var_1216, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017448 marshal_VkDebugMarkerObjectNameInfoEXT(stream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017449 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
17450 stream->read(&vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017451 countingStream->clearPool();
17452 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017453 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017454 mImpl->log("finish vkDebugMarkerSetObjectNameEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017455 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
17456}
17457
17458void VkEncoder::vkCmdDebugMarkerBeginEXT(
17459 VkCommandBuffer commandBuffer,
17460 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
17461{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017462 mImpl->log("start vkCmdDebugMarkerBeginEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017463 auto stream = mImpl->stream();
17464 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017465 auto resources = mImpl->resources();
17466 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017467 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017468 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017469 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017470 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017471 local_pMarkerInfo = nullptr;
17472 if (pMarkerInfo)
17473 {
17474 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
17475 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
17476 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017477 if (local_pMarkerInfo)
17478 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017479 transform_tohost_VkDebugMarkerMarkerInfoEXT(mImpl->resources(), (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017480 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017481 countingStream->rewind();
17482 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017483 uint64_t cgen_var_1217;
17484 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1217, 1);
17485 countingStream->write((uint64_t*)&cgen_var_1217, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017486 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017487 }
17488 uint32_t packetSize_vkCmdDebugMarkerBeginEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17489 countingStream->rewind();
17490 uint32_t opcode_vkCmdDebugMarkerBeginEXT = OP_vkCmdDebugMarkerBeginEXT;
17491 stream->write(&opcode_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
17492 stream->write(&packetSize_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017493 uint64_t cgen_var_1218;
17494 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1218, 1);
17495 stream->write((uint64_t*)&cgen_var_1218, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017496 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017497 mImpl->log("finish vkCmdDebugMarkerBeginEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017498}
17499
17500void VkEncoder::vkCmdDebugMarkerEndEXT(
17501 VkCommandBuffer commandBuffer)
17502{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017503 mImpl->log("start vkCmdDebugMarkerEndEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017504 auto stream = mImpl->stream();
17505 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017506 auto resources = mImpl->resources();
17507 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017508 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017509 VkCommandBuffer local_commandBuffer;
17510 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017511 countingStream->rewind();
17512 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017513 uint64_t cgen_var_1219;
17514 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1219, 1);
17515 countingStream->write((uint64_t*)&cgen_var_1219, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017516 }
17517 uint32_t packetSize_vkCmdDebugMarkerEndEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17518 countingStream->rewind();
17519 uint32_t opcode_vkCmdDebugMarkerEndEXT = OP_vkCmdDebugMarkerEndEXT;
17520 stream->write(&opcode_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
17521 stream->write(&packetSize_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017522 uint64_t cgen_var_1220;
17523 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1220, 1);
17524 stream->write((uint64_t*)&cgen_var_1220, 1 * 8);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017525 mImpl->log("finish vkCmdDebugMarkerEndEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017526}
17527
17528void VkEncoder::vkCmdDebugMarkerInsertEXT(
17529 VkCommandBuffer commandBuffer,
17530 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
17531{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017532 mImpl->log("start vkCmdDebugMarkerInsertEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017533 auto stream = mImpl->stream();
17534 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017535 auto resources = mImpl->resources();
17536 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017537 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017538 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017539 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017540 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017541 local_pMarkerInfo = nullptr;
17542 if (pMarkerInfo)
17543 {
17544 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
17545 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
17546 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017547 if (local_pMarkerInfo)
17548 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017549 transform_tohost_VkDebugMarkerMarkerInfoEXT(mImpl->resources(), (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017550 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017551 countingStream->rewind();
17552 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017553 uint64_t cgen_var_1221;
17554 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1221, 1);
17555 countingStream->write((uint64_t*)&cgen_var_1221, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017556 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017557 }
17558 uint32_t packetSize_vkCmdDebugMarkerInsertEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17559 countingStream->rewind();
17560 uint32_t opcode_vkCmdDebugMarkerInsertEXT = OP_vkCmdDebugMarkerInsertEXT;
17561 stream->write(&opcode_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
17562 stream->write(&packetSize_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017563 uint64_t cgen_var_1222;
17564 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1222, 1);
17565 stream->write((uint64_t*)&cgen_var_1222, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017566 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017567 mImpl->log("finish vkCmdDebugMarkerInsertEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017568}
17569
17570#endif
17571#ifdef VK_AMD_gcn_shader
17572#endif
17573#ifdef VK_NV_dedicated_allocation
17574#endif
17575#ifdef VK_AMD_draw_indirect_count
17576void VkEncoder::vkCmdDrawIndirectCountAMD(
17577 VkCommandBuffer commandBuffer,
17578 VkBuffer buffer,
17579 VkDeviceSize offset,
17580 VkBuffer countBuffer,
17581 VkDeviceSize countBufferOffset,
17582 uint32_t maxDrawCount,
17583 uint32_t stride)
17584{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017585 mImpl->log("start vkCmdDrawIndirectCountAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017586 auto stream = mImpl->stream();
17587 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017588 auto resources = mImpl->resources();
17589 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017590 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017591 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017592 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017593 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017594 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017595 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017596 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017597 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017598 local_commandBuffer = commandBuffer;
17599 local_buffer = buffer;
17600 local_offset = offset;
17601 local_countBuffer = countBuffer;
17602 local_countBufferOffset = countBufferOffset;
17603 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017604 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017605 countingStream->rewind();
17606 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017607 uint64_t cgen_var_1223;
17608 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1223, 1);
17609 countingStream->write((uint64_t*)&cgen_var_1223, 1 * 8);
17610 uint64_t cgen_var_1224;
17611 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1224, 1);
17612 countingStream->write((uint64_t*)&cgen_var_1224, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017613 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017614 uint64_t cgen_var_1225;
17615 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1225, 1);
17616 countingStream->write((uint64_t*)&cgen_var_1225, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017617 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17618 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17619 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017620 }
17621 uint32_t packetSize_vkCmdDrawIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17622 countingStream->rewind();
17623 uint32_t opcode_vkCmdDrawIndirectCountAMD = OP_vkCmdDrawIndirectCountAMD;
17624 stream->write(&opcode_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
17625 stream->write(&packetSize_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017626 uint64_t cgen_var_1226;
17627 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1226, 1);
17628 stream->write((uint64_t*)&cgen_var_1226, 1 * 8);
17629 uint64_t cgen_var_1227;
17630 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1227, 1);
17631 stream->write((uint64_t*)&cgen_var_1227, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017632 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017633 uint64_t cgen_var_1228;
17634 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1228, 1);
17635 stream->write((uint64_t*)&cgen_var_1228, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017636 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17637 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17638 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017639 mImpl->log("finish vkCmdDrawIndirectCountAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017640}
17641
17642void VkEncoder::vkCmdDrawIndexedIndirectCountAMD(
17643 VkCommandBuffer commandBuffer,
17644 VkBuffer buffer,
17645 VkDeviceSize offset,
17646 VkBuffer countBuffer,
17647 VkDeviceSize countBufferOffset,
17648 uint32_t maxDrawCount,
17649 uint32_t stride)
17650{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017651 mImpl->log("start vkCmdDrawIndexedIndirectCountAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017652 auto stream = mImpl->stream();
17653 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017654 auto resources = mImpl->resources();
17655 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017656 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017657 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017658 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017659 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017660 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017661 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017662 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017663 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017664 local_commandBuffer = commandBuffer;
17665 local_buffer = buffer;
17666 local_offset = offset;
17667 local_countBuffer = countBuffer;
17668 local_countBufferOffset = countBufferOffset;
17669 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017670 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017671 countingStream->rewind();
17672 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017673 uint64_t cgen_var_1229;
17674 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1229, 1);
17675 countingStream->write((uint64_t*)&cgen_var_1229, 1 * 8);
17676 uint64_t cgen_var_1230;
17677 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1230, 1);
17678 countingStream->write((uint64_t*)&cgen_var_1230, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017679 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017680 uint64_t cgen_var_1231;
17681 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1231, 1);
17682 countingStream->write((uint64_t*)&cgen_var_1231, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017683 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17684 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17685 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017686 }
17687 uint32_t packetSize_vkCmdDrawIndexedIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17688 countingStream->rewind();
17689 uint32_t opcode_vkCmdDrawIndexedIndirectCountAMD = OP_vkCmdDrawIndexedIndirectCountAMD;
17690 stream->write(&opcode_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
17691 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017692 uint64_t cgen_var_1232;
17693 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1232, 1);
17694 stream->write((uint64_t*)&cgen_var_1232, 1 * 8);
17695 uint64_t cgen_var_1233;
17696 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1233, 1);
17697 stream->write((uint64_t*)&cgen_var_1233, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017698 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017699 uint64_t cgen_var_1234;
17700 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1234, 1);
17701 stream->write((uint64_t*)&cgen_var_1234, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017702 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17703 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17704 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017705 mImpl->log("finish vkCmdDrawIndexedIndirectCountAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017706}
17707
17708#endif
17709#ifdef VK_AMD_negative_viewport_height
17710#endif
17711#ifdef VK_AMD_gpu_shader_half_float
17712#endif
17713#ifdef VK_AMD_shader_ballot
17714#endif
17715#ifdef VK_AMD_texture_gather_bias_lod
17716#endif
17717#ifdef VK_AMD_shader_info
17718VkResult VkEncoder::vkGetShaderInfoAMD(
17719 VkDevice device,
17720 VkPipeline pipeline,
17721 VkShaderStageFlagBits shaderStage,
17722 VkShaderInfoTypeAMD infoType,
17723 size_t* pInfoSize,
17724 void* pInfo)
17725{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017726 mImpl->log("start vkGetShaderInfoAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017727 auto stream = mImpl->stream();
17728 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017729 auto resources = mImpl->resources();
17730 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017731 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017732 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017733 VkPipeline local_pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017734 VkShaderStageFlagBits local_shaderStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017735 VkShaderInfoTypeAMD local_infoType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017736 local_device = device;
17737 local_pipeline = pipeline;
17738 local_shaderStage = shaderStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017739 local_infoType = infoType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017740 countingStream->rewind();
17741 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017742 uint64_t cgen_var_1235;
17743 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1235, 1);
17744 countingStream->write((uint64_t*)&cgen_var_1235, 1 * 8);
17745 uint64_t cgen_var_1236;
17746 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1236, 1);
17747 countingStream->write((uint64_t*)&cgen_var_1236, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017748 countingStream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
17749 countingStream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017750 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017751 uint64_t cgen_var_1237 = (uint64_t)(uintptr_t)pInfoSize;
17752 countingStream->putBe64(cgen_var_1237);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017753 if (pInfoSize)
17754 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017755 uint64_t cgen_var_1238 = (uint64_t)(*pInfoSize);
17756 countingStream->putBe64(cgen_var_1238);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017757 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017758 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017759 uint64_t cgen_var_1239 = (uint64_t)(uintptr_t)pInfo;
17760 countingStream->putBe64(cgen_var_1239);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017761 if (pInfo)
17762 {
17763 countingStream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
17764 }
17765 }
17766 uint32_t packetSize_vkGetShaderInfoAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17767 countingStream->rewind();
17768 uint32_t opcode_vkGetShaderInfoAMD = OP_vkGetShaderInfoAMD;
17769 stream->write(&opcode_vkGetShaderInfoAMD, sizeof(uint32_t));
17770 stream->write(&packetSize_vkGetShaderInfoAMD, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017771 uint64_t cgen_var_1240;
17772 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1240, 1);
17773 stream->write((uint64_t*)&cgen_var_1240, 1 * 8);
17774 uint64_t cgen_var_1241;
17775 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1241, 1);
17776 stream->write((uint64_t*)&cgen_var_1241, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017777 stream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
17778 stream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017779 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017780 uint64_t cgen_var_1242 = (uint64_t)(uintptr_t)pInfoSize;
17781 stream->putBe64(cgen_var_1242);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017782 if (pInfoSize)
17783 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017784 uint64_t cgen_var_1243 = (uint64_t)(*pInfoSize);
17785 stream->putBe64(cgen_var_1243);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017786 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017787 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017788 uint64_t cgen_var_1244 = (uint64_t)(uintptr_t)pInfo;
17789 stream->putBe64(cgen_var_1244);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017790 if (pInfo)
17791 {
17792 stream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
17793 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017794 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017795 size_t* check_pInfoSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017796 check_pInfoSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017797 if (pInfoSize)
17798 {
17799 if (!(check_pInfoSize))
17800 {
17801 fprintf(stderr, "fatal: pInfoSize inconsistent between guest and host\n");
17802 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017803 (*pInfoSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017804 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017805 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017806 void* check_pInfo;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017807 check_pInfo = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017808 if (pInfo)
17809 {
17810 if (!(check_pInfo))
17811 {
17812 fprintf(stderr, "fatal: pInfo inconsistent between guest and host\n");
17813 }
17814 stream->read((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
17815 }
17816 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
17817 stream->read(&vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017818 countingStream->clearPool();
17819 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017820 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017821 mImpl->log("finish vkGetShaderInfoAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017822 return vkGetShaderInfoAMD_VkResult_return;
17823}
17824
17825#endif
17826#ifdef VK_AMD_shader_image_load_store_lod
17827#endif
17828#ifdef VK_IMG_format_pvrtc
17829#endif
17830#ifdef VK_NV_external_memory_capabilities
17831VkResult VkEncoder::vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
17832 VkPhysicalDevice physicalDevice,
17833 VkFormat format,
17834 VkImageType type,
17835 VkImageTiling tiling,
17836 VkImageUsageFlags usage,
17837 VkImageCreateFlags flags,
17838 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
17839 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
17840{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017841 mImpl->log("start vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017842 auto stream = mImpl->stream();
17843 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017844 auto resources = mImpl->resources();
17845 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017846 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017847 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017848 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017849 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017850 VkImageTiling local_tiling;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017851 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017852 VkImageCreateFlags local_flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017853 VkExternalMemoryHandleTypeFlagsNV local_externalHandleType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017854 local_physicalDevice = physicalDevice;
17855 local_format = format;
17856 local_type = type;
17857 local_tiling = tiling;
17858 local_usage = usage;
17859 local_flags = flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017860 local_externalHandleType = externalHandleType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017861 countingStream->rewind();
17862 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017863 uint64_t cgen_var_1248;
17864 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1248, 1);
17865 countingStream->write((uint64_t*)&cgen_var_1248, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017866 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
17867 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
17868 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
17869 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
17870 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
17871 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017872 marshal_VkExternalImageFormatPropertiesNV(countingStream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
17873 }
17874 uint32_t packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17875 countingStream->rewind();
17876 uint32_t opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
17877 stream->write(&opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
17878 stream->write(&packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017879 uint64_t cgen_var_1249;
17880 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1249, 1);
17881 stream->write((uint64_t*)&cgen_var_1249, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017882 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
17883 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
17884 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
17885 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
17886 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
17887 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017888 marshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
17889 unmarshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080017890 if (pExternalImageFormatProperties)
17891 {
17892 transform_fromhost_VkExternalImageFormatPropertiesNV(mImpl->resources(), (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
17893 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017894 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
17895 stream->read(&vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017896 countingStream->clearPool();
17897 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017898 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017899 mImpl->log("finish vkGetPhysicalDeviceExternalImageFormatPropertiesNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017900 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
17901}
17902
17903#endif
17904#ifdef VK_NV_external_memory
17905#endif
17906#ifdef VK_NV_external_memory_win32
17907VkResult VkEncoder::vkGetMemoryWin32HandleNV(
17908 VkDevice device,
17909 VkDeviceMemory memory,
17910 VkExternalMemoryHandleTypeFlagsNV handleType,
17911 HANDLE* pHandle)
17912{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017913 mImpl->log("start vkGetMemoryWin32HandleNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017914 auto stream = mImpl->stream();
17915 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017916 auto resources = mImpl->resources();
17917 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017918 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017919 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017920 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017921 VkExternalMemoryHandleTypeFlagsNV local_handleType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017922 local_device = device;
17923 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017924 local_handleType = handleType;
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -080017925 mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017926 countingStream->rewind();
17927 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017928 uint64_t cgen_var_1250;
17929 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1250, 1);
17930 countingStream->write((uint64_t*)&cgen_var_1250, 1 * 8);
17931 uint64_t cgen_var_1251;
17932 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1251, 1);
17933 countingStream->write((uint64_t*)&cgen_var_1251, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017934 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017935 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
17936 }
17937 uint32_t packetSize_vkGetMemoryWin32HandleNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17938 countingStream->rewind();
17939 uint32_t opcode_vkGetMemoryWin32HandleNV = OP_vkGetMemoryWin32HandleNV;
17940 stream->write(&opcode_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
17941 stream->write(&packetSize_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017942 uint64_t cgen_var_1252;
17943 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1252, 1);
17944 stream->write((uint64_t*)&cgen_var_1252, 1 * 8);
17945 uint64_t cgen_var_1253;
17946 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1253, 1);
17947 stream->write((uint64_t*)&cgen_var_1253, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017948 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017949 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
17950 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
17951 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
17952 stream->read(&vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017953 countingStream->clearPool();
17954 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017955 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017956 mImpl->log("finish vkGetMemoryWin32HandleNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017957 return vkGetMemoryWin32HandleNV_VkResult_return;
17958}
17959
17960#endif
17961#ifdef VK_NV_win32_keyed_mutex
17962#endif
17963#ifdef VK_EXT_validation_flags
17964#endif
17965#ifdef VK_NN_vi_surface
17966VkResult VkEncoder::vkCreateViSurfaceNN(
17967 VkInstance instance,
17968 const VkViSurfaceCreateInfoNN* pCreateInfo,
17969 const VkAllocationCallbacks* pAllocator,
17970 VkSurfaceKHR* pSurface)
17971{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017972 mImpl->log("start vkCreateViSurfaceNN");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017973 auto stream = mImpl->stream();
17974 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017975 auto resources = mImpl->resources();
17976 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017977 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017978 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017979 VkViSurfaceCreateInfoNN* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017980 VkAllocationCallbacks* local_pAllocator;
17981 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017982 local_pCreateInfo = nullptr;
17983 if (pCreateInfo)
17984 {
17985 local_pCreateInfo = (VkViSurfaceCreateInfoNN*)pool->alloc(sizeof(const VkViSurfaceCreateInfoNN));
17986 deepcopy_VkViSurfaceCreateInfoNN(pool, pCreateInfo, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
17987 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017988 local_pAllocator = nullptr;
17989 if (pAllocator)
17990 {
17991 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17992 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17993 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017994 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017995 if (local_pCreateInfo)
17996 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017997 transform_tohost_VkViSurfaceCreateInfoNN(mImpl->resources(), (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017998 }
17999 if (local_pAllocator)
18000 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018001 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018002 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018003 countingStream->rewind();
18004 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018005 uint64_t cgen_var_1254;
18006 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1254, 1);
18007 countingStream->write((uint64_t*)&cgen_var_1254, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018008 marshal_VkViSurfaceCreateInfoNN(countingStream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018009 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018010 uint64_t cgen_var_1255 = (uint64_t)(uintptr_t)local_pAllocator;
18011 countingStream->putBe64(cgen_var_1255);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018012 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018013 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018014 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018015 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018016 uint64_t cgen_var_1256;
18017 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1256, 1);
18018 countingStream->write((uint64_t*)&cgen_var_1256, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018019 }
18020 uint32_t packetSize_vkCreateViSurfaceNN = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18021 countingStream->rewind();
18022 uint32_t opcode_vkCreateViSurfaceNN = OP_vkCreateViSurfaceNN;
18023 stream->write(&opcode_vkCreateViSurfaceNN, sizeof(uint32_t));
18024 stream->write(&packetSize_vkCreateViSurfaceNN, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018025 uint64_t cgen_var_1257;
18026 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1257, 1);
18027 stream->write((uint64_t*)&cgen_var_1257, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018028 marshal_VkViSurfaceCreateInfoNN(stream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018029 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018030 uint64_t cgen_var_1258 = (uint64_t)(uintptr_t)local_pAllocator;
18031 stream->putBe64(cgen_var_1258);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018032 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018033 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018034 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018035 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018036 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018037 uint64_t cgen_var_1259;
18038 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1259, 1);
18039 stream->write((uint64_t*)&cgen_var_1259, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018040 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018041 uint64_t cgen_var_1260;
18042 stream->read((uint64_t*)&cgen_var_1260, 8);
18043 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1260, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018044 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
18045 stream->read(&vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018046 countingStream->clearPool();
18047 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018048 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018049 mImpl->log("finish vkCreateViSurfaceNN");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018050 return vkCreateViSurfaceNN_VkResult_return;
18051}
18052
18053#endif
18054#ifdef VK_EXT_shader_subgroup_ballot
18055#endif
18056#ifdef VK_EXT_shader_subgroup_vote
18057#endif
18058#ifdef VK_EXT_conditional_rendering
18059void VkEncoder::vkCmdBeginConditionalRenderingEXT(
18060 VkCommandBuffer commandBuffer,
18061 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
18062{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018063 mImpl->log("start vkCmdBeginConditionalRenderingEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018064 auto stream = mImpl->stream();
18065 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018066 auto resources = mImpl->resources();
18067 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018068 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018069 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018070 VkConditionalRenderingBeginInfoEXT* local_pConditionalRenderingBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018071 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018072 local_pConditionalRenderingBegin = nullptr;
18073 if (pConditionalRenderingBegin)
18074 {
18075 local_pConditionalRenderingBegin = (VkConditionalRenderingBeginInfoEXT*)pool->alloc(sizeof(const VkConditionalRenderingBeginInfoEXT));
18076 deepcopy_VkConditionalRenderingBeginInfoEXT(pool, pConditionalRenderingBegin, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
18077 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018078 if (local_pConditionalRenderingBegin)
18079 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018080 transform_tohost_VkConditionalRenderingBeginInfoEXT(mImpl->resources(), (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018081 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018082 countingStream->rewind();
18083 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018084 uint64_t cgen_var_1261;
18085 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1261, 1);
18086 countingStream->write((uint64_t*)&cgen_var_1261, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018087 marshal_VkConditionalRenderingBeginInfoEXT(countingStream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018088 }
18089 uint32_t packetSize_vkCmdBeginConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18090 countingStream->rewind();
18091 uint32_t opcode_vkCmdBeginConditionalRenderingEXT = OP_vkCmdBeginConditionalRenderingEXT;
18092 stream->write(&opcode_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
18093 stream->write(&packetSize_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018094 uint64_t cgen_var_1262;
18095 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1262, 1);
18096 stream->write((uint64_t*)&cgen_var_1262, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018097 marshal_VkConditionalRenderingBeginInfoEXT(stream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018098 mImpl->log("finish vkCmdBeginConditionalRenderingEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018099}
18100
18101void VkEncoder::vkCmdEndConditionalRenderingEXT(
18102 VkCommandBuffer commandBuffer)
18103{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018104 mImpl->log("start vkCmdEndConditionalRenderingEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018105 auto stream = mImpl->stream();
18106 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018107 auto resources = mImpl->resources();
18108 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018109 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018110 VkCommandBuffer local_commandBuffer;
18111 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018112 countingStream->rewind();
18113 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018114 uint64_t cgen_var_1263;
18115 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1263, 1);
18116 countingStream->write((uint64_t*)&cgen_var_1263, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018117 }
18118 uint32_t packetSize_vkCmdEndConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18119 countingStream->rewind();
18120 uint32_t opcode_vkCmdEndConditionalRenderingEXT = OP_vkCmdEndConditionalRenderingEXT;
18121 stream->write(&opcode_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
18122 stream->write(&packetSize_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018123 uint64_t cgen_var_1264;
18124 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1264, 1);
18125 stream->write((uint64_t*)&cgen_var_1264, 1 * 8);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018126 mImpl->log("finish vkCmdEndConditionalRenderingEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018127}
18128
18129#endif
18130#ifdef VK_NVX_device_generated_commands
18131void VkEncoder::vkCmdProcessCommandsNVX(
18132 VkCommandBuffer commandBuffer,
18133 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
18134{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018135 mImpl->log("start vkCmdProcessCommandsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018136 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 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018142 VkCmdProcessCommandsInfoNVX* local_pProcessCommandsInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018143 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018144 local_pProcessCommandsInfo = nullptr;
18145 if (pProcessCommandsInfo)
18146 {
18147 local_pProcessCommandsInfo = (VkCmdProcessCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdProcessCommandsInfoNVX));
18148 deepcopy_VkCmdProcessCommandsInfoNVX(pool, pProcessCommandsInfo, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
18149 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018150 if (local_pProcessCommandsInfo)
18151 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018152 transform_tohost_VkCmdProcessCommandsInfoNVX(mImpl->resources(), (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018153 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018154 countingStream->rewind();
18155 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018156 uint64_t cgen_var_1265;
18157 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1265, 1);
18158 countingStream->write((uint64_t*)&cgen_var_1265, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018159 marshal_VkCmdProcessCommandsInfoNVX(countingStream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018160 }
18161 uint32_t packetSize_vkCmdProcessCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18162 countingStream->rewind();
18163 uint32_t opcode_vkCmdProcessCommandsNVX = OP_vkCmdProcessCommandsNVX;
18164 stream->write(&opcode_vkCmdProcessCommandsNVX, sizeof(uint32_t));
18165 stream->write(&packetSize_vkCmdProcessCommandsNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018166 uint64_t cgen_var_1266;
18167 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1266, 1);
18168 stream->write((uint64_t*)&cgen_var_1266, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018169 marshal_VkCmdProcessCommandsInfoNVX(stream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018170 mImpl->log("finish vkCmdProcessCommandsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018171}
18172
18173void VkEncoder::vkCmdReserveSpaceForCommandsNVX(
18174 VkCommandBuffer commandBuffer,
18175 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
18176{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018177 mImpl->log("start vkCmdReserveSpaceForCommandsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018178 auto stream = mImpl->stream();
18179 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018180 auto resources = mImpl->resources();
18181 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018182 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018183 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018184 VkCmdReserveSpaceForCommandsInfoNVX* local_pReserveSpaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018185 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018186 local_pReserveSpaceInfo = nullptr;
18187 if (pReserveSpaceInfo)
18188 {
18189 local_pReserveSpaceInfo = (VkCmdReserveSpaceForCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdReserveSpaceForCommandsInfoNVX));
18190 deepcopy_VkCmdReserveSpaceForCommandsInfoNVX(pool, pReserveSpaceInfo, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
18191 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018192 if (local_pReserveSpaceInfo)
18193 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018194 transform_tohost_VkCmdReserveSpaceForCommandsInfoNVX(mImpl->resources(), (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018195 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018196 countingStream->rewind();
18197 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018198 uint64_t cgen_var_1267;
18199 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1267, 1);
18200 countingStream->write((uint64_t*)&cgen_var_1267, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018201 marshal_VkCmdReserveSpaceForCommandsInfoNVX(countingStream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018202 }
18203 uint32_t packetSize_vkCmdReserveSpaceForCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18204 countingStream->rewind();
18205 uint32_t opcode_vkCmdReserveSpaceForCommandsNVX = OP_vkCmdReserveSpaceForCommandsNVX;
18206 stream->write(&opcode_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
18207 stream->write(&packetSize_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018208 uint64_t cgen_var_1268;
18209 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1268, 1);
18210 stream->write((uint64_t*)&cgen_var_1268, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018211 marshal_VkCmdReserveSpaceForCommandsInfoNVX(stream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018212 mImpl->log("finish vkCmdReserveSpaceForCommandsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018213}
18214
18215VkResult VkEncoder::vkCreateIndirectCommandsLayoutNVX(
18216 VkDevice device,
18217 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
18218 const VkAllocationCallbacks* pAllocator,
18219 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
18220{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018221 mImpl->log("start vkCreateIndirectCommandsLayoutNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018222 auto stream = mImpl->stream();
18223 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018224 auto resources = mImpl->resources();
18225 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018226 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018227 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018228 VkIndirectCommandsLayoutCreateInfoNVX* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018229 VkAllocationCallbacks* local_pAllocator;
18230 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018231 local_pCreateInfo = nullptr;
18232 if (pCreateInfo)
18233 {
18234 local_pCreateInfo = (VkIndirectCommandsLayoutCreateInfoNVX*)pool->alloc(sizeof(const VkIndirectCommandsLayoutCreateInfoNVX));
18235 deepcopy_VkIndirectCommandsLayoutCreateInfoNVX(pool, pCreateInfo, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
18236 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018237 local_pAllocator = nullptr;
18238 if (pAllocator)
18239 {
18240 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18241 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18242 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018243 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018244 if (local_pCreateInfo)
18245 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018246 transform_tohost_VkIndirectCommandsLayoutCreateInfoNVX(mImpl->resources(), (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018247 }
18248 if (local_pAllocator)
18249 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018250 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018251 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018252 countingStream->rewind();
18253 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018254 uint64_t cgen_var_1269;
18255 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1269, 1);
18256 countingStream->write((uint64_t*)&cgen_var_1269, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018257 marshal_VkIndirectCommandsLayoutCreateInfoNVX(countingStream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018258 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018259 uint64_t cgen_var_1270 = (uint64_t)(uintptr_t)local_pAllocator;
18260 countingStream->putBe64(cgen_var_1270);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018261 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018262 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018263 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018264 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018265 uint64_t cgen_var_1271;
18266 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1271, 1);
18267 countingStream->write((uint64_t*)&cgen_var_1271, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018268 }
18269 uint32_t packetSize_vkCreateIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18270 countingStream->rewind();
18271 uint32_t opcode_vkCreateIndirectCommandsLayoutNVX = OP_vkCreateIndirectCommandsLayoutNVX;
18272 stream->write(&opcode_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
18273 stream->write(&packetSize_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018274 uint64_t cgen_var_1272;
18275 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1272, 1);
18276 stream->write((uint64_t*)&cgen_var_1272, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018277 marshal_VkIndirectCommandsLayoutCreateInfoNVX(stream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018278 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018279 uint64_t cgen_var_1273 = (uint64_t)(uintptr_t)local_pAllocator;
18280 stream->putBe64(cgen_var_1273);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018281 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018282 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018283 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018284 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018285 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018286 uint64_t cgen_var_1274;
18287 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1274, 1);
18288 stream->write((uint64_t*)&cgen_var_1274, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018289 stream->setHandleMapping(resources->unwrapMapping());
18290 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018291 uint64_t cgen_var_1275;
18292 stream->read((uint64_t*)&cgen_var_1275, 8);
18293 stream->handleMapping()->mapHandles_u64_VkIndirectCommandsLayoutNVX(&cgen_var_1275, (VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018294 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018295 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
18296 stream->read(&vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018297 countingStream->clearPool();
18298 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018299 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018300 mImpl->log("finish vkCreateIndirectCommandsLayoutNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018301 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
18302}
18303
18304void VkEncoder::vkDestroyIndirectCommandsLayoutNVX(
18305 VkDevice device,
18306 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
18307 const VkAllocationCallbacks* pAllocator)
18308{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018309 mImpl->log("start vkDestroyIndirectCommandsLayoutNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018310 auto stream = mImpl->stream();
18311 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018312 auto resources = mImpl->resources();
18313 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018314 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018315 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018316 VkIndirectCommandsLayoutNVX local_indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018317 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018318 local_device = device;
18319 local_indirectCommandsLayout = indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018320 local_pAllocator = nullptr;
18321 if (pAllocator)
18322 {
18323 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18324 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18325 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018326 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018327 if (local_pAllocator)
18328 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018329 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018330 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018331 countingStream->rewind();
18332 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018333 uint64_t cgen_var_1276;
18334 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1276, 1);
18335 countingStream->write((uint64_t*)&cgen_var_1276, 1 * 8);
18336 uint64_t cgen_var_1277;
18337 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1277, 1);
18338 countingStream->write((uint64_t*)&cgen_var_1277, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018339 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018340 uint64_t cgen_var_1278 = (uint64_t)(uintptr_t)local_pAllocator;
18341 countingStream->putBe64(cgen_var_1278);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018342 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018343 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018344 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018345 }
18346 }
18347 uint32_t packetSize_vkDestroyIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18348 countingStream->rewind();
18349 uint32_t opcode_vkDestroyIndirectCommandsLayoutNVX = OP_vkDestroyIndirectCommandsLayoutNVX;
18350 stream->write(&opcode_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
18351 stream->write(&packetSize_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018352 uint64_t cgen_var_1279;
18353 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1279, 1);
18354 stream->write((uint64_t*)&cgen_var_1279, 1 * 8);
18355 uint64_t cgen_var_1280;
18356 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1280, 1);
18357 stream->write((uint64_t*)&cgen_var_1280, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018358 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018359 uint64_t cgen_var_1281 = (uint64_t)(uintptr_t)local_pAllocator;
18360 stream->putBe64(cgen_var_1281);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018361 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018362 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018363 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018364 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018365 resources->destroyMapping()->mapHandles_VkIndirectCommandsLayoutNVX((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018366 mImpl->log("finish vkDestroyIndirectCommandsLayoutNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018367}
18368
18369VkResult VkEncoder::vkCreateObjectTableNVX(
18370 VkDevice device,
18371 const VkObjectTableCreateInfoNVX* pCreateInfo,
18372 const VkAllocationCallbacks* pAllocator,
18373 VkObjectTableNVX* pObjectTable)
18374{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018375 mImpl->log("start vkCreateObjectTableNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018376 auto stream = mImpl->stream();
18377 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018378 auto resources = mImpl->resources();
18379 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018380 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018381 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018382 VkObjectTableCreateInfoNVX* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018383 VkAllocationCallbacks* local_pAllocator;
18384 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018385 local_pCreateInfo = nullptr;
18386 if (pCreateInfo)
18387 {
18388 local_pCreateInfo = (VkObjectTableCreateInfoNVX*)pool->alloc(sizeof(const VkObjectTableCreateInfoNVX));
18389 deepcopy_VkObjectTableCreateInfoNVX(pool, pCreateInfo, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
18390 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018391 local_pAllocator = nullptr;
18392 if (pAllocator)
18393 {
18394 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18395 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18396 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018397 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018398 if (local_pCreateInfo)
18399 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018400 transform_tohost_VkObjectTableCreateInfoNVX(mImpl->resources(), (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018401 }
18402 if (local_pAllocator)
18403 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018404 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018405 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018406 countingStream->rewind();
18407 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018408 uint64_t cgen_var_1282;
18409 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1282, 1);
18410 countingStream->write((uint64_t*)&cgen_var_1282, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018411 marshal_VkObjectTableCreateInfoNVX(countingStream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018412 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018413 uint64_t cgen_var_1283 = (uint64_t)(uintptr_t)local_pAllocator;
18414 countingStream->putBe64(cgen_var_1283);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018415 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018416 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018417 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018418 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018419 uint64_t cgen_var_1284;
18420 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1284, 1);
18421 countingStream->write((uint64_t*)&cgen_var_1284, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018422 }
18423 uint32_t packetSize_vkCreateObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18424 countingStream->rewind();
18425 uint32_t opcode_vkCreateObjectTableNVX = OP_vkCreateObjectTableNVX;
18426 stream->write(&opcode_vkCreateObjectTableNVX, sizeof(uint32_t));
18427 stream->write(&packetSize_vkCreateObjectTableNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018428 uint64_t cgen_var_1285;
18429 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1285, 1);
18430 stream->write((uint64_t*)&cgen_var_1285, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018431 marshal_VkObjectTableCreateInfoNVX(stream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018432 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018433 uint64_t cgen_var_1286 = (uint64_t)(uintptr_t)local_pAllocator;
18434 stream->putBe64(cgen_var_1286);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018435 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018436 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018437 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018438 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018439 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018440 uint64_t cgen_var_1287;
18441 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1287, 1);
18442 stream->write((uint64_t*)&cgen_var_1287, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018443 stream->setHandleMapping(resources->unwrapMapping());
18444 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018445 uint64_t cgen_var_1288;
18446 stream->read((uint64_t*)&cgen_var_1288, 8);
18447 stream->handleMapping()->mapHandles_u64_VkObjectTableNVX(&cgen_var_1288, (VkObjectTableNVX*)pObjectTable, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018448 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018449 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
18450 stream->read(&vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018451 countingStream->clearPool();
18452 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018453 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018454 mImpl->log("finish vkCreateObjectTableNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018455 return vkCreateObjectTableNVX_VkResult_return;
18456}
18457
18458void VkEncoder::vkDestroyObjectTableNVX(
18459 VkDevice device,
18460 VkObjectTableNVX objectTable,
18461 const VkAllocationCallbacks* pAllocator)
18462{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018463 mImpl->log("start vkDestroyObjectTableNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018464 auto stream = mImpl->stream();
18465 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018466 auto resources = mImpl->resources();
18467 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018468 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018469 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018470 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018471 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018472 local_device = device;
18473 local_objectTable = objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018474 local_pAllocator = nullptr;
18475 if (pAllocator)
18476 {
18477 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18478 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18479 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018480 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018481 if (local_pAllocator)
18482 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018483 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018484 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018485 countingStream->rewind();
18486 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018487 uint64_t cgen_var_1289;
18488 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1289, 1);
18489 countingStream->write((uint64_t*)&cgen_var_1289, 1 * 8);
18490 uint64_t cgen_var_1290;
18491 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1290, 1);
18492 countingStream->write((uint64_t*)&cgen_var_1290, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018493 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018494 uint64_t cgen_var_1291 = (uint64_t)(uintptr_t)local_pAllocator;
18495 countingStream->putBe64(cgen_var_1291);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018496 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018497 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018498 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018499 }
18500 }
18501 uint32_t packetSize_vkDestroyObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18502 countingStream->rewind();
18503 uint32_t opcode_vkDestroyObjectTableNVX = OP_vkDestroyObjectTableNVX;
18504 stream->write(&opcode_vkDestroyObjectTableNVX, sizeof(uint32_t));
18505 stream->write(&packetSize_vkDestroyObjectTableNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018506 uint64_t cgen_var_1292;
18507 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1292, 1);
18508 stream->write((uint64_t*)&cgen_var_1292, 1 * 8);
18509 uint64_t cgen_var_1293;
18510 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1293, 1);
18511 stream->write((uint64_t*)&cgen_var_1293, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018512 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018513 uint64_t cgen_var_1294 = (uint64_t)(uintptr_t)local_pAllocator;
18514 stream->putBe64(cgen_var_1294);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018515 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018516 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018517 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018518 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018519 resources->destroyMapping()->mapHandles_VkObjectTableNVX((VkObjectTableNVX*)&objectTable);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018520 mImpl->log("finish vkDestroyObjectTableNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018521}
18522
18523VkResult VkEncoder::vkRegisterObjectsNVX(
18524 VkDevice device,
18525 VkObjectTableNVX objectTable,
18526 uint32_t objectCount,
18527 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
18528 const uint32_t* pObjectIndices)
18529{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018530 mImpl->log("start vkRegisterObjectsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018531 auto stream = mImpl->stream();
18532 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018533 auto resources = mImpl->resources();
18534 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018535 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018536 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018537 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018538 uint32_t local_objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018539 VkObjectTableEntryNVX** local_ppObjectTableEntries;
18540 uint32_t* local_pObjectIndices;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018541 local_device = device;
18542 local_objectTable = objectTable;
18543 local_objectCount = objectCount;
18544 (void)ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018545 local_pObjectIndices = nullptr;
18546 if (pObjectIndices)
18547 {
18548 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
18549 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018550 (void)local_ppObjectTableEntries;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018551 countingStream->rewind();
18552 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018553 uint64_t cgen_var_1295;
18554 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1295, 1);
18555 countingStream->write((uint64_t*)&cgen_var_1295, 1 * 8);
18556 uint64_t cgen_var_1296;
18557 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1296, 1);
18558 countingStream->write((uint64_t*)&cgen_var_1296, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018559 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080018560 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018561 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018562 }
18563 uint32_t packetSize_vkRegisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18564 countingStream->rewind();
18565 uint32_t opcode_vkRegisterObjectsNVX = OP_vkRegisterObjectsNVX;
18566 stream->write(&opcode_vkRegisterObjectsNVX, sizeof(uint32_t));
18567 stream->write(&packetSize_vkRegisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018568 uint64_t cgen_var_1297;
18569 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1297, 1);
18570 stream->write((uint64_t*)&cgen_var_1297, 1 * 8);
18571 uint64_t cgen_var_1298;
18572 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1298, 1);
18573 stream->write((uint64_t*)&cgen_var_1298, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018574 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080018575 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018576 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018577 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
18578 stream->read(&vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018579 countingStream->clearPool();
18580 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018581 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018582 mImpl->log("finish vkRegisterObjectsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018583 return vkRegisterObjectsNVX_VkResult_return;
18584}
18585
18586VkResult VkEncoder::vkUnregisterObjectsNVX(
18587 VkDevice device,
18588 VkObjectTableNVX objectTable,
18589 uint32_t objectCount,
18590 const VkObjectEntryTypeNVX* pObjectEntryTypes,
18591 const uint32_t* pObjectIndices)
18592{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018593 mImpl->log("start vkUnregisterObjectsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018594 auto stream = mImpl->stream();
18595 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018596 auto resources = mImpl->resources();
18597 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018598 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018599 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018600 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018601 uint32_t local_objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018602 VkObjectEntryTypeNVX* local_pObjectEntryTypes;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018603 uint32_t* local_pObjectIndices;
18604 local_device = device;
18605 local_objectTable = objectTable;
18606 local_objectCount = objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018607 local_pObjectEntryTypes = nullptr;
18608 if (pObjectEntryTypes)
18609 {
18610 local_pObjectEntryTypes = (VkObjectEntryTypeNVX*)pool->dupArray(pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
18611 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018612 local_pObjectIndices = nullptr;
18613 if (pObjectIndices)
18614 {
18615 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
18616 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018617 countingStream->rewind();
18618 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018619 uint64_t cgen_var_1299;
18620 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1299, 1);
18621 countingStream->write((uint64_t*)&cgen_var_1299, 1 * 8);
18622 uint64_t cgen_var_1300;
18623 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1300, 1);
18624 countingStream->write((uint64_t*)&cgen_var_1300, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018625 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
18626 countingStream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
18627 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018628 }
18629 uint32_t packetSize_vkUnregisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18630 countingStream->rewind();
18631 uint32_t opcode_vkUnregisterObjectsNVX = OP_vkUnregisterObjectsNVX;
18632 stream->write(&opcode_vkUnregisterObjectsNVX, sizeof(uint32_t));
18633 stream->write(&packetSize_vkUnregisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018634 uint64_t cgen_var_1301;
18635 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1301, 1);
18636 stream->write((uint64_t*)&cgen_var_1301, 1 * 8);
18637 uint64_t cgen_var_1302;
18638 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1302, 1);
18639 stream->write((uint64_t*)&cgen_var_1302, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018640 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
18641 stream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
18642 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018643 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
18644 stream->read(&vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018645 countingStream->clearPool();
18646 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018647 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018648 mImpl->log("finish vkUnregisterObjectsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018649 return vkUnregisterObjectsNVX_VkResult_return;
18650}
18651
18652void VkEncoder::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
18653 VkPhysicalDevice physicalDevice,
18654 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
18655 VkDeviceGeneratedCommandsLimitsNVX* pLimits)
18656{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018657 mImpl->log("start vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018658 auto stream = mImpl->stream();
18659 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018660 auto resources = mImpl->resources();
18661 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018662 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018663 VkPhysicalDevice local_physicalDevice;
18664 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018665 countingStream->rewind();
18666 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018667 uint64_t cgen_var_1303;
18668 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1303, 1);
18669 countingStream->write((uint64_t*)&cgen_var_1303, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018670 marshal_VkDeviceGeneratedCommandsFeaturesNVX(countingStream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
18671 marshal_VkDeviceGeneratedCommandsLimitsNVX(countingStream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
18672 }
18673 uint32_t packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18674 countingStream->rewind();
18675 uint32_t opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = OP_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX;
18676 stream->write(&opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
18677 stream->write(&packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018678 uint64_t cgen_var_1304;
18679 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1304, 1);
18680 stream->write((uint64_t*)&cgen_var_1304, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018681 marshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
18682 marshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
18683 unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -080018684 if (pFeatures)
18685 {
18686 transform_fromhost_VkDeviceGeneratedCommandsFeaturesNVX(mImpl->resources(), (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
18687 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018688 unmarshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
Lingfeng Yang97a06702018-12-24 17:02:43 -080018689 if (pLimits)
18690 {
18691 transform_fromhost_VkDeviceGeneratedCommandsLimitsNVX(mImpl->resources(), (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
18692 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018693 mImpl->log("finish vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018694}
18695
18696#endif
18697#ifdef VK_NV_clip_space_w_scaling
18698void VkEncoder::vkCmdSetViewportWScalingNV(
18699 VkCommandBuffer commandBuffer,
18700 uint32_t firstViewport,
18701 uint32_t viewportCount,
18702 const VkViewportWScalingNV* pViewportWScalings)
18703{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018704 mImpl->log("start vkCmdSetViewportWScalingNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018705 auto stream = mImpl->stream();
18706 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018707 auto resources = mImpl->resources();
18708 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018709 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018710 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018711 uint32_t local_firstViewport;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018712 uint32_t local_viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018713 VkViewportWScalingNV* local_pViewportWScalings;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018714 local_commandBuffer = commandBuffer;
18715 local_firstViewport = firstViewport;
18716 local_viewportCount = viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018717 local_pViewportWScalings = nullptr;
18718 if (pViewportWScalings)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018719 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018720 local_pViewportWScalings = (VkViewportWScalingNV*)pool->alloc(((viewportCount)) * sizeof(const VkViewportWScalingNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018721 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
18722 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018723 deepcopy_VkViewportWScalingNV(pool, pViewportWScalings + i, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
18724 }
18725 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018726 if (local_pViewportWScalings)
18727 {
18728 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
18729 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018730 transform_tohost_VkViewportWScalingNV(mImpl->resources(), (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018731 }
18732 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018733 countingStream->rewind();
18734 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018735 uint64_t cgen_var_1305;
18736 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1305, 1);
18737 countingStream->write((uint64_t*)&cgen_var_1305, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018738 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
18739 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
18740 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
18741 {
18742 marshal_VkViewportWScalingNV(countingStream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018743 }
18744 }
18745 uint32_t packetSize_vkCmdSetViewportWScalingNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18746 countingStream->rewind();
18747 uint32_t opcode_vkCmdSetViewportWScalingNV = OP_vkCmdSetViewportWScalingNV;
18748 stream->write(&opcode_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
18749 stream->write(&packetSize_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018750 uint64_t cgen_var_1306;
18751 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1306, 1);
18752 stream->write((uint64_t*)&cgen_var_1306, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018753 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
18754 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018755 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
18756 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018757 marshal_VkViewportWScalingNV(stream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018758 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018759 mImpl->log("finish vkCmdSetViewportWScalingNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018760}
18761
18762#endif
18763#ifdef VK_EXT_direct_mode_display
18764VkResult VkEncoder::vkReleaseDisplayEXT(
18765 VkPhysicalDevice physicalDevice,
18766 VkDisplayKHR display)
18767{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018768 mImpl->log("start vkReleaseDisplayEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018769 auto stream = mImpl->stream();
18770 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018771 auto resources = mImpl->resources();
18772 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018773 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018774 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018775 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018776 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018777 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018778 countingStream->rewind();
18779 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018780 uint64_t cgen_var_1307;
18781 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1307, 1);
18782 countingStream->write((uint64_t*)&cgen_var_1307, 1 * 8);
18783 uint64_t cgen_var_1308;
18784 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1308, 1);
18785 countingStream->write((uint64_t*)&cgen_var_1308, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018786 }
18787 uint32_t packetSize_vkReleaseDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18788 countingStream->rewind();
18789 uint32_t opcode_vkReleaseDisplayEXT = OP_vkReleaseDisplayEXT;
18790 stream->write(&opcode_vkReleaseDisplayEXT, sizeof(uint32_t));
18791 stream->write(&packetSize_vkReleaseDisplayEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018792 uint64_t cgen_var_1309;
18793 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1309, 1);
18794 stream->write((uint64_t*)&cgen_var_1309, 1 * 8);
18795 uint64_t cgen_var_1310;
18796 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1310, 1);
18797 stream->write((uint64_t*)&cgen_var_1310, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018798 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
18799 stream->read(&vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018800 countingStream->clearPool();
18801 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018802 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018803 mImpl->log("finish vkReleaseDisplayEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018804 return vkReleaseDisplayEXT_VkResult_return;
18805}
18806
18807#endif
18808#ifdef VK_EXT_acquire_xlib_display
18809VkResult VkEncoder::vkAcquireXlibDisplayEXT(
18810 VkPhysicalDevice physicalDevice,
18811 Display* dpy,
18812 VkDisplayKHR display)
18813{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018814 mImpl->log("start vkAcquireXlibDisplayEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018815 auto stream = mImpl->stream();
18816 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018817 auto resources = mImpl->resources();
18818 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018819 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018820 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018821 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018822 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018823 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018824 countingStream->rewind();
18825 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018826 uint64_t cgen_var_1311;
18827 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1311, 1);
18828 countingStream->write((uint64_t*)&cgen_var_1311, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018829 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018830 uint64_t cgen_var_1312;
18831 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1312, 1);
18832 countingStream->write((uint64_t*)&cgen_var_1312, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018833 }
18834 uint32_t packetSize_vkAcquireXlibDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18835 countingStream->rewind();
18836 uint32_t opcode_vkAcquireXlibDisplayEXT = OP_vkAcquireXlibDisplayEXT;
18837 stream->write(&opcode_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
18838 stream->write(&packetSize_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018839 uint64_t cgen_var_1313;
18840 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1313, 1);
18841 stream->write((uint64_t*)&cgen_var_1313, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018842 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018843 uint64_t cgen_var_1314;
18844 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1314, 1);
18845 stream->write((uint64_t*)&cgen_var_1314, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018846 stream->read((Display*)dpy, sizeof(Display));
18847 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
18848 stream->read(&vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018849 countingStream->clearPool();
18850 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018851 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018852 mImpl->log("finish vkAcquireXlibDisplayEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018853 return vkAcquireXlibDisplayEXT_VkResult_return;
18854}
18855
18856VkResult VkEncoder::vkGetRandROutputDisplayEXT(
18857 VkPhysicalDevice physicalDevice,
18858 Display* dpy,
18859 RROutput rrOutput,
18860 VkDisplayKHR* pDisplay)
18861{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018862 mImpl->log("start vkGetRandROutputDisplayEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018863 auto stream = mImpl->stream();
18864 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018865 auto resources = mImpl->resources();
18866 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018867 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018868 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018869 RROutput local_rrOutput;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018870 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018871 local_rrOutput = rrOutput;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018872 countingStream->rewind();
18873 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018874 uint64_t cgen_var_1315;
18875 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1315, 1);
18876 countingStream->write((uint64_t*)&cgen_var_1315, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018877 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018878 countingStream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018879 uint64_t cgen_var_1316;
18880 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1316, 1);
18881 countingStream->write((uint64_t*)&cgen_var_1316, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018882 }
18883 uint32_t packetSize_vkGetRandROutputDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18884 countingStream->rewind();
18885 uint32_t opcode_vkGetRandROutputDisplayEXT = OP_vkGetRandROutputDisplayEXT;
18886 stream->write(&opcode_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
18887 stream->write(&packetSize_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018888 uint64_t cgen_var_1317;
18889 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1317, 1);
18890 stream->write((uint64_t*)&cgen_var_1317, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018891 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018892 stream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yange4008a02018-11-18 12:22:48 -080018893 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018894 uint64_t cgen_var_1318;
18895 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1318, 1);
18896 stream->write((uint64_t*)&cgen_var_1318, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018897 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018898 stream->read((Display*)dpy, sizeof(Display));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018899 uint64_t cgen_var_1319;
18900 stream->read((uint64_t*)&cgen_var_1319, 8);
18901 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(&cgen_var_1319, (VkDisplayKHR*)pDisplay, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018902 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
18903 stream->read(&vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018904 countingStream->clearPool();
18905 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018906 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018907 mImpl->log("finish vkGetRandROutputDisplayEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018908 return vkGetRandROutputDisplayEXT_VkResult_return;
18909}
18910
18911#endif
18912#ifdef VK_EXT_display_surface_counter
18913VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2EXT(
18914 VkPhysicalDevice physicalDevice,
18915 VkSurfaceKHR surface,
18916 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
18917{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018918 mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilities2EXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018919 auto stream = mImpl->stream();
18920 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018921 auto resources = mImpl->resources();
18922 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018923 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018924 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018925 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018926 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018927 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018928 countingStream->rewind();
18929 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018930 uint64_t cgen_var_1320;
18931 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1320, 1);
18932 countingStream->write((uint64_t*)&cgen_var_1320, 1 * 8);
18933 uint64_t cgen_var_1321;
18934 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1321, 1);
18935 countingStream->write((uint64_t*)&cgen_var_1321, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018936 marshal_VkSurfaceCapabilities2EXT(countingStream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
18937 }
18938 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18939 countingStream->rewind();
18940 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT = OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT;
18941 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
18942 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018943 uint64_t cgen_var_1322;
18944 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1322, 1);
18945 stream->write((uint64_t*)&cgen_var_1322, 1 * 8);
18946 uint64_t cgen_var_1323;
18947 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1323, 1);
18948 stream->write((uint64_t*)&cgen_var_1323, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018949 marshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
18950 unmarshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080018951 if (pSurfaceCapabilities)
18952 {
18953 transform_fromhost_VkSurfaceCapabilities2EXT(mImpl->resources(), (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
18954 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018955 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
18956 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018957 countingStream->clearPool();
18958 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018959 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018960 mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilities2EXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018961 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
18962}
18963
18964#endif
18965#ifdef VK_EXT_display_control
18966VkResult VkEncoder::vkDisplayPowerControlEXT(
18967 VkDevice device,
18968 VkDisplayKHR display,
18969 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
18970{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018971 mImpl->log("start vkDisplayPowerControlEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018972 auto stream = mImpl->stream();
18973 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018974 auto resources = mImpl->resources();
18975 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018976 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018977 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018978 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018979 VkDisplayPowerInfoEXT* local_pDisplayPowerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018980 local_device = device;
18981 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018982 local_pDisplayPowerInfo = nullptr;
18983 if (pDisplayPowerInfo)
18984 {
18985 local_pDisplayPowerInfo = (VkDisplayPowerInfoEXT*)pool->alloc(sizeof(const VkDisplayPowerInfoEXT));
18986 deepcopy_VkDisplayPowerInfoEXT(pool, pDisplayPowerInfo, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
18987 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018988 if (local_pDisplayPowerInfo)
18989 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018990 transform_tohost_VkDisplayPowerInfoEXT(mImpl->resources(), (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018991 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018992 countingStream->rewind();
18993 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018994 uint64_t cgen_var_1324;
18995 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1324, 1);
18996 countingStream->write((uint64_t*)&cgen_var_1324, 1 * 8);
18997 uint64_t cgen_var_1325;
18998 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1325, 1);
18999 countingStream->write((uint64_t*)&cgen_var_1325, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019000 marshal_VkDisplayPowerInfoEXT(countingStream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019001 }
19002 uint32_t packetSize_vkDisplayPowerControlEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19003 countingStream->rewind();
19004 uint32_t opcode_vkDisplayPowerControlEXT = OP_vkDisplayPowerControlEXT;
19005 stream->write(&opcode_vkDisplayPowerControlEXT, sizeof(uint32_t));
19006 stream->write(&packetSize_vkDisplayPowerControlEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019007 uint64_t cgen_var_1326;
19008 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1326, 1);
19009 stream->write((uint64_t*)&cgen_var_1326, 1 * 8);
19010 uint64_t cgen_var_1327;
19011 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1327, 1);
19012 stream->write((uint64_t*)&cgen_var_1327, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019013 marshal_VkDisplayPowerInfoEXT(stream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019014 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
19015 stream->read(&vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019016 countingStream->clearPool();
19017 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019018 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019019 mImpl->log("finish vkDisplayPowerControlEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019020 return vkDisplayPowerControlEXT_VkResult_return;
19021}
19022
19023VkResult VkEncoder::vkRegisterDeviceEventEXT(
19024 VkDevice device,
19025 const VkDeviceEventInfoEXT* pDeviceEventInfo,
19026 const VkAllocationCallbacks* pAllocator,
19027 VkFence* pFence)
19028{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019029 mImpl->log("start vkRegisterDeviceEventEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019030 auto stream = mImpl->stream();
19031 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019032 auto resources = mImpl->resources();
19033 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019034 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019035 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019036 VkDeviceEventInfoEXT* local_pDeviceEventInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019037 VkAllocationCallbacks* local_pAllocator;
19038 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019039 local_pDeviceEventInfo = nullptr;
19040 if (pDeviceEventInfo)
19041 {
19042 local_pDeviceEventInfo = (VkDeviceEventInfoEXT*)pool->alloc(sizeof(const VkDeviceEventInfoEXT));
19043 deepcopy_VkDeviceEventInfoEXT(pool, pDeviceEventInfo, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
19044 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019045 local_pAllocator = nullptr;
19046 if (pAllocator)
19047 {
19048 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19049 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19050 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019051 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019052 if (local_pDeviceEventInfo)
19053 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019054 transform_tohost_VkDeviceEventInfoEXT(mImpl->resources(), (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019055 }
19056 if (local_pAllocator)
19057 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019058 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019059 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019060 countingStream->rewind();
19061 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019062 uint64_t cgen_var_1328;
19063 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1328, 1);
19064 countingStream->write((uint64_t*)&cgen_var_1328, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019065 marshal_VkDeviceEventInfoEXT(countingStream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019066 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019067 uint64_t cgen_var_1329 = (uint64_t)(uintptr_t)local_pAllocator;
19068 countingStream->putBe64(cgen_var_1329);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019069 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019070 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019071 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019072 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019073 uint64_t cgen_var_1330;
19074 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1330, 1);
19075 countingStream->write((uint64_t*)&cgen_var_1330, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019076 }
19077 uint32_t packetSize_vkRegisterDeviceEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19078 countingStream->rewind();
19079 uint32_t opcode_vkRegisterDeviceEventEXT = OP_vkRegisterDeviceEventEXT;
19080 stream->write(&opcode_vkRegisterDeviceEventEXT, sizeof(uint32_t));
19081 stream->write(&packetSize_vkRegisterDeviceEventEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019082 uint64_t cgen_var_1331;
19083 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1331, 1);
19084 stream->write((uint64_t*)&cgen_var_1331, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019085 marshal_VkDeviceEventInfoEXT(stream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019086 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019087 uint64_t cgen_var_1332 = (uint64_t)(uintptr_t)local_pAllocator;
19088 stream->putBe64(cgen_var_1332);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019089 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019090 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019091 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019092 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019093 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019094 uint64_t cgen_var_1333;
19095 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1333, 1);
19096 stream->write((uint64_t*)&cgen_var_1333, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019097 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019098 uint64_t cgen_var_1334;
19099 stream->read((uint64_t*)&cgen_var_1334, 8);
19100 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1334, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019101 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
19102 stream->read(&vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019103 countingStream->clearPool();
19104 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019105 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019106 mImpl->log("finish vkRegisterDeviceEventEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019107 return vkRegisterDeviceEventEXT_VkResult_return;
19108}
19109
19110VkResult VkEncoder::vkRegisterDisplayEventEXT(
19111 VkDevice device,
19112 VkDisplayKHR display,
19113 const VkDisplayEventInfoEXT* pDisplayEventInfo,
19114 const VkAllocationCallbacks* pAllocator,
19115 VkFence* pFence)
19116{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019117 mImpl->log("start vkRegisterDisplayEventEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019118 auto stream = mImpl->stream();
19119 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019120 auto resources = mImpl->resources();
19121 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019122 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019123 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019124 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019125 VkDisplayEventInfoEXT* local_pDisplayEventInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019126 VkAllocationCallbacks* local_pAllocator;
19127 local_device = device;
19128 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019129 local_pDisplayEventInfo = nullptr;
19130 if (pDisplayEventInfo)
19131 {
19132 local_pDisplayEventInfo = (VkDisplayEventInfoEXT*)pool->alloc(sizeof(const VkDisplayEventInfoEXT));
19133 deepcopy_VkDisplayEventInfoEXT(pool, pDisplayEventInfo, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
19134 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019135 local_pAllocator = nullptr;
19136 if (pAllocator)
19137 {
19138 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19139 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19140 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019141 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019142 if (local_pDisplayEventInfo)
19143 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019144 transform_tohost_VkDisplayEventInfoEXT(mImpl->resources(), (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019145 }
19146 if (local_pAllocator)
19147 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019148 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019149 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019150 countingStream->rewind();
19151 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019152 uint64_t cgen_var_1335;
19153 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1335, 1);
19154 countingStream->write((uint64_t*)&cgen_var_1335, 1 * 8);
19155 uint64_t cgen_var_1336;
19156 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1336, 1);
19157 countingStream->write((uint64_t*)&cgen_var_1336, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019158 marshal_VkDisplayEventInfoEXT(countingStream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019159 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019160 uint64_t cgen_var_1337 = (uint64_t)(uintptr_t)local_pAllocator;
19161 countingStream->putBe64(cgen_var_1337);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019162 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019163 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019164 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019165 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019166 uint64_t cgen_var_1338;
19167 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1338, 1);
19168 countingStream->write((uint64_t*)&cgen_var_1338, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019169 }
19170 uint32_t packetSize_vkRegisterDisplayEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19171 countingStream->rewind();
19172 uint32_t opcode_vkRegisterDisplayEventEXT = OP_vkRegisterDisplayEventEXT;
19173 stream->write(&opcode_vkRegisterDisplayEventEXT, sizeof(uint32_t));
19174 stream->write(&packetSize_vkRegisterDisplayEventEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019175 uint64_t cgen_var_1339;
19176 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1339, 1);
19177 stream->write((uint64_t*)&cgen_var_1339, 1 * 8);
19178 uint64_t cgen_var_1340;
19179 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1340, 1);
19180 stream->write((uint64_t*)&cgen_var_1340, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019181 marshal_VkDisplayEventInfoEXT(stream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019182 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019183 uint64_t cgen_var_1341 = (uint64_t)(uintptr_t)local_pAllocator;
19184 stream->putBe64(cgen_var_1341);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019185 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019186 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019187 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019188 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019189 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019190 uint64_t cgen_var_1342;
19191 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1342, 1);
19192 stream->write((uint64_t*)&cgen_var_1342, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019193 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019194 uint64_t cgen_var_1343;
19195 stream->read((uint64_t*)&cgen_var_1343, 8);
19196 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1343, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019197 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
19198 stream->read(&vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019199 countingStream->clearPool();
19200 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019201 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019202 mImpl->log("finish vkRegisterDisplayEventEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019203 return vkRegisterDisplayEventEXT_VkResult_return;
19204}
19205
19206VkResult VkEncoder::vkGetSwapchainCounterEXT(
19207 VkDevice device,
19208 VkSwapchainKHR swapchain,
19209 VkSurfaceCounterFlagBitsEXT counter,
19210 uint64_t* pCounterValue)
19211{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019212 mImpl->log("start vkGetSwapchainCounterEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019213 auto stream = mImpl->stream();
19214 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019215 auto resources = mImpl->resources();
19216 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019217 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019218 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019219 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019220 VkSurfaceCounterFlagBitsEXT local_counter;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019221 local_device = device;
19222 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019223 local_counter = counter;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019224 countingStream->rewind();
19225 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019226 uint64_t cgen_var_1344;
19227 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1344, 1);
19228 countingStream->write((uint64_t*)&cgen_var_1344, 1 * 8);
19229 uint64_t cgen_var_1345;
19230 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1345, 1);
19231 countingStream->write((uint64_t*)&cgen_var_1345, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019232 countingStream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019233 countingStream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
19234 }
19235 uint32_t packetSize_vkGetSwapchainCounterEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19236 countingStream->rewind();
19237 uint32_t opcode_vkGetSwapchainCounterEXT = OP_vkGetSwapchainCounterEXT;
19238 stream->write(&opcode_vkGetSwapchainCounterEXT, sizeof(uint32_t));
19239 stream->write(&packetSize_vkGetSwapchainCounterEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019240 uint64_t cgen_var_1346;
19241 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1346, 1);
19242 stream->write((uint64_t*)&cgen_var_1346, 1 * 8);
19243 uint64_t cgen_var_1347;
19244 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1347, 1);
19245 stream->write((uint64_t*)&cgen_var_1347, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019246 stream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019247 stream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
19248 stream->read((uint64_t*)pCounterValue, sizeof(uint64_t));
19249 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
19250 stream->read(&vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019251 countingStream->clearPool();
19252 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019253 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019254 mImpl->log("finish vkGetSwapchainCounterEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019255 return vkGetSwapchainCounterEXT_VkResult_return;
19256}
19257
19258#endif
19259#ifdef VK_GOOGLE_display_timing
19260VkResult VkEncoder::vkGetRefreshCycleDurationGOOGLE(
19261 VkDevice device,
19262 VkSwapchainKHR swapchain,
19263 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
19264{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019265 mImpl->log("start vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019266 auto stream = mImpl->stream();
19267 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019268 auto resources = mImpl->resources();
19269 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019270 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019271 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019272 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019273 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019274 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019275 countingStream->rewind();
19276 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019277 uint64_t cgen_var_1348;
19278 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1348, 1);
19279 countingStream->write((uint64_t*)&cgen_var_1348, 1 * 8);
19280 uint64_t cgen_var_1349;
19281 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1349, 1);
19282 countingStream->write((uint64_t*)&cgen_var_1349, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019283 marshal_VkRefreshCycleDurationGOOGLE(countingStream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
19284 }
19285 uint32_t packetSize_vkGetRefreshCycleDurationGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19286 countingStream->rewind();
19287 uint32_t opcode_vkGetRefreshCycleDurationGOOGLE = OP_vkGetRefreshCycleDurationGOOGLE;
19288 stream->write(&opcode_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
19289 stream->write(&packetSize_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019290 uint64_t cgen_var_1350;
19291 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1350, 1);
19292 stream->write((uint64_t*)&cgen_var_1350, 1 * 8);
19293 uint64_t cgen_var_1351;
19294 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1351, 1);
19295 stream->write((uint64_t*)&cgen_var_1351, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019296 marshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
19297 unmarshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080019298 if (pDisplayTimingProperties)
19299 {
19300 transform_fromhost_VkRefreshCycleDurationGOOGLE(mImpl->resources(), (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
19301 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019302 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
19303 stream->read(&vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019304 countingStream->clearPool();
19305 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019306 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019307 mImpl->log("finish vkGetRefreshCycleDurationGOOGLE");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019308 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
19309}
19310
19311VkResult VkEncoder::vkGetPastPresentationTimingGOOGLE(
19312 VkDevice device,
19313 VkSwapchainKHR swapchain,
19314 uint32_t* pPresentationTimingCount,
19315 VkPastPresentationTimingGOOGLE* pPresentationTimings)
19316{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019317 mImpl->log("start vkGetPastPresentationTimingGOOGLE");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019318 auto stream = mImpl->stream();
19319 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019320 auto resources = mImpl->resources();
19321 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019322 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019323 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019324 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019325 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019326 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019327 countingStream->rewind();
19328 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019329 uint64_t cgen_var_1352;
19330 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1352, 1);
19331 countingStream->write((uint64_t*)&cgen_var_1352, 1 * 8);
19332 uint64_t cgen_var_1353;
19333 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1353, 1);
19334 countingStream->write((uint64_t*)&cgen_var_1353, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019335 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019336 uint64_t cgen_var_1354 = (uint64_t)(uintptr_t)pPresentationTimingCount;
19337 countingStream->putBe64(cgen_var_1354);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019338 if (pPresentationTimingCount)
19339 {
19340 countingStream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
19341 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019342 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019343 uint64_t cgen_var_1355 = (uint64_t)(uintptr_t)pPresentationTimings;
19344 countingStream->putBe64(cgen_var_1355);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019345 if (pPresentationTimings)
19346 {
19347 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
19348 {
19349 marshal_VkPastPresentationTimingGOOGLE(countingStream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
19350 }
19351 }
19352 }
19353 uint32_t packetSize_vkGetPastPresentationTimingGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19354 countingStream->rewind();
19355 uint32_t opcode_vkGetPastPresentationTimingGOOGLE = OP_vkGetPastPresentationTimingGOOGLE;
19356 stream->write(&opcode_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
19357 stream->write(&packetSize_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019358 uint64_t cgen_var_1356;
19359 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1356, 1);
19360 stream->write((uint64_t*)&cgen_var_1356, 1 * 8);
19361 uint64_t cgen_var_1357;
19362 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1357, 1);
19363 stream->write((uint64_t*)&cgen_var_1357, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019364 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019365 uint64_t cgen_var_1358 = (uint64_t)(uintptr_t)pPresentationTimingCount;
19366 stream->putBe64(cgen_var_1358);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019367 if (pPresentationTimingCount)
19368 {
19369 stream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
19370 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019371 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019372 uint64_t cgen_var_1359 = (uint64_t)(uintptr_t)pPresentationTimings;
19373 stream->putBe64(cgen_var_1359);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019374 if (pPresentationTimings)
19375 {
19376 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
19377 {
19378 marshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
19379 }
19380 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019381 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019382 uint32_t* check_pPresentationTimingCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019383 check_pPresentationTimingCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019384 if (pPresentationTimingCount)
19385 {
19386 if (!(check_pPresentationTimingCount))
19387 {
19388 fprintf(stderr, "fatal: pPresentationTimingCount inconsistent between guest and host\n");
19389 }
19390 stream->read((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
19391 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019392 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019393 VkPastPresentationTimingGOOGLE* check_pPresentationTimings;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019394 check_pPresentationTimings = (VkPastPresentationTimingGOOGLE*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019395 if (pPresentationTimings)
19396 {
19397 if (!(check_pPresentationTimings))
19398 {
19399 fprintf(stderr, "fatal: pPresentationTimings inconsistent between guest and host\n");
19400 }
19401 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
19402 {
19403 unmarshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
19404 }
19405 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080019406 if (pPresentationTimings)
19407 {
19408 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
19409 {
19410 transform_fromhost_VkPastPresentationTimingGOOGLE(mImpl->resources(), (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
19411 }
19412 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019413 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
19414 stream->read(&vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019415 countingStream->clearPool();
19416 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019417 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019418 mImpl->log("finish vkGetPastPresentationTimingGOOGLE");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019419 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
19420}
19421
19422#endif
19423#ifdef VK_NV_sample_mask_override_coverage
19424#endif
19425#ifdef VK_NV_geometry_shader_passthrough
19426#endif
19427#ifdef VK_NV_viewport_array2
19428#endif
19429#ifdef VK_NVX_multiview_per_view_attributes
19430#endif
19431#ifdef VK_NV_viewport_swizzle
19432#endif
19433#ifdef VK_EXT_discard_rectangles
19434void VkEncoder::vkCmdSetDiscardRectangleEXT(
19435 VkCommandBuffer commandBuffer,
19436 uint32_t firstDiscardRectangle,
19437 uint32_t discardRectangleCount,
19438 const VkRect2D* pDiscardRectangles)
19439{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019440 mImpl->log("start vkCmdSetDiscardRectangleEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019441 auto stream = mImpl->stream();
19442 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019443 auto resources = mImpl->resources();
19444 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019445 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019446 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019447 uint32_t local_firstDiscardRectangle;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019448 uint32_t local_discardRectangleCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019449 VkRect2D* local_pDiscardRectangles;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019450 local_commandBuffer = commandBuffer;
19451 local_firstDiscardRectangle = firstDiscardRectangle;
19452 local_discardRectangleCount = discardRectangleCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019453 local_pDiscardRectangles = nullptr;
19454 if (pDiscardRectangles)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019455 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019456 local_pDiscardRectangles = (VkRect2D*)pool->alloc(((discardRectangleCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019457 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
19458 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019459 deepcopy_VkRect2D(pool, pDiscardRectangles + i, (VkRect2D*)(local_pDiscardRectangles + i));
19460 }
19461 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019462 if (local_pDiscardRectangles)
19463 {
19464 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
19465 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019466 transform_tohost_VkRect2D(mImpl->resources(), (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019467 }
19468 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019469 countingStream->rewind();
19470 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019471 uint64_t cgen_var_1362;
19472 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1362, 1);
19473 countingStream->write((uint64_t*)&cgen_var_1362, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019474 countingStream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
19475 countingStream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
19476 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
19477 {
19478 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019479 }
19480 }
19481 uint32_t packetSize_vkCmdSetDiscardRectangleEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19482 countingStream->rewind();
19483 uint32_t opcode_vkCmdSetDiscardRectangleEXT = OP_vkCmdSetDiscardRectangleEXT;
19484 stream->write(&opcode_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
19485 stream->write(&packetSize_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019486 uint64_t cgen_var_1363;
19487 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1363, 1);
19488 stream->write((uint64_t*)&cgen_var_1363, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019489 stream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
19490 stream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019491 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
19492 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019493 marshal_VkRect2D(stream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019494 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019495 mImpl->log("finish vkCmdSetDiscardRectangleEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019496}
19497
19498#endif
19499#ifdef VK_EXT_conservative_rasterization
19500#endif
19501#ifdef VK_EXT_swapchain_colorspace
19502#endif
19503#ifdef VK_EXT_hdr_metadata
19504void VkEncoder::vkSetHdrMetadataEXT(
19505 VkDevice device,
19506 uint32_t swapchainCount,
19507 const VkSwapchainKHR* pSwapchains,
19508 const VkHdrMetadataEXT* pMetadata)
19509{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019510 mImpl->log("start vkSetHdrMetadataEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019511 auto stream = mImpl->stream();
19512 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019513 auto resources = mImpl->resources();
19514 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019515 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019516 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019517 uint32_t local_swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019518 VkSwapchainKHR* local_pSwapchains;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019519 VkHdrMetadataEXT* local_pMetadata;
19520 local_device = device;
19521 local_swapchainCount = swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019522 local_pSwapchains = nullptr;
19523 if (pSwapchains)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019524 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019525 local_pSwapchains = (VkSwapchainKHR*)pool->dupArray(pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
19526 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019527 local_pMetadata = nullptr;
19528 if (pMetadata)
19529 {
19530 local_pMetadata = (VkHdrMetadataEXT*)pool->alloc(((swapchainCount)) * sizeof(const VkHdrMetadataEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019531 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
19532 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019533 deepcopy_VkHdrMetadataEXT(pool, pMetadata + i, (VkHdrMetadataEXT*)(local_pMetadata + i));
19534 }
19535 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019536 if (local_pMetadata)
19537 {
19538 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
19539 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019540 transform_tohost_VkHdrMetadataEXT(mImpl->resources(), (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019541 }
19542 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019543 countingStream->rewind();
19544 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019545 uint64_t cgen_var_1364;
19546 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1364, 1);
19547 countingStream->write((uint64_t*)&cgen_var_1364, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019548 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019549 if (((swapchainCount)))
19550 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019551 uint64_t* cgen_var_1365;
19552 countingStream->alloc((void**)&cgen_var_1365, ((swapchainCount)) * 8);
19553 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1365, ((swapchainCount)));
19554 countingStream->write((uint64_t*)cgen_var_1365, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080019555 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019556 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
19557 {
19558 marshal_VkHdrMetadataEXT(countingStream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019559 }
19560 }
19561 uint32_t packetSize_vkSetHdrMetadataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19562 countingStream->rewind();
19563 uint32_t opcode_vkSetHdrMetadataEXT = OP_vkSetHdrMetadataEXT;
19564 stream->write(&opcode_vkSetHdrMetadataEXT, sizeof(uint32_t));
19565 stream->write(&packetSize_vkSetHdrMetadataEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019566 uint64_t cgen_var_1366;
19567 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1366, 1);
19568 stream->write((uint64_t*)&cgen_var_1366, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019569 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019570 if (((swapchainCount)))
19571 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019572 uint64_t* cgen_var_1367;
19573 stream->alloc((void**)&cgen_var_1367, ((swapchainCount)) * 8);
19574 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1367, ((swapchainCount)));
19575 stream->write((uint64_t*)cgen_var_1367, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080019576 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019577 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
19578 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019579 marshal_VkHdrMetadataEXT(stream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019580 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019581 mImpl->log("finish vkSetHdrMetadataEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019582}
19583
19584#endif
19585#ifdef VK_MVK_ios_surface
19586VkResult VkEncoder::vkCreateIOSSurfaceMVK(
19587 VkInstance instance,
19588 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
19589 const VkAllocationCallbacks* pAllocator,
19590 VkSurfaceKHR* pSurface)
19591{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019592 mImpl->log("start vkCreateIOSSurfaceMVK");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019593 auto stream = mImpl->stream();
19594 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019595 auto resources = mImpl->resources();
19596 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019597 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019598 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019599 VkIOSSurfaceCreateInfoMVK* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019600 VkAllocationCallbacks* local_pAllocator;
19601 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019602 local_pCreateInfo = nullptr;
19603 if (pCreateInfo)
19604 {
19605 local_pCreateInfo = (VkIOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkIOSSurfaceCreateInfoMVK));
19606 deepcopy_VkIOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
19607 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019608 local_pAllocator = nullptr;
19609 if (pAllocator)
19610 {
19611 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19612 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19613 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019614 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019615 if (local_pCreateInfo)
19616 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019617 transform_tohost_VkIOSSurfaceCreateInfoMVK(mImpl->resources(), (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019618 }
19619 if (local_pAllocator)
19620 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019621 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019622 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019623 countingStream->rewind();
19624 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019625 uint64_t cgen_var_1368;
19626 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1368, 1);
19627 countingStream->write((uint64_t*)&cgen_var_1368, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019628 marshal_VkIOSSurfaceCreateInfoMVK(countingStream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019629 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019630 uint64_t cgen_var_1369 = (uint64_t)(uintptr_t)local_pAllocator;
19631 countingStream->putBe64(cgen_var_1369);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019632 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019633 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019634 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019635 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019636 uint64_t cgen_var_1370;
19637 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1370, 1);
19638 countingStream->write((uint64_t*)&cgen_var_1370, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019639 }
19640 uint32_t packetSize_vkCreateIOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19641 countingStream->rewind();
19642 uint32_t opcode_vkCreateIOSSurfaceMVK = OP_vkCreateIOSSurfaceMVK;
19643 stream->write(&opcode_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
19644 stream->write(&packetSize_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019645 uint64_t cgen_var_1371;
19646 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1371, 1);
19647 stream->write((uint64_t*)&cgen_var_1371, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019648 marshal_VkIOSSurfaceCreateInfoMVK(stream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019649 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019650 uint64_t cgen_var_1372 = (uint64_t)(uintptr_t)local_pAllocator;
19651 stream->putBe64(cgen_var_1372);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019652 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019653 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019654 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019655 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019656 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019657 uint64_t cgen_var_1373;
19658 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1373, 1);
19659 stream->write((uint64_t*)&cgen_var_1373, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019660 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019661 uint64_t cgen_var_1374;
19662 stream->read((uint64_t*)&cgen_var_1374, 8);
19663 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1374, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019664 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
19665 stream->read(&vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019666 countingStream->clearPool();
19667 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019668 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019669 mImpl->log("finish vkCreateIOSSurfaceMVK");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019670 return vkCreateIOSSurfaceMVK_VkResult_return;
19671}
19672
19673#endif
19674#ifdef VK_MVK_macos_surface
19675VkResult VkEncoder::vkCreateMacOSSurfaceMVK(
19676 VkInstance instance,
19677 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
19678 const VkAllocationCallbacks* pAllocator,
19679 VkSurfaceKHR* pSurface)
19680{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019681 mImpl->log("start vkCreateMacOSSurfaceMVK");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019682 auto stream = mImpl->stream();
19683 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019684 auto resources = mImpl->resources();
19685 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019686 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019687 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019688 VkMacOSSurfaceCreateInfoMVK* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019689 VkAllocationCallbacks* local_pAllocator;
19690 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019691 local_pCreateInfo = nullptr;
19692 if (pCreateInfo)
19693 {
19694 local_pCreateInfo = (VkMacOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkMacOSSurfaceCreateInfoMVK));
19695 deepcopy_VkMacOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
19696 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019697 local_pAllocator = nullptr;
19698 if (pAllocator)
19699 {
19700 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19701 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19702 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019703 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019704 if (local_pCreateInfo)
19705 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019706 transform_tohost_VkMacOSSurfaceCreateInfoMVK(mImpl->resources(), (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019707 }
19708 if (local_pAllocator)
19709 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019710 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019711 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019712 countingStream->rewind();
19713 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019714 uint64_t cgen_var_1375;
19715 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1375, 1);
19716 countingStream->write((uint64_t*)&cgen_var_1375, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019717 marshal_VkMacOSSurfaceCreateInfoMVK(countingStream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019718 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019719 uint64_t cgen_var_1376 = (uint64_t)(uintptr_t)local_pAllocator;
19720 countingStream->putBe64(cgen_var_1376);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019721 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019722 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019723 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019724 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019725 uint64_t cgen_var_1377;
19726 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1377, 1);
19727 countingStream->write((uint64_t*)&cgen_var_1377, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019728 }
19729 uint32_t packetSize_vkCreateMacOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19730 countingStream->rewind();
19731 uint32_t opcode_vkCreateMacOSSurfaceMVK = OP_vkCreateMacOSSurfaceMVK;
19732 stream->write(&opcode_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
19733 stream->write(&packetSize_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019734 uint64_t cgen_var_1378;
19735 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1378, 1);
19736 stream->write((uint64_t*)&cgen_var_1378, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019737 marshal_VkMacOSSurfaceCreateInfoMVK(stream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019738 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019739 uint64_t cgen_var_1379 = (uint64_t)(uintptr_t)local_pAllocator;
19740 stream->putBe64(cgen_var_1379);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019741 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019742 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019743 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019744 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019745 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019746 uint64_t cgen_var_1380;
19747 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1380, 1);
19748 stream->write((uint64_t*)&cgen_var_1380, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019749 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019750 uint64_t cgen_var_1381;
19751 stream->read((uint64_t*)&cgen_var_1381, 8);
19752 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1381, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019753 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
19754 stream->read(&vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019755 countingStream->clearPool();
19756 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019757 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019758 mImpl->log("finish vkCreateMacOSSurfaceMVK");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019759 return vkCreateMacOSSurfaceMVK_VkResult_return;
19760}
19761
19762#endif
19763#ifdef VK_EXT_external_memory_dma_buf
19764#endif
19765#ifdef VK_EXT_queue_family_foreign
19766#endif
19767#ifdef VK_EXT_debug_utils
19768VkResult VkEncoder::vkSetDebugUtilsObjectNameEXT(
19769 VkDevice device,
19770 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
19771{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019772 mImpl->log("start vkSetDebugUtilsObjectNameEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019773 auto stream = mImpl->stream();
19774 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019775 auto resources = mImpl->resources();
19776 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019777 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019778 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019779 VkDebugUtilsObjectNameInfoEXT* local_pNameInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019780 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019781 local_pNameInfo = nullptr;
19782 if (pNameInfo)
19783 {
19784 local_pNameInfo = (VkDebugUtilsObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectNameInfoEXT));
19785 deepcopy_VkDebugUtilsObjectNameInfoEXT(pool, pNameInfo, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
19786 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019787 if (local_pNameInfo)
19788 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019789 transform_tohost_VkDebugUtilsObjectNameInfoEXT(mImpl->resources(), (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019790 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019791 countingStream->rewind();
19792 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019793 uint64_t cgen_var_1382;
19794 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1382, 1);
19795 countingStream->write((uint64_t*)&cgen_var_1382, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019796 marshal_VkDebugUtilsObjectNameInfoEXT(countingStream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019797 }
19798 uint32_t packetSize_vkSetDebugUtilsObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19799 countingStream->rewind();
19800 uint32_t opcode_vkSetDebugUtilsObjectNameEXT = OP_vkSetDebugUtilsObjectNameEXT;
19801 stream->write(&opcode_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
19802 stream->write(&packetSize_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019803 uint64_t cgen_var_1383;
19804 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1383, 1);
19805 stream->write((uint64_t*)&cgen_var_1383, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019806 marshal_VkDebugUtilsObjectNameInfoEXT(stream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019807 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
19808 stream->read(&vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019809 countingStream->clearPool();
19810 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019811 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019812 mImpl->log("finish vkSetDebugUtilsObjectNameEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019813 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
19814}
19815
19816VkResult VkEncoder::vkSetDebugUtilsObjectTagEXT(
19817 VkDevice device,
19818 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
19819{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019820 mImpl->log("start vkSetDebugUtilsObjectTagEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019821 auto stream = mImpl->stream();
19822 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019823 auto resources = mImpl->resources();
19824 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019825 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019826 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019827 VkDebugUtilsObjectTagInfoEXT* local_pTagInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019828 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019829 local_pTagInfo = nullptr;
19830 if (pTagInfo)
19831 {
19832 local_pTagInfo = (VkDebugUtilsObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectTagInfoEXT));
19833 deepcopy_VkDebugUtilsObjectTagInfoEXT(pool, pTagInfo, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
19834 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019835 if (local_pTagInfo)
19836 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019837 transform_tohost_VkDebugUtilsObjectTagInfoEXT(mImpl->resources(), (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019838 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019839 countingStream->rewind();
19840 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019841 uint64_t cgen_var_1384;
19842 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1384, 1);
19843 countingStream->write((uint64_t*)&cgen_var_1384, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019844 marshal_VkDebugUtilsObjectTagInfoEXT(countingStream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019845 }
19846 uint32_t packetSize_vkSetDebugUtilsObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19847 countingStream->rewind();
19848 uint32_t opcode_vkSetDebugUtilsObjectTagEXT = OP_vkSetDebugUtilsObjectTagEXT;
19849 stream->write(&opcode_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
19850 stream->write(&packetSize_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019851 uint64_t cgen_var_1385;
19852 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1385, 1);
19853 stream->write((uint64_t*)&cgen_var_1385, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019854 marshal_VkDebugUtilsObjectTagInfoEXT(stream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019855 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
19856 stream->read(&vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019857 countingStream->clearPool();
19858 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019859 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019860 mImpl->log("finish vkSetDebugUtilsObjectTagEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019861 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
19862}
19863
19864void VkEncoder::vkQueueBeginDebugUtilsLabelEXT(
19865 VkQueue queue,
19866 const VkDebugUtilsLabelEXT* pLabelInfo)
19867{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019868 mImpl->log("start vkQueueBeginDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019869 auto stream = mImpl->stream();
19870 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019871 auto resources = mImpl->resources();
19872 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019873 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019874 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019875 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019876 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019877 local_pLabelInfo = nullptr;
19878 if (pLabelInfo)
19879 {
19880 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
19881 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
19882 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019883 if (local_pLabelInfo)
19884 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019885 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019886 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019887 countingStream->rewind();
19888 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019889 uint64_t cgen_var_1386;
19890 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1386, 1);
19891 countingStream->write((uint64_t*)&cgen_var_1386, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019892 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019893 }
19894 uint32_t packetSize_vkQueueBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19895 countingStream->rewind();
19896 uint32_t opcode_vkQueueBeginDebugUtilsLabelEXT = OP_vkQueueBeginDebugUtilsLabelEXT;
19897 stream->write(&opcode_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
19898 stream->write(&packetSize_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019899 uint64_t cgen_var_1387;
19900 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1387, 1);
19901 stream->write((uint64_t*)&cgen_var_1387, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019902 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019903 mImpl->log("finish vkQueueBeginDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019904}
19905
19906void VkEncoder::vkQueueEndDebugUtilsLabelEXT(
19907 VkQueue queue)
19908{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019909 mImpl->log("start vkQueueEndDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019910 auto stream = mImpl->stream();
19911 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019912 auto resources = mImpl->resources();
19913 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019914 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019915 VkQueue local_queue;
19916 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019917 countingStream->rewind();
19918 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019919 uint64_t cgen_var_1388;
19920 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1388, 1);
19921 countingStream->write((uint64_t*)&cgen_var_1388, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019922 }
19923 uint32_t packetSize_vkQueueEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19924 countingStream->rewind();
19925 uint32_t opcode_vkQueueEndDebugUtilsLabelEXT = OP_vkQueueEndDebugUtilsLabelEXT;
19926 stream->write(&opcode_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
19927 stream->write(&packetSize_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019928 uint64_t cgen_var_1389;
19929 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1389, 1);
19930 stream->write((uint64_t*)&cgen_var_1389, 1 * 8);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019931 mImpl->log("finish vkQueueEndDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019932}
19933
19934void VkEncoder::vkQueueInsertDebugUtilsLabelEXT(
19935 VkQueue queue,
19936 const VkDebugUtilsLabelEXT* pLabelInfo)
19937{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019938 mImpl->log("start vkQueueInsertDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019939 auto stream = mImpl->stream();
19940 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019941 auto resources = mImpl->resources();
19942 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019943 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019944 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019945 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019946 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019947 local_pLabelInfo = nullptr;
19948 if (pLabelInfo)
19949 {
19950 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
19951 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
19952 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019953 if (local_pLabelInfo)
19954 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019955 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019956 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019957 countingStream->rewind();
19958 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019959 uint64_t cgen_var_1390;
19960 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1390, 1);
19961 countingStream->write((uint64_t*)&cgen_var_1390, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019962 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019963 }
19964 uint32_t packetSize_vkQueueInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19965 countingStream->rewind();
19966 uint32_t opcode_vkQueueInsertDebugUtilsLabelEXT = OP_vkQueueInsertDebugUtilsLabelEXT;
19967 stream->write(&opcode_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
19968 stream->write(&packetSize_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019969 uint64_t cgen_var_1391;
19970 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1391, 1);
19971 stream->write((uint64_t*)&cgen_var_1391, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019972 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019973 mImpl->log("finish vkQueueInsertDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019974}
19975
19976void VkEncoder::vkCmdBeginDebugUtilsLabelEXT(
19977 VkCommandBuffer commandBuffer,
19978 const VkDebugUtilsLabelEXT* pLabelInfo)
19979{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019980 mImpl->log("start vkCmdBeginDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019981 auto stream = mImpl->stream();
19982 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019983 auto resources = mImpl->resources();
19984 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019985 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019986 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019987 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019988 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019989 local_pLabelInfo = nullptr;
19990 if (pLabelInfo)
19991 {
19992 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
19993 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
19994 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019995 if (local_pLabelInfo)
19996 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019997 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019998 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019999 countingStream->rewind();
20000 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020001 uint64_t cgen_var_1392;
20002 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1392, 1);
20003 countingStream->write((uint64_t*)&cgen_var_1392, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020004 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020005 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020006 uint32_t packetSize_vkCmdBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20007 countingStream->rewind();
20008 uint32_t opcode_vkCmdBeginDebugUtilsLabelEXT = OP_vkCmdBeginDebugUtilsLabelEXT;
20009 stream->write(&opcode_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
20010 stream->write(&packetSize_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020011 uint64_t cgen_var_1393;
20012 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1393, 1);
20013 stream->write((uint64_t*)&cgen_var_1393, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020014 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020015 mImpl->log("finish vkCmdBeginDebugUtilsLabelEXT");;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020016}
20017
20018void VkEncoder::vkCmdEndDebugUtilsLabelEXT(
20019 VkCommandBuffer commandBuffer)
20020{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020021 mImpl->log("start vkCmdEndDebugUtilsLabelEXT");
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020022 auto stream = mImpl->stream();
20023 auto countingStream = mImpl->countingStream();
20024 auto resources = mImpl->resources();
20025 auto pool = mImpl->pool();
20026 stream->setHandleMapping(resources->unwrapMapping());
20027 VkCommandBuffer local_commandBuffer;
20028 local_commandBuffer = commandBuffer;
20029 countingStream->rewind();
20030 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020031 uint64_t cgen_var_1394;
20032 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1394, 1);
20033 countingStream->write((uint64_t*)&cgen_var_1394, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020034 }
20035 uint32_t packetSize_vkCmdEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20036 countingStream->rewind();
20037 uint32_t opcode_vkCmdEndDebugUtilsLabelEXT = OP_vkCmdEndDebugUtilsLabelEXT;
20038 stream->write(&opcode_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
20039 stream->write(&packetSize_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020040 uint64_t cgen_var_1395;
20041 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1395, 1);
20042 stream->write((uint64_t*)&cgen_var_1395, 1 * 8);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020043 mImpl->log("finish vkCmdEndDebugUtilsLabelEXT");;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020044}
20045
20046void VkEncoder::vkCmdInsertDebugUtilsLabelEXT(
20047 VkCommandBuffer commandBuffer,
20048 const VkDebugUtilsLabelEXT* pLabelInfo)
20049{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020050 mImpl->log("start vkCmdInsertDebugUtilsLabelEXT");
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020051 auto stream = mImpl->stream();
20052 auto countingStream = mImpl->countingStream();
20053 auto resources = mImpl->resources();
20054 auto pool = mImpl->pool();
20055 stream->setHandleMapping(resources->unwrapMapping());
20056 VkCommandBuffer local_commandBuffer;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020057 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020058 local_commandBuffer = commandBuffer;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020059 local_pLabelInfo = nullptr;
20060 if (pLabelInfo)
20061 {
20062 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
20063 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20064 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020065 if (local_pLabelInfo)
20066 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020067 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020068 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020069 countingStream->rewind();
20070 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020071 uint64_t cgen_var_1396;
20072 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1396, 1);
20073 countingStream->write((uint64_t*)&cgen_var_1396, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020074 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20075 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020076 uint32_t packetSize_vkCmdInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20077 countingStream->rewind();
20078 uint32_t opcode_vkCmdInsertDebugUtilsLabelEXT = OP_vkCmdInsertDebugUtilsLabelEXT;
20079 stream->write(&opcode_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
20080 stream->write(&packetSize_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020081 uint64_t cgen_var_1397;
20082 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1397, 1);
20083 stream->write((uint64_t*)&cgen_var_1397, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020084 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020085 mImpl->log("finish vkCmdInsertDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020086}
20087
20088VkResult VkEncoder::vkCreateDebugUtilsMessengerEXT(
20089 VkInstance instance,
20090 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
20091 const VkAllocationCallbacks* pAllocator,
20092 VkDebugUtilsMessengerEXT* pMessenger)
20093{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020094 mImpl->log("start vkCreateDebugUtilsMessengerEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020095 auto stream = mImpl->stream();
20096 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020097 auto resources = mImpl->resources();
20098 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020099 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020100 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020101 VkDebugUtilsMessengerCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020102 VkAllocationCallbacks* local_pAllocator;
20103 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020104 local_pCreateInfo = nullptr;
20105 if (pCreateInfo)
20106 {
20107 local_pCreateInfo = (VkDebugUtilsMessengerCreateInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCreateInfoEXT));
20108 deepcopy_VkDebugUtilsMessengerCreateInfoEXT(pool, pCreateInfo, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
20109 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020110 local_pAllocator = nullptr;
20111 if (pAllocator)
20112 {
20113 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20114 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20115 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020116 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080020117 if (local_pCreateInfo)
20118 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020119 transform_tohost_VkDebugUtilsMessengerCreateInfoEXT(mImpl->resources(), (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020120 }
20121 if (local_pAllocator)
20122 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020123 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020124 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020125 countingStream->rewind();
20126 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020127 uint64_t cgen_var_1398;
20128 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1398, 1);
20129 countingStream->write((uint64_t*)&cgen_var_1398, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020130 marshal_VkDebugUtilsMessengerCreateInfoEXT(countingStream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020131 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020132 uint64_t cgen_var_1399 = (uint64_t)(uintptr_t)local_pAllocator;
20133 countingStream->putBe64(cgen_var_1399);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020134 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020135 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020136 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020137 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020138 uint64_t cgen_var_1400;
20139 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1400, 1);
20140 countingStream->write((uint64_t*)&cgen_var_1400, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020141 }
20142 uint32_t packetSize_vkCreateDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20143 countingStream->rewind();
20144 uint32_t opcode_vkCreateDebugUtilsMessengerEXT = OP_vkCreateDebugUtilsMessengerEXT;
20145 stream->write(&opcode_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
20146 stream->write(&packetSize_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020147 uint64_t cgen_var_1401;
20148 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1401, 1);
20149 stream->write((uint64_t*)&cgen_var_1401, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020150 marshal_VkDebugUtilsMessengerCreateInfoEXT(stream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020151 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020152 uint64_t cgen_var_1402 = (uint64_t)(uintptr_t)local_pAllocator;
20153 stream->putBe64(cgen_var_1402);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020154 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020155 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020156 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020157 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080020158 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020159 uint64_t cgen_var_1403;
20160 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1403, 1);
20161 stream->write((uint64_t*)&cgen_var_1403, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020162 stream->setHandleMapping(resources->unwrapMapping());
20163 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020164 uint64_t cgen_var_1404;
20165 stream->read((uint64_t*)&cgen_var_1404, 8);
20166 stream->handleMapping()->mapHandles_u64_VkDebugUtilsMessengerEXT(&cgen_var_1404, (VkDebugUtilsMessengerEXT*)pMessenger, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020167 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020168 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
20169 stream->read(&vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020170 countingStream->clearPool();
20171 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020172 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020173 mImpl->log("finish vkCreateDebugUtilsMessengerEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020174 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
20175}
20176
20177void VkEncoder::vkDestroyDebugUtilsMessengerEXT(
20178 VkInstance instance,
20179 VkDebugUtilsMessengerEXT messenger,
20180 const VkAllocationCallbacks* pAllocator)
20181{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020182 mImpl->log("start vkDestroyDebugUtilsMessengerEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020183 auto stream = mImpl->stream();
20184 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020185 auto resources = mImpl->resources();
20186 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020187 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020188 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020189 VkDebugUtilsMessengerEXT local_messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020190 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020191 local_instance = instance;
20192 local_messenger = messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020193 local_pAllocator = nullptr;
20194 if (pAllocator)
20195 {
20196 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20197 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20198 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020199 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080020200 if (local_pAllocator)
20201 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020202 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020203 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020204 countingStream->rewind();
20205 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020206 uint64_t cgen_var_1405;
20207 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1405, 1);
20208 countingStream->write((uint64_t*)&cgen_var_1405, 1 * 8);
20209 uint64_t cgen_var_1406;
20210 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1406, 1);
20211 countingStream->write((uint64_t*)&cgen_var_1406, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020212 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020213 uint64_t cgen_var_1407 = (uint64_t)(uintptr_t)local_pAllocator;
20214 countingStream->putBe64(cgen_var_1407);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020215 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020216 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020217 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020218 }
20219 }
20220 uint32_t packetSize_vkDestroyDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20221 countingStream->rewind();
20222 uint32_t opcode_vkDestroyDebugUtilsMessengerEXT = OP_vkDestroyDebugUtilsMessengerEXT;
20223 stream->write(&opcode_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
20224 stream->write(&packetSize_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020225 uint64_t cgen_var_1408;
20226 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1408, 1);
20227 stream->write((uint64_t*)&cgen_var_1408, 1 * 8);
20228 uint64_t cgen_var_1409;
20229 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1409, 1);
20230 stream->write((uint64_t*)&cgen_var_1409, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020231 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020232 uint64_t cgen_var_1410 = (uint64_t)(uintptr_t)local_pAllocator;
20233 stream->putBe64(cgen_var_1410);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020234 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020235 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020236 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020237 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020238 resources->destroyMapping()->mapHandles_VkDebugUtilsMessengerEXT((VkDebugUtilsMessengerEXT*)&messenger);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020239 mImpl->log("finish vkDestroyDebugUtilsMessengerEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020240}
20241
20242void VkEncoder::vkSubmitDebugUtilsMessageEXT(
20243 VkInstance instance,
20244 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
20245 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
20246 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
20247{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020248 mImpl->log("start vkSubmitDebugUtilsMessageEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020249 auto stream = mImpl->stream();
20250 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020251 auto resources = mImpl->resources();
20252 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020253 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020254 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020255 VkDebugUtilsMessageSeverityFlagBitsEXT local_messageSeverity;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020256 VkDebugUtilsMessageTypeFlagsEXT local_messageTypes;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020257 VkDebugUtilsMessengerCallbackDataEXT* local_pCallbackData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020258 local_instance = instance;
20259 local_messageSeverity = messageSeverity;
20260 local_messageTypes = messageTypes;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020261 local_pCallbackData = nullptr;
20262 if (pCallbackData)
20263 {
20264 local_pCallbackData = (VkDebugUtilsMessengerCallbackDataEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCallbackDataEXT));
20265 deepcopy_VkDebugUtilsMessengerCallbackDataEXT(pool, pCallbackData, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
20266 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020267 if (local_pCallbackData)
20268 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020269 transform_tohost_VkDebugUtilsMessengerCallbackDataEXT(mImpl->resources(), (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020270 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020271 countingStream->rewind();
20272 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020273 uint64_t cgen_var_1411;
20274 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1411, 1);
20275 countingStream->write((uint64_t*)&cgen_var_1411, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020276 countingStream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
20277 countingStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
20278 marshal_VkDebugUtilsMessengerCallbackDataEXT(countingStream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020279 }
20280 uint32_t packetSize_vkSubmitDebugUtilsMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20281 countingStream->rewind();
20282 uint32_t opcode_vkSubmitDebugUtilsMessageEXT = OP_vkSubmitDebugUtilsMessageEXT;
20283 stream->write(&opcode_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
20284 stream->write(&packetSize_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020285 uint64_t cgen_var_1412;
20286 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1412, 1);
20287 stream->write((uint64_t*)&cgen_var_1412, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020288 stream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
20289 stream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
20290 marshal_VkDebugUtilsMessengerCallbackDataEXT(stream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020291 mImpl->log("finish vkSubmitDebugUtilsMessageEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020292}
20293
20294#endif
20295#ifdef VK_ANDROID_external_memory_android_hardware_buffer
20296VkResult VkEncoder::vkGetAndroidHardwareBufferPropertiesANDROID(
20297 VkDevice device,
20298 const AHardwareBuffer* buffer,
20299 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
20300{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020301 mImpl->log("start vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020302 auto stream = mImpl->stream();
20303 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020304 auto resources = mImpl->resources();
20305 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020306 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020307 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020308 AHardwareBuffer* local_buffer;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020309 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020310 local_buffer = nullptr;
20311 if (buffer)
20312 {
20313 local_buffer = (AHardwareBuffer*)pool->dupArray(buffer, sizeof(const AHardwareBuffer));
20314 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020315 countingStream->rewind();
20316 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020317 uint64_t cgen_var_1413;
20318 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1413, 1);
20319 countingStream->write((uint64_t*)&cgen_var_1413, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020320 countingStream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020321 marshal_VkAndroidHardwareBufferPropertiesANDROID(countingStream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
20322 }
20323 uint32_t packetSize_vkGetAndroidHardwareBufferPropertiesANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20324 countingStream->rewind();
20325 uint32_t opcode_vkGetAndroidHardwareBufferPropertiesANDROID = OP_vkGetAndroidHardwareBufferPropertiesANDROID;
20326 stream->write(&opcode_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
20327 stream->write(&packetSize_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020328 uint64_t cgen_var_1414;
20329 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1414, 1);
20330 stream->write((uint64_t*)&cgen_var_1414, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020331 stream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020332 marshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
20333 unmarshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080020334 if (pProperties)
20335 {
20336 transform_fromhost_VkAndroidHardwareBufferPropertiesANDROID(mImpl->resources(), (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
20337 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020338 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
20339 stream->read(&vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020340 countingStream->clearPool();
20341 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020342 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020343 mImpl->log("finish vkGetAndroidHardwareBufferPropertiesANDROID");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020344 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
20345}
20346
20347VkResult VkEncoder::vkGetMemoryAndroidHardwareBufferANDROID(
20348 VkDevice device,
20349 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
20350 AHardwareBuffer** pBuffer)
20351{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020352 mImpl->log("start vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020353 auto stream = mImpl->stream();
20354 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020355 auto resources = mImpl->resources();
20356 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020357 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020358 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020359 VkMemoryGetAndroidHardwareBufferInfoANDROID* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020360 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020361 local_pInfo = nullptr;
20362 if (pInfo)
20363 {
20364 local_pInfo = (VkMemoryGetAndroidHardwareBufferInfoANDROID*)pool->alloc(sizeof(const VkMemoryGetAndroidHardwareBufferInfoANDROID));
20365 deepcopy_VkMemoryGetAndroidHardwareBufferInfoANDROID(pool, pInfo, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
20366 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020367 if (local_pInfo)
20368 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020369 transform_tohost_VkMemoryGetAndroidHardwareBufferInfoANDROID(mImpl->resources(), (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020370 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020371 countingStream->rewind();
20372 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020373 uint64_t cgen_var_1415;
20374 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1415, 1);
20375 countingStream->write((uint64_t*)&cgen_var_1415, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020376 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(countingStream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020377 countingStream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
20378 }
20379 uint32_t packetSize_vkGetMemoryAndroidHardwareBufferANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20380 countingStream->rewind();
20381 uint32_t opcode_vkGetMemoryAndroidHardwareBufferANDROID = OP_vkGetMemoryAndroidHardwareBufferANDROID;
20382 stream->write(&opcode_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
20383 stream->write(&packetSize_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020384 uint64_t cgen_var_1416;
20385 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1416, 1);
20386 stream->write((uint64_t*)&cgen_var_1416, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020387 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(stream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020388 stream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
20389 stream->read((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
20390 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
20391 stream->read(&vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020392 countingStream->clearPool();
20393 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020394 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020395 mImpl->log("finish vkGetMemoryAndroidHardwareBufferANDROID");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020396 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
20397}
20398
20399#endif
20400#ifdef VK_EXT_sampler_filter_minmax
20401#endif
20402#ifdef VK_AMD_gpu_shader_int16
20403#endif
20404#ifdef VK_AMD_mixed_attachment_samples
20405#endif
20406#ifdef VK_AMD_shader_fragment_mask
20407#endif
20408#ifdef VK_EXT_shader_stencil_export
20409#endif
20410#ifdef VK_EXT_sample_locations
20411void VkEncoder::vkCmdSetSampleLocationsEXT(
20412 VkCommandBuffer commandBuffer,
20413 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
20414{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020415 mImpl->log("start vkCmdSetSampleLocationsEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020416 auto stream = mImpl->stream();
20417 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020418 auto resources = mImpl->resources();
20419 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020420 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020421 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020422 VkSampleLocationsInfoEXT* local_pSampleLocationsInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020423 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020424 local_pSampleLocationsInfo = nullptr;
20425 if (pSampleLocationsInfo)
20426 {
20427 local_pSampleLocationsInfo = (VkSampleLocationsInfoEXT*)pool->alloc(sizeof(const VkSampleLocationsInfoEXT));
20428 deepcopy_VkSampleLocationsInfoEXT(pool, pSampleLocationsInfo, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
20429 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020430 if (local_pSampleLocationsInfo)
20431 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020432 transform_tohost_VkSampleLocationsInfoEXT(mImpl->resources(), (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020433 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020434 countingStream->rewind();
20435 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020436 uint64_t cgen_var_1417;
20437 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1417, 1);
20438 countingStream->write((uint64_t*)&cgen_var_1417, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020439 marshal_VkSampleLocationsInfoEXT(countingStream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020440 }
20441 uint32_t packetSize_vkCmdSetSampleLocationsEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20442 countingStream->rewind();
20443 uint32_t opcode_vkCmdSetSampleLocationsEXT = OP_vkCmdSetSampleLocationsEXT;
20444 stream->write(&opcode_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
20445 stream->write(&packetSize_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020446 uint64_t cgen_var_1418;
20447 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1418, 1);
20448 stream->write((uint64_t*)&cgen_var_1418, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020449 marshal_VkSampleLocationsInfoEXT(stream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020450 mImpl->log("finish vkCmdSetSampleLocationsEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020451}
20452
20453void VkEncoder::vkGetPhysicalDeviceMultisamplePropertiesEXT(
20454 VkPhysicalDevice physicalDevice,
20455 VkSampleCountFlagBits samples,
20456 VkMultisamplePropertiesEXT* pMultisampleProperties)
20457{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020458 mImpl->log("start vkGetPhysicalDeviceMultisamplePropertiesEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020459 auto stream = mImpl->stream();
20460 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020461 auto resources = mImpl->resources();
20462 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020463 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020464 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020465 VkSampleCountFlagBits local_samples;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020466 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020467 local_samples = samples;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020468 countingStream->rewind();
20469 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020470 uint64_t cgen_var_1419;
20471 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1419, 1);
20472 countingStream->write((uint64_t*)&cgen_var_1419, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020473 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020474 marshal_VkMultisamplePropertiesEXT(countingStream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
20475 }
20476 uint32_t packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20477 countingStream->rewind();
20478 uint32_t opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT = OP_vkGetPhysicalDeviceMultisamplePropertiesEXT;
20479 stream->write(&opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
20480 stream->write(&packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020481 uint64_t cgen_var_1420;
20482 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1420, 1);
20483 stream->write((uint64_t*)&cgen_var_1420, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020484 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020485 marshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
20486 unmarshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080020487 if (pMultisampleProperties)
20488 {
20489 transform_fromhost_VkMultisamplePropertiesEXT(mImpl->resources(), (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
20490 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020491 mImpl->log("finish vkGetPhysicalDeviceMultisamplePropertiesEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020492}
20493
20494#endif
20495#ifdef VK_EXT_blend_operation_advanced
20496#endif
20497#ifdef VK_NV_fragment_coverage_to_color
20498#endif
20499#ifdef VK_NV_framebuffer_mixed_samples
20500#endif
20501#ifdef VK_NV_fill_rectangle
20502#endif
20503#ifdef VK_EXT_post_depth_coverage
20504#endif
20505#ifdef VK_EXT_validation_cache
20506VkResult VkEncoder::vkCreateValidationCacheEXT(
20507 VkDevice device,
20508 const VkValidationCacheCreateInfoEXT* pCreateInfo,
20509 const VkAllocationCallbacks* pAllocator,
20510 VkValidationCacheEXT* pValidationCache)
20511{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020512 mImpl->log("start vkCreateValidationCacheEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020513 auto stream = mImpl->stream();
20514 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020515 auto resources = mImpl->resources();
20516 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020517 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020518 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020519 VkValidationCacheCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020520 VkAllocationCallbacks* local_pAllocator;
20521 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020522 local_pCreateInfo = nullptr;
20523 if (pCreateInfo)
20524 {
20525 local_pCreateInfo = (VkValidationCacheCreateInfoEXT*)pool->alloc(sizeof(const VkValidationCacheCreateInfoEXT));
20526 deepcopy_VkValidationCacheCreateInfoEXT(pool, pCreateInfo, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
20527 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020528 local_pAllocator = nullptr;
20529 if (pAllocator)
20530 {
20531 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20532 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20533 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020534 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080020535 if (local_pCreateInfo)
20536 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020537 transform_tohost_VkValidationCacheCreateInfoEXT(mImpl->resources(), (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020538 }
20539 if (local_pAllocator)
20540 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020541 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020542 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020543 countingStream->rewind();
20544 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020545 uint64_t cgen_var_1421;
20546 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1421, 1);
20547 countingStream->write((uint64_t*)&cgen_var_1421, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020548 marshal_VkValidationCacheCreateInfoEXT(countingStream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020549 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020550 uint64_t cgen_var_1422 = (uint64_t)(uintptr_t)local_pAllocator;
20551 countingStream->putBe64(cgen_var_1422);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020552 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020553 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020554 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020555 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020556 uint64_t cgen_var_1423;
20557 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1423, 1);
20558 countingStream->write((uint64_t*)&cgen_var_1423, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020559 }
20560 uint32_t packetSize_vkCreateValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20561 countingStream->rewind();
20562 uint32_t opcode_vkCreateValidationCacheEXT = OP_vkCreateValidationCacheEXT;
20563 stream->write(&opcode_vkCreateValidationCacheEXT, sizeof(uint32_t));
20564 stream->write(&packetSize_vkCreateValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020565 uint64_t cgen_var_1424;
20566 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1424, 1);
20567 stream->write((uint64_t*)&cgen_var_1424, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020568 marshal_VkValidationCacheCreateInfoEXT(stream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020569 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020570 uint64_t cgen_var_1425 = (uint64_t)(uintptr_t)local_pAllocator;
20571 stream->putBe64(cgen_var_1425);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020572 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020573 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020574 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020575 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080020576 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020577 uint64_t cgen_var_1426;
20578 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1426, 1);
20579 stream->write((uint64_t*)&cgen_var_1426, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020580 stream->setHandleMapping(resources->unwrapMapping());
20581 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020582 uint64_t cgen_var_1427;
20583 stream->read((uint64_t*)&cgen_var_1427, 8);
20584 stream->handleMapping()->mapHandles_u64_VkValidationCacheEXT(&cgen_var_1427, (VkValidationCacheEXT*)pValidationCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020585 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020586 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
20587 stream->read(&vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020588 countingStream->clearPool();
20589 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020590 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020591 mImpl->log("finish vkCreateValidationCacheEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020592 return vkCreateValidationCacheEXT_VkResult_return;
20593}
20594
20595void VkEncoder::vkDestroyValidationCacheEXT(
20596 VkDevice device,
20597 VkValidationCacheEXT validationCache,
20598 const VkAllocationCallbacks* pAllocator)
20599{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020600 mImpl->log("start vkDestroyValidationCacheEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020601 auto stream = mImpl->stream();
20602 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020603 auto resources = mImpl->resources();
20604 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020605 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020606 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020607 VkValidationCacheEXT local_validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020608 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020609 local_device = device;
20610 local_validationCache = validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020611 local_pAllocator = nullptr;
20612 if (pAllocator)
20613 {
20614 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20615 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20616 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020617 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080020618 if (local_pAllocator)
20619 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020620 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020621 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020622 countingStream->rewind();
20623 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020624 uint64_t cgen_var_1428;
20625 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1428, 1);
20626 countingStream->write((uint64_t*)&cgen_var_1428, 1 * 8);
20627 uint64_t cgen_var_1429;
20628 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1429, 1);
20629 countingStream->write((uint64_t*)&cgen_var_1429, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020630 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020631 uint64_t cgen_var_1430 = (uint64_t)(uintptr_t)local_pAllocator;
20632 countingStream->putBe64(cgen_var_1430);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020633 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020634 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020635 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020636 }
20637 }
20638 uint32_t packetSize_vkDestroyValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20639 countingStream->rewind();
20640 uint32_t opcode_vkDestroyValidationCacheEXT = OP_vkDestroyValidationCacheEXT;
20641 stream->write(&opcode_vkDestroyValidationCacheEXT, sizeof(uint32_t));
20642 stream->write(&packetSize_vkDestroyValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020643 uint64_t cgen_var_1431;
20644 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1431, 1);
20645 stream->write((uint64_t*)&cgen_var_1431, 1 * 8);
20646 uint64_t cgen_var_1432;
20647 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1432, 1);
20648 stream->write((uint64_t*)&cgen_var_1432, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020649 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020650 uint64_t cgen_var_1433 = (uint64_t)(uintptr_t)local_pAllocator;
20651 stream->putBe64(cgen_var_1433);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020652 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020653 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020654 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020655 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020656 resources->destroyMapping()->mapHandles_VkValidationCacheEXT((VkValidationCacheEXT*)&validationCache);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020657 mImpl->log("finish vkDestroyValidationCacheEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020658}
20659
20660VkResult VkEncoder::vkMergeValidationCachesEXT(
20661 VkDevice device,
20662 VkValidationCacheEXT dstCache,
20663 uint32_t srcCacheCount,
20664 const VkValidationCacheEXT* pSrcCaches)
20665{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020666 mImpl->log("start vkMergeValidationCachesEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020667 auto stream = mImpl->stream();
20668 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020669 auto resources = mImpl->resources();
20670 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020671 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020672 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020673 VkValidationCacheEXT local_dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020674 uint32_t local_srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020675 VkValidationCacheEXT* local_pSrcCaches;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020676 local_device = device;
20677 local_dstCache = dstCache;
20678 local_srcCacheCount = srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020679 local_pSrcCaches = nullptr;
20680 if (pSrcCaches)
20681 {
20682 local_pSrcCaches = (VkValidationCacheEXT*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
20683 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020684 countingStream->rewind();
20685 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020686 uint64_t cgen_var_1434;
20687 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1434, 1);
20688 countingStream->write((uint64_t*)&cgen_var_1434, 1 * 8);
20689 uint64_t cgen_var_1435;
20690 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1435, 1);
20691 countingStream->write((uint64_t*)&cgen_var_1435, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020692 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020693 if (((srcCacheCount)))
20694 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020695 uint64_t* cgen_var_1436;
20696 countingStream->alloc((void**)&cgen_var_1436, ((srcCacheCount)) * 8);
20697 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1436, ((srcCacheCount)));
20698 countingStream->write((uint64_t*)cgen_var_1436, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080020699 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020700 }
20701 uint32_t packetSize_vkMergeValidationCachesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20702 countingStream->rewind();
20703 uint32_t opcode_vkMergeValidationCachesEXT = OP_vkMergeValidationCachesEXT;
20704 stream->write(&opcode_vkMergeValidationCachesEXT, sizeof(uint32_t));
20705 stream->write(&packetSize_vkMergeValidationCachesEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020706 uint64_t cgen_var_1437;
20707 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1437, 1);
20708 stream->write((uint64_t*)&cgen_var_1437, 1 * 8);
20709 uint64_t cgen_var_1438;
20710 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1438, 1);
20711 stream->write((uint64_t*)&cgen_var_1438, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020712 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020713 if (((srcCacheCount)))
20714 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020715 uint64_t* cgen_var_1439;
20716 stream->alloc((void**)&cgen_var_1439, ((srcCacheCount)) * 8);
20717 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1439, ((srcCacheCount)));
20718 stream->write((uint64_t*)cgen_var_1439, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080020719 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020720 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
20721 stream->read(&vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020722 countingStream->clearPool();
20723 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020724 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020725 mImpl->log("finish vkMergeValidationCachesEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020726 return vkMergeValidationCachesEXT_VkResult_return;
20727}
20728
20729VkResult VkEncoder::vkGetValidationCacheDataEXT(
20730 VkDevice device,
20731 VkValidationCacheEXT validationCache,
20732 size_t* pDataSize,
20733 void* pData)
20734{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020735 mImpl->log("start vkGetValidationCacheDataEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020736 auto stream = mImpl->stream();
20737 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020738 auto resources = mImpl->resources();
20739 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020740 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020741 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020742 VkValidationCacheEXT local_validationCache;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020743 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020744 local_validationCache = validationCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020745 countingStream->rewind();
20746 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020747 uint64_t cgen_var_1440;
20748 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1440, 1);
20749 countingStream->write((uint64_t*)&cgen_var_1440, 1 * 8);
20750 uint64_t cgen_var_1441;
20751 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1441, 1);
20752 countingStream->write((uint64_t*)&cgen_var_1441, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020753 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020754 uint64_t cgen_var_1442 = (uint64_t)(uintptr_t)pDataSize;
20755 countingStream->putBe64(cgen_var_1442);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020756 if (pDataSize)
20757 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020758 uint64_t cgen_var_1443 = (uint64_t)(*pDataSize);
20759 countingStream->putBe64(cgen_var_1443);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020760 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020761 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020762 uint64_t cgen_var_1444 = (uint64_t)(uintptr_t)pData;
20763 countingStream->putBe64(cgen_var_1444);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020764 if (pData)
20765 {
20766 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
20767 }
20768 }
20769 uint32_t packetSize_vkGetValidationCacheDataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20770 countingStream->rewind();
20771 uint32_t opcode_vkGetValidationCacheDataEXT = OP_vkGetValidationCacheDataEXT;
20772 stream->write(&opcode_vkGetValidationCacheDataEXT, sizeof(uint32_t));
20773 stream->write(&packetSize_vkGetValidationCacheDataEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020774 uint64_t cgen_var_1445;
20775 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1445, 1);
20776 stream->write((uint64_t*)&cgen_var_1445, 1 * 8);
20777 uint64_t cgen_var_1446;
20778 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1446, 1);
20779 stream->write((uint64_t*)&cgen_var_1446, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020780 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020781 uint64_t cgen_var_1447 = (uint64_t)(uintptr_t)pDataSize;
20782 stream->putBe64(cgen_var_1447);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020783 if (pDataSize)
20784 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020785 uint64_t cgen_var_1448 = (uint64_t)(*pDataSize);
20786 stream->putBe64(cgen_var_1448);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020787 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020788 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020789 uint64_t cgen_var_1449 = (uint64_t)(uintptr_t)pData;
20790 stream->putBe64(cgen_var_1449);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020791 if (pData)
20792 {
20793 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
20794 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020795 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020796 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020797 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020798 if (pDataSize)
20799 {
20800 if (!(check_pDataSize))
20801 {
20802 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
20803 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080020804 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020805 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020806 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020807 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020808 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020809 if (pData)
20810 {
20811 if (!(check_pData))
20812 {
20813 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
20814 }
20815 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
20816 }
20817 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
20818 stream->read(&vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020819 countingStream->clearPool();
20820 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020821 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020822 mImpl->log("finish vkGetValidationCacheDataEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020823 return vkGetValidationCacheDataEXT_VkResult_return;
20824}
20825
20826#endif
20827#ifdef VK_EXT_descriptor_indexing
20828#endif
20829#ifdef VK_EXT_shader_viewport_index_layer
20830#endif
20831#ifdef VK_EXT_global_priority
20832#endif
20833#ifdef VK_EXT_external_memory_host
20834VkResult VkEncoder::vkGetMemoryHostPointerPropertiesEXT(
20835 VkDevice device,
20836 VkExternalMemoryHandleTypeFlagBits handleType,
20837 const void* pHostPointer,
20838 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
20839{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020840 mImpl->log("start vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020841 auto stream = mImpl->stream();
20842 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020843 auto resources = mImpl->resources();
20844 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020845 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020846 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020847 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020848 void* local_pHostPointer;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020849 local_device = device;
20850 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020851 local_pHostPointer = nullptr;
20852 if (pHostPointer)
20853 {
20854 local_pHostPointer = (void*)pool->dupArray(pHostPointer, sizeof(const uint8_t));
20855 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020856 countingStream->rewind();
20857 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020858 uint64_t cgen_var_1453;
20859 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1453, 1);
20860 countingStream->write((uint64_t*)&cgen_var_1453, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020861 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020862 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020863 uint64_t cgen_var_1454 = (uint64_t)(uintptr_t)local_pHostPointer;
20864 countingStream->putBe64(cgen_var_1454);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020865 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020866 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020867 countingStream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020868 }
20869 marshal_VkMemoryHostPointerPropertiesEXT(countingStream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
20870 }
20871 uint32_t packetSize_vkGetMemoryHostPointerPropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20872 countingStream->rewind();
20873 uint32_t opcode_vkGetMemoryHostPointerPropertiesEXT = OP_vkGetMemoryHostPointerPropertiesEXT;
20874 stream->write(&opcode_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
20875 stream->write(&packetSize_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020876 uint64_t cgen_var_1455;
20877 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1455, 1);
20878 stream->write((uint64_t*)&cgen_var_1455, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020879 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020880 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020881 uint64_t cgen_var_1456 = (uint64_t)(uintptr_t)local_pHostPointer;
20882 stream->putBe64(cgen_var_1456);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020883 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020884 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020885 stream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020886 }
20887 marshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
20888 unmarshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080020889 if (pMemoryHostPointerProperties)
20890 {
20891 transform_fromhost_VkMemoryHostPointerPropertiesEXT(mImpl->resources(), (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
20892 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020893 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
20894 stream->read(&vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020895 countingStream->clearPool();
20896 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020897 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020898 mImpl->log("finish vkGetMemoryHostPointerPropertiesEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020899 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
20900}
20901
20902#endif
20903#ifdef VK_AMD_buffer_marker
20904void VkEncoder::vkCmdWriteBufferMarkerAMD(
20905 VkCommandBuffer commandBuffer,
20906 VkPipelineStageFlagBits pipelineStage,
20907 VkBuffer dstBuffer,
20908 VkDeviceSize dstOffset,
20909 uint32_t marker)
20910{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020911 mImpl->log("start vkCmdWriteBufferMarkerAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020912 auto stream = mImpl->stream();
20913 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020914 auto resources = mImpl->resources();
20915 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020916 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020917 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020918 VkPipelineStageFlagBits local_pipelineStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020919 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020920 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020921 uint32_t local_marker;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020922 local_commandBuffer = commandBuffer;
20923 local_pipelineStage = pipelineStage;
20924 local_dstBuffer = dstBuffer;
20925 local_dstOffset = dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020926 local_marker = marker;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020927 countingStream->rewind();
20928 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020929 uint64_t cgen_var_1457;
20930 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1457, 1);
20931 countingStream->write((uint64_t*)&cgen_var_1457, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020932 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020933 uint64_t cgen_var_1458;
20934 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1458, 1);
20935 countingStream->write((uint64_t*)&cgen_var_1458, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020936 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
20937 countingStream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020938 }
20939 uint32_t packetSize_vkCmdWriteBufferMarkerAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20940 countingStream->rewind();
20941 uint32_t opcode_vkCmdWriteBufferMarkerAMD = OP_vkCmdWriteBufferMarkerAMD;
20942 stream->write(&opcode_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
20943 stream->write(&packetSize_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020944 uint64_t cgen_var_1459;
20945 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1459, 1);
20946 stream->write((uint64_t*)&cgen_var_1459, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020947 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020948 uint64_t cgen_var_1460;
20949 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1460, 1);
20950 stream->write((uint64_t*)&cgen_var_1460, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020951 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
20952 stream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020953 mImpl->log("finish vkCmdWriteBufferMarkerAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020954}
20955
20956#endif
20957#ifdef VK_AMD_shader_core_properties
20958#endif
20959#ifdef VK_EXT_vertex_attribute_divisor
20960#endif
20961#ifdef VK_NV_shader_subgroup_partitioned
20962#endif
20963#ifdef VK_NV_device_diagnostic_checkpoints
20964void VkEncoder::vkCmdSetCheckpointNV(
20965 VkCommandBuffer commandBuffer,
20966 const void* pCheckpointMarker)
20967{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020968 mImpl->log("start vkCmdSetCheckpointNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020969 auto stream = mImpl->stream();
20970 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020971 auto resources = mImpl->resources();
20972 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020973 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020974 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020975 void* local_pCheckpointMarker;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020976 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020977 local_pCheckpointMarker = nullptr;
20978 if (pCheckpointMarker)
20979 {
20980 local_pCheckpointMarker = (void*)pool->dupArray(pCheckpointMarker, sizeof(const uint8_t));
20981 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020982 countingStream->rewind();
20983 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020984 uint64_t cgen_var_1461;
20985 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1461, 1);
20986 countingStream->write((uint64_t*)&cgen_var_1461, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020987 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020988 uint64_t cgen_var_1462 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
20989 countingStream->putBe64(cgen_var_1462);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020990 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020991 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020992 countingStream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020993 }
20994 }
20995 uint32_t packetSize_vkCmdSetCheckpointNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20996 countingStream->rewind();
20997 uint32_t opcode_vkCmdSetCheckpointNV = OP_vkCmdSetCheckpointNV;
20998 stream->write(&opcode_vkCmdSetCheckpointNV, sizeof(uint32_t));
20999 stream->write(&packetSize_vkCmdSetCheckpointNV, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021000 uint64_t cgen_var_1463;
21001 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1463, 1);
21002 stream->write((uint64_t*)&cgen_var_1463, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021003 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021004 uint64_t cgen_var_1464 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
21005 stream->putBe64(cgen_var_1464);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021006 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021007 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021008 stream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021009 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021010 mImpl->log("finish vkCmdSetCheckpointNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021011}
21012
21013void VkEncoder::vkGetQueueCheckpointDataNV(
21014 VkQueue queue,
21015 uint32_t* pCheckpointDataCount,
21016 VkCheckpointDataNV* pCheckpointData)
21017{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021018 mImpl->log("start vkGetQueueCheckpointDataNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021019 auto stream = mImpl->stream();
21020 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021021 auto resources = mImpl->resources();
21022 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021023 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021024 VkQueue local_queue;
21025 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021026 countingStream->rewind();
21027 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021028 uint64_t cgen_var_1465;
21029 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1465, 1);
21030 countingStream->write((uint64_t*)&cgen_var_1465, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021031 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021032 uint64_t cgen_var_1466 = (uint64_t)(uintptr_t)pCheckpointDataCount;
21033 countingStream->putBe64(cgen_var_1466);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021034 if (pCheckpointDataCount)
21035 {
21036 countingStream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
21037 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021038 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021039 uint64_t cgen_var_1467 = (uint64_t)(uintptr_t)pCheckpointData;
21040 countingStream->putBe64(cgen_var_1467);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021041 if (pCheckpointData)
21042 {
21043 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
21044 {
21045 marshal_VkCheckpointDataNV(countingStream, (VkCheckpointDataNV*)(pCheckpointData + i));
21046 }
21047 }
21048 }
21049 uint32_t packetSize_vkGetQueueCheckpointDataNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21050 countingStream->rewind();
21051 uint32_t opcode_vkGetQueueCheckpointDataNV = OP_vkGetQueueCheckpointDataNV;
21052 stream->write(&opcode_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
21053 stream->write(&packetSize_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021054 uint64_t cgen_var_1468;
21055 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1468, 1);
21056 stream->write((uint64_t*)&cgen_var_1468, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021057 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021058 uint64_t cgen_var_1469 = (uint64_t)(uintptr_t)pCheckpointDataCount;
21059 stream->putBe64(cgen_var_1469);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021060 if (pCheckpointDataCount)
21061 {
21062 stream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
21063 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021064 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021065 uint64_t cgen_var_1470 = (uint64_t)(uintptr_t)pCheckpointData;
21066 stream->putBe64(cgen_var_1470);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021067 if (pCheckpointData)
21068 {
21069 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
21070 {
21071 marshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
21072 }
21073 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021074 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021075 uint32_t* check_pCheckpointDataCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021076 check_pCheckpointDataCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021077 if (pCheckpointDataCount)
21078 {
21079 if (!(check_pCheckpointDataCount))
21080 {
21081 fprintf(stderr, "fatal: pCheckpointDataCount inconsistent between guest and host\n");
21082 }
21083 stream->read((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
21084 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021085 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021086 VkCheckpointDataNV* check_pCheckpointData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021087 check_pCheckpointData = (VkCheckpointDataNV*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021088 if (pCheckpointData)
21089 {
21090 if (!(check_pCheckpointData))
21091 {
21092 fprintf(stderr, "fatal: pCheckpointData inconsistent between guest and host\n");
21093 }
21094 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
21095 {
21096 unmarshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
21097 }
21098 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080021099 if (pCheckpointData)
21100 {
21101 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
21102 {
21103 transform_fromhost_VkCheckpointDataNV(mImpl->resources(), (VkCheckpointDataNV*)(pCheckpointData + i));
21104 }
21105 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021106 mImpl->log("finish vkGetQueueCheckpointDataNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021107}
21108
21109#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021110#ifdef VK_GOOGLE_address_space
21111VkResult VkEncoder::vkMapMemoryIntoAddressSpaceGOOGLE(
21112 VkDevice device,
21113 VkDeviceMemory memory,
21114 uint64_t* pAddress)
21115{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021116 mImpl->log("start vkMapMemoryIntoAddressSpaceGOOGLE");
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021117 mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE_pre(this, VK_SUCCESS, device, memory, pAddress);
21118 auto stream = mImpl->stream();
21119 auto countingStream = mImpl->countingStream();
21120 auto resources = mImpl->resources();
21121 auto pool = mImpl->pool();
21122 stream->setHandleMapping(resources->unwrapMapping());
21123 VkDevice local_device;
21124 VkDeviceMemory local_memory;
21125 local_device = device;
21126 local_memory = memory;
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -080021127 mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021128 countingStream->rewind();
21129 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021130 uint64_t cgen_var_1473;
21131 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1473, 1);
21132 countingStream->write((uint64_t*)&cgen_var_1473, 1 * 8);
21133 uint64_t cgen_var_1474;
21134 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1474, 1);
21135 countingStream->write((uint64_t*)&cgen_var_1474, 1 * 8);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021136 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021137 uint64_t cgen_var_1475 = (uint64_t)(uintptr_t)pAddress;
21138 countingStream->putBe64(cgen_var_1475);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021139 if (pAddress)
21140 {
21141 countingStream->write((uint64_t*)pAddress, sizeof(uint64_t));
21142 }
21143 }
21144 uint32_t packetSize_vkMapMemoryIntoAddressSpaceGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21145 countingStream->rewind();
21146 uint32_t opcode_vkMapMemoryIntoAddressSpaceGOOGLE = OP_vkMapMemoryIntoAddressSpaceGOOGLE;
21147 stream->write(&opcode_vkMapMemoryIntoAddressSpaceGOOGLE, sizeof(uint32_t));
21148 stream->write(&packetSize_vkMapMemoryIntoAddressSpaceGOOGLE, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021149 uint64_t cgen_var_1476;
21150 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1476, 1);
21151 stream->write((uint64_t*)&cgen_var_1476, 1 * 8);
21152 uint64_t cgen_var_1477;
21153 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1477, 1);
21154 stream->write((uint64_t*)&cgen_var_1477, 1 * 8);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021155 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021156 uint64_t cgen_var_1478 = (uint64_t)(uintptr_t)pAddress;
21157 stream->putBe64(cgen_var_1478);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021158 if (pAddress)
21159 {
21160 stream->write((uint64_t*)pAddress, sizeof(uint64_t));
21161 }
21162 // WARNING PTR CHECK
21163 uint64_t* check_pAddress;
21164 check_pAddress = (uint64_t*)(uintptr_t)stream->getBe64();
21165 if (pAddress)
21166 {
21167 if (!(check_pAddress))
21168 {
21169 fprintf(stderr, "fatal: pAddress inconsistent between guest and host\n");
21170 }
21171 stream->read((uint64_t*)pAddress, sizeof(uint64_t));
21172 }
21173 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
21174 stream->read(&vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, sizeof(VkResult));
21175 countingStream->clearPool();
21176 stream->clearPool();
21177 pool->freeAll();
21178 mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE(this, vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, device, memory, pAddress);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021179 mImpl->log("finish vkMapMemoryIntoAddressSpaceGOOGLE");;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021180 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
21181}
21182
21183#endif
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021184
Lingfeng Yangb1d90102018-11-29 16:10:36 -080021185} // namespace goldfish_vk